Confused by the role requirement of ECS

I am trying to set up a ECS but so far I have encountered a few permission issue for which I have created some questions on this forum already.

I think I am stuck so far because honestly I cannot find out all these role requirements in one place concisely.

It seems like I need to define at least two roles:

1) ECS container http://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html

2) ECS task http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#enable_task_iam_roles

Is it correct?

Did I miss out anything? Is there any special IAM requirement?

13
задан 7 June 2017 в 14:33
3 ответа

Единственная необходимая роль - это роль IAM экземпляра контейнера . Эта роль позволяет агенту ECS (работающему на вашем инстансе EC2) взаимодействовать с Amazon ECS.

Есть пять других ролей, которые вы также можете найти полезными для различных целей:

  • Роль ECS, связанная с сервисом (SLR) - эта роль позволяет Amazon ECS управлять различными ресурсами AWS, связанными с вашим приложением, от вашего имени. При использовании службы эта роль позволяет Amazon ECS управлять балансировщиком нагрузки (классические балансировщики нагрузки, балансировщики нагрузки приложений и балансировщики сетевой нагрузки) и обнаружением служб (с Route 53 ), связанным с с вашим сервисом. При использовании сети задач эта роль позволяет Amazon ECS подключать и отсоединять эластичные сетевые интерфейсы (ENI) к вашим задачам. Эта роль требуется при использовании AWS Fargate .
  • Роль IAM планировщика сервисов - До введения роли ECS, связанной с сервисами (SLR), эта роль использовалась вместе с Служба , позволяющая Amazon ECS управлять балансировщиком нагрузки, связанным с вашей службой. Если вы хотите использовать эластичный балансировщик нагрузки (будь то классический балансировщик нагрузки, балансировщик нагрузки приложений или балансировщик сетевой нагрузки) с вашей службой ECS, вы можете использовать эту роль. Теперь, когда доступна SLR ECS, вы можете использовать любую из двух ролей, но вы все равно можете использовать эту роль, если хотите ограничить разрешения, предоставляемые Amazon ECS, для покрытия определенных ресурсов балансировщика нагрузки.
  • Auto Scaling Роль IAM - эта роль используется вместе со службой и позволяет службе автоматического масштабирования приложения масштабировать желаемое количество ваших служб в / из.
  • Задача Роль IAM - Эта роль может использоваться с любой Задачей (включая Задачи, запущенные службой ). Эта роль очень похожа на профиль экземпляра EC2 , но позволяет связывать разрешения с отдельными Задачами, а не с базовым экземпляром EC2, на котором размещены эти Задачи. Если вы запускаете несколько различных приложений в кластере ECS с разными необходимыми разрешениями, вы можете использовать роль IAM задачи для предоставления определенных разрешений для каждой задачи, вместо того, чтобы гарантировать, что каждый экземпляр EC2 в вашем кластере имеет объединенный набор разрешений, который любой приложение понадобится.
  • Роль выполнения задачи - эта роль требуется при использовании AWS Fargate и заменяет роль IAM экземпляра контейнера , которая недоступна для FARGATE тип запуска. Эта роль позволяет AWS Fargate извлекать образы контейнеров из Amazon ECR и пересылать ваши журналы в Amazon CloudWatch Logs . Эта роль также используется (для типов запуска Fargate и EC2) для включения аутентификации частного реестра и секретов из AWS Secrets Manager и хранилища параметров AWS Systems Manager .
23
ответ дан 2 December 2019 в 21:22

В дополнение к этому очень хорошему объяснению @ samuel-karp, сегодня я столкнулся с проблемой при переходе с классического ELB на ALB в сочетании с настраиваемым task_role_arn для ECS Сервисы.

Хотя я следовал инструкциям, описанным за ссылкой Роль IAM задачи , ошибка была

Невозможно принять роль и проверить указанную targetGroupArn. Убедитесь, что переданная роль службы ECS имеет необходимые разрешения.

Дело в том, что служба, похоже, регистрируется в балансировщике нагрузки. Это сработало только тогда, когда я обменял Принципала с ecs.amazonaws.com на

"Принципал": { «Сервис»: «ecs-tasks.amazonaws.com» }

1
ответ дан 2 December 2019 в 21:22

Использование моей роли администратора, при создании кластера ECS, я тоже был заблокирован... "Кластер ECS не может взять на себя роль, связанную со службой. Убедитесь, что роль, связанная со службой ECS, существует. "

И я убедился, что роль AWSServiceRoleForECS действительно существует.

Исправление? Запустив мастер «Начало работы», он (пере)настроил что-то скрытое, и теперь мои роли администратора могут принимать AWSServiceRoleForECS и успешно создавать кластер.

2
ответ дан 14 July 2021 в 16:52

Теги

Похожие вопросы