Open IAM Console - Roles - Create role.
Select trusted entity AWS service.
Select service Elastic Container Service.
Select use case Elastic Container Service Task.
Click Next.

Search and select managed policy AmazonECSTaskExecutionRolePolicy.
Click Next.

Enter role name MyfitInfraStack-TaskExecutionRole.
Enter description Allows ECS tasks to call AWS services on your behalf.
Click Create role.

Open role MyfitInfraStack-TaskExecutionRole.
Click Add permissions - Create inline policy.

In JSON editor, add permissions equivalent to your stack policy TaskExecutionRoleDefaultPolicy.
Keep at least these actions and resources:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecr:BatchCheckLayerAvailability",
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
],
"Resource": "arn:aws:ecr:us-east-1:<your-service-arn-id>:repository/myfit-backend"
},
{
"Effect": "Allow",
"Action": "ecr:GetAuthorizationToken",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:us-east-1:<your-service-arn-id>:log-group:<your-service-arn-id>:*"
},
{
"Effect": "Allow",
"Action": [
"secretsmanager:DescribeSecret",
"secretsmanager:GetSecretValue"
],
"Resource": [
"arn:aws:secretsmanager:us-east-1:<your-service-arn-id>:secret:<your-service-arn-id>",
"arn:aws:secretsmanager:us-east-1:<your-service-arn-id>:secret:<your-service-arn-id>"
]
}
]
}
TaskExecutionRoleDefaultPolicy.

MyfitInfraStack-TaskRole.TaskRoleDefaultPolicy07FC53DE.crawl.fitness and object path crawl.fitness/*.

Some permissions must be configured in the target service, not only in IAM role.
Permissions - Bucket policy - Edit.AWS:SourceArn of your distribution.{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCloudFrontServicePrincipalReadOnly",
"Effect": "Allow",
"Principal": {
"Service": "cloudfront.amazonaws.com"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<your-frontend-bucket>/*",
"Condition": {
"StringEquals": {
"AWS:SourceArn": "arn:aws:cloudfront::<your-service-arn-id>:distribution/<your-service-arn-id>"
}
}
}
]
}
myfit/bedrock-api-key.ecs-tasks.amazonaws.com.AmazonECSTaskExecutionRolePolicy is attached.crawl.fitness bucket.BEDROCK_API_KEY from Secrets Manager.