Назад | Перейти на главную страницу

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

Я пытаюсь настроить 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?

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

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

  • Роль, связанная с сервисом ECS (SLR) - Эта роль позволяет Amazon ECS управлять различными ресурсами AWS, связанными с вашим приложением, от вашего имени. При использовании обслуживание, эта роль позволяет Amazon ECS управлять балансировщиком нагрузки (классические балансировщики нагрузки, балансировщики нагрузки приложений и балансировщики сетевой нагрузки) и обнаружением служб (с Маршрут 53) связанный с вашей службой. Когда используешь сеть задач, эта роль позволяет Amazon ECS подключать и отключать Эластичные сетевые интерфейсы (ENI) к вашим задачам. Эта роль требуется при использовании AWS Fargate.
  • Роль IAM планировщика служб - До введения роли, связанной с сервисом (SLR) ECS, эта роль использовалась вместе с обслуживание чтобы позволить Amazon ECS управлять балансировщиком нагрузки, связанным с вашим сервисом. Если вы хотите использовать эластичный балансировщик нагрузки (будь то классический балансировщик нагрузки, балансировщик нагрузки приложений или балансировщик сетевой нагрузки) с вашей службой ECS, вы можете использовать эту роль. Теперь, когда доступна SLR ECS, вы можете использовать любую из двух ролей, но вы все равно можете использовать эту роль, если хотите ограничить разрешения, предоставляемые 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 Parameter Store.

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

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

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

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

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