Смущен ролью требования ECS

13

Я пытаюсь настроить ECS, но до сих пор я столкнулся с несколькими проблемами с разрешениями, для которых уже создал несколько вопросов на этом форуме.

Я думаю, что застрял до сих пор, потому что, честно говоря, я не могу найти все эти требования к роли в одном месте кратко.

Кажется, мне нужно определить как минимум две роли:

1) Контейнер ECS http://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html

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

Это правильно?

Я что-то пропустил? Есть ли особые требования IAM?

Энтони Конг
источник
Непонятно, в чем проблема. Можете ли вы отредактировать свой вопрос, включив в него подробности?
EEAA

Ответы:

25

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

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

  • Связанная с сервисом роль ECS (SLR). Эта роль позволяет Amazon ECS от вашего имени управлять различными ресурсами AWS, связанными с вашим приложением. При использовании Сервиса эта роль позволяет Amazon ECS управлять балансировщиком нагрузки (классическими балансировщиками нагрузки, балансировщиками нагрузки приложений и сетевыми балансировщиками нагрузки) и обнаружением сервисов (с маршрутом 53 ), связанным с вашим сервисом. При использовании сетевых задач эта роль позволяет Amazon ECS подключать и отключать эластичные сетевые интерфейсы (ENI) к вашим задачам. Эта роль требуется при использовании AWS Fargate .
  • Роль IAM планировщика услуг. До введения связанной с сервисом роли ECS (SLR) эта роль использовалась вместе со службой, чтобы позволить Amazon ECS управлять балансировщиком нагрузки, связанным с вашей службой. Если вы хотите использовать Elastic Load Balancer (будь то Classic Load Balancer, Application Load Balancer или Network Load Balancer) с вашей службой ECS, вы можете использовать эту роль. Теперь, когда доступна ECS SLR, вы можете использовать любую из двух ролей, но вы все равно можете использовать эту роль, если хотите ограничить разрешения, предоставляемые Amazon ECS, для покрытия определенных ресурсов балансировщика нагрузки.
  • Роль автоматического масштабирования IAM - эта роль используется вместе со службой и позволяет службе автоматического масштабирования приложений увеличивать или уменьшать необходимое количество ваших служб.
  • Роль IAM задачи - эта роль может использоваться с любой задачей (включая задачи, запускаемые службой ). Эта роль очень похожа на профиль экземпляра EC2 , но позволяет связывать разрешения с отдельными Задачами, а не с базовым экземпляром EC2, на котором размещены эти Задачи. Если в вашем кластере ECS запущено несколько разных приложений с разными необходимыми разрешениями, вы можете использовать роль IAM Задачи для предоставления определенных разрешений для каждой Задачи вместо того, чтобы гарантировать, что каждый экземпляр EC2 в вашем кластере имеет объединенный набор разрешений, который любой Приложение будет необходимо.
  • Роль выполнения задачи - эта роль требуется при использовании AWS Fargate и заменяет роль IAM контейнера , которая недоступна для FARGATEтипа запуска. Эта роль позволяет AWS Fargate получать образы контейнеров из Amazon ECR и пересылать ваши журналы в журналы Amazon CloudWatch . Эта роль также используется (на обоих типах запуска Fargate и EC2) для включения аутентификации частного реестра и секретов из AWS Secrets Manager и AWS Systems Manager Store Parameter Store .
Сэмюэл Карп
источник
1

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

Хотя я следовал инструкциям, описанным в ссылке Task IAM role, ошибка была

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

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

"Principal": { "Service": "ecs-tasks.amazonaws.com" }

мана
источник