Я пытаюсь перейти с Amaxon ECS EC2 на Fargate. Здесь я внес некоторые изменения в соответствии с рекомендациями https://aws.amazon.com/blogs/compute/migrating-your-amazon-ecs-containers-to-aws-fargate/. Я использую Amazon Cloudformation для создания / обновления ресурсов.
ECSTaskDefinition:
Type: AWS::ECS::TaskDefinition
Properties:
Family : !Join ["_", [!Ref "AppName", !Ref "ComponentName", !Ref "TargetEnv" ]]
NetworkMode: "awsvpc"
ExecutionRoleArn: arn:aws:iam::${AWS::AccountId}:role/ecsTaskExecutionRole
TaskRoleArn:
Fn::Sub:
[
"arn:aws:iam::${AWS::AccountId}:role/exec_dp_${TargetEnv}",
{
TargetEnv: !Ref "TargetEnv"
}
]
RequiresCompatibilities:
- "FARGATE"
Memory: "512"
Cpu: '256'
ContainerDefinitions:
Здесь проблема в том, что когда я пытаюсь создать стек, он выдает ошибку, как показано ниже:
Невозможно принять на себя роль, связанную со службой. Убедитесь, что связанная роль службы ECS существует.
Я также попытался создать роль, связанную с сервисом, примерно так:
AwsEcsTaskExecutionRole:
Type: AWS::IAM::Role
Properties:
Path: /
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
Service: ecs.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/aws-service-role/AmazonECSServiceRolePolicy
а затем указал его как ExecutionRoleArn:! GetAtt AwsEcsTaskExecutionRole.Arn
Это не работает. Любое направление действительно поможет.