Confuso com o requisito de função do ECS

13

Estou tentando configurar um ECS, mas até agora encontrei alguns problemas de permissão para os quais já criei algumas perguntas neste fórum.

Acho que estou preso até agora porque, honestamente, não consigo descobrir todos esses requisitos de função em um só lugar.

Parece que preciso definir pelo menos dois papéis:

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

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

Está correto?

Perdi alguma coisa? Existe algum requisito especial do IAM?

Anthony Kong
fonte
Não está claro qual é o problema. Você pode editar sua pergunta para incluir detalhes?
EEAA

Respostas:

24

A única função necessária é a função IAM da instância do contêiner . Essa função permite que o agente do ECS (em execução na sua instância do EC2) se comunique com o Amazon ECS.

Existem outras cinco funções que você também pode achar úteis, para diferentes propósitos:

  • Função vinculada ao serviço do ECS (SLR) - essa função permite que o Amazon ECS gerencie uma variedade de recursos da AWS associados ao seu aplicativo em seu nome. Ao usar um Serviço , essa função permite que o Amazon ECS gerencie o balanceador de carga (Classic Load Balancers, Application Load Balancers e Network Load Balancers) e a descoberta de serviços (com o Route 53 ) associados ao seu serviço. Ao usar a rede de tarefas , essa função permite ao Amazon ECS anexar e desanexar Elastic Network Interfaces (ENIs) às suas tarefas. Essa função é necessária ao usar o AWS Fargate .
  • Função IAM do Agendador de Serviços - Antes da introdução da SLR (Função Vinculada a Serviços do ECS), essa função era usada em conjunto com um Serviço para permitir que o Amazon ECS gerenciasse o balanceador de carga associado ao seu serviço. Se você deseja usar um Elastic Load Balancer (seja um Classic Load Balancer, um Application Load Balancer ou um Network Load Balancer) com o serviço ECS, poderá usar esta função. Agora que o ECS SLR está disponível, você pode usar uma das duas funções, mas ainda pode desejar usá-la se desejar restringir as permissões concedidas ao Amazon ECS para cobrir recursos específicos do balanceador de carga.
  • Função IAM de Auto Scaling - Essa função é usada em conjunto com um Serviço e permite que o serviço Application Auto Scaling dimensione para dentro ou para fora a contagem desejada de seu Serviço.
  • Função de tarefa do IAM - essa função pode ser usada com qualquer tarefa (incluindo tarefas iniciadas por um serviço ). Essa função é muito semelhante a um perfil de instância do EC2 , mas permite associar permissões a tarefas individuais em vez da instância subjacente do EC2 que está hospedando essas tarefas. Se você estiver executando vários aplicativos diferentes no cluster do ECS com permissões diferentes necessárias, poderá usar a função IAM da Tarefa para conceder permissões específicas a cada tarefa, em vez de garantir que todas as instâncias do EC2 no cluster tenham o conjunto combinado de permissões que qualquer aplicação precisaria.
  • Função de execução de tarefa - essa função é necessária ao usar o AWS Fargate e substitui a função IAM da instância do contêiner , que não está disponível para o FARGATEtipo de inicialização. Essa função permite que o AWS Fargate retire suas imagens de contêiner do Amazon ECR e encaminhe seus logs para o Amazon CloudWatch Logs . Essa função também é usada (nos tipos de inicialização Fargate e EC2) para habilitar a autenticação e os segredos particulares do registro do AWS Secrets Manager e do AWS Systems Manager Parameter Store .
Samuel Karp
fonte
1

Além dessa explicação muito boa do @ samuel-karp, hoje tive um problema ao migrar do ELB clássico para o ALB em combinação de task_role_arnserviços personalizados para ECS.

Embora eu tenha seguido as instruções descritas atrás do link Task IAM role, o erro foi

Não foi possível assumir a função e validar o targetGroupArn especificado. Verifique se a função de serviço do ECS que está sendo aprovada possui as permissões adequadas.

A questão é que o serviço parece se registrar no balanceador de carga. Só funcionou quando troquei o diretor de ecs.amazonaws.compara

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

mana
fonte