Como soluciono o erro “O ECS não pôde assumir a função” ao executar as tarefas do Amazon ECS?

Data da última atualização: 04/03/2022

Estou recebendo o seguinte erro quando executo minhas tarefas do Amazon Elastic Container Service (Amazon ECS) /AWS Fargate:

O ECS não pôde assumir a função 'arn:aws:iam::xxxxxxxxxxxx:role/yyyyyyyy' que foi fornecida para esta tarefa. Verifique se a função que está sendo passada tem o relacionamento de confiança e as permissões adequadas e se o usuário do IAM tem permissões para passar essa função.

Resolução

Você recebe esse erro devido a um ou mais dos seguintes motivos:

  • A função ou função de tarefa do AWS Identity and Access Management (IAM) de execução de tarefas especificada na definição da tarefa não existe.
  • A função do IAM de execução de tarefa ou a função de tarefa especificada na definição de tarefa não tem a política de relacionamento confiável correta.

Verifique se a função de execução de tarefa ou a função de tarefa existe

Para verificar se a função de execução de tarefa ou a função de tarefa definida na definição de tarefa existe usando o console, faça o seguinte:

  1. Abra o console do IAM.
  2. Escolha Funções.
  3. Pesquise a lista de funções para a função de execução de tarefa ou função de tarefa que você incluiu na definição de tarefa.

Para verificar se a função de execução de tarefa ou a função de tarefa existe usando a AWS Command Line Interface (AWS CLI), execute o seguinte comando:

Observação: esse comando recupera informações sobre a função do IAM especificada.

aws iam get-role --role-name example-task-execution-role

Observação: se você receber erros ao executar comandos da AWS CLI, certifique-se de estar utilizando a versão mais recente da AWS CLI.

Se a função não existir, você receberá o seguinte erro:

An error occurred (NoSuchEntity) when calling the GetRole operation: The role with name example-task-execution-role cannot be found.

Se a função não existir, considere fazer um dos seguintes:

Verifique se a função de execução de tarefa ou a função de tarefa na definição de tarefa tem a política de relacionamento confiável correta

Certifique-se de que a política de relacionamento confiável para a função permita o serviço ecs-tasks.amazonaws.com. Isso é necessário para que a tarefa do Amazon ECS assuma a função do IAM especificada.

Para verificar a política de relacionamento de confiança e atualizar conforme necessário, faça o seguinte:

1.    Abra o console do IAM.

2.    No painel de navegação, escolha Funções.

3.    Pesquise a lista de funções para a função de execução de tarefa ou função de tarefa incluída em sua definição de tarefa.

4.    Escolha a função.

5.    Escolha Relacionamentos de confiança.

6.    Verifique se o relacionamento de confiança para a função contém a seguinte política:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ecs-tasks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

7.    Se o relacionamento de confiança corresponder à política, escolha Cancelar. Caso contrário, escolha Editar relacionamento de confiança.

8.    Copie a política anterior na janela Documento de política e escolha Atualizar política de confiança.