Переход ECS с EC2 на Fargate

Я пытаюсь перейти с 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

Это не работает. Любое направление действительно поможет.


person Sangam Belose    schedule 06.04.2018    source источник


Ответы (1)


Короткий ответ:

Выполните эту команду: aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com

Длинный ответ:

AWS представила роли, связанные с сервисами. Для старых учетных записей AWS или если вы никогда не создавали кластер ECS вручную в консоли, вам необходимо выполнить указанную выше команду, чтобы создать роль.

person Laurent Jalbert Simard    schedule 06.04.2018
comment
есть ли способ добиться этого с помощью cloudFormation? - person Sangam Belose; 09.04.2018
comment
Я думал об использовании CustomResource для создания / удаления роли, связанной с сервисом, однако это уникальная роль для всей учетной записи (независимо от региона). Это означает, что если вы удалите стек, в котором была создана роль, это может повлиять на другие стеки в вашей учетной записи. В AWS некоторые вещи нельзя автоматизировать, например, запрос в службу поддержки об увеличении лимита обслуживания. Предполагается, что это будет исправлено для новой учетной записи AWS, но пока я предлагаю вам просто запустить команду и задокументировать, что вы сделали. - person Laurent Jalbert Simard; 09.04.2018
comment
Спасибо за быстрый вклад. Здесь наши ребята хотят иметь полный контроль над IAM. Если вы можете обновить свой ответ ссылкой на информацию cloudFormation по этому поводу, это было бы здорово. - person Sangam Belose; 10.04.2018