Come posso risolvere l'errore "ECS was unable to assume the role" (ECS non è stato in grado di assumere il ruolo) durante l'esecuzione delle attività di Amazon ECS?

Ultimo aggiornamento: 04/03/2022

Ricevo il seguente errore quando eseguo le mie attività Amazon Elastic Container Service (Amazon ECS)/AWS Fargate:

ECS non è stato in grado di assumere il ruolo "arn:aws:iam::xxxxxxxxxxxx:role/yyyyyyyy" fornito per questa attività. Verifica che il ruolo passato abbia la relazione di attendibilità e le autorizzazioni appropriate e che l'utente IAM disponga delle autorizzazioni per passare questo ruolo.

Risoluzione

Questo errore viene visualizzato per uno o più dei seguenti motivi:

  • Il ruolo AWS Identity and Access Management (IAM) per l'esecuzione dell'attività o il ruolo dell'attività specificato nella definizione dell'attività non esiste.
  • Il ruolo IAM per l'esecuzione dell'attività o il ruolo dell'attività specificato nella definizione dell'attività non dispone della policy di relazione di attendibilità corretta.

Verifica che il ruolo per l'esecuzione dell'attività o il ruolo dell'attività esista

Per verificare se il ruolo per l'esecuzione dell'attività o il ruolo dell'attività specificato nella definizione dell'attività esiste utilizzando la console, procedi come segue:

  1. Apri la console IAM.
  2. Scegli Roles (Ruoli).
  3. Cerca nell'elenco dei ruoli il ruolo per l'esecuzione dell'attività o il ruolo dell'attività incluso nella definizione dell'attività.

Per verificare se il ruolo per l'esecuzione dell'attività o il ruolo dell'attività esiste utilizzando AWS Command Line Interface (AWS CLI), esegui il seguente comando:

Nota: questo comando recupera informazioni sul ruolo IAM specificato.

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

Nota: se ricevi un messaggio di errore durante l'esecuzione dei comandi di AWS CLI, assicurati di utilizzare la versione più recente di AWS CLI.

Se il ruolo non esiste, viene visualizzato il seguente errore:

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

Se il ruolo non esiste, è consigliabile eseguire una delle seguenti operazioni:

Verifica che il ruolo per l'esecuzione dell'attività o il ruolo dell'attività specificato nella definizione dell'attività disponga della policy di relazione di attendibilità corretta

Assicurati che la policy di relazione di attendibilità per il ruolo consenta il servizio ecs-tasks.amazonaws.com. Questa operazione è necessaria affinché l'attività di Amazon ECS assuma il ruolo IAM specificato.

Per verificare la policy di relazione di attendibilità e aggiornarla secondo necessità, procedi come segue:

1.    Apri la console IAM.

2.    Nel pannello di navigazione, scegli Ruoli.

3.    Cerca nell'elenco dei ruoli il ruolo per l'esecuzione dell'attività o il ruolo dell'attività incluso nella definizione dell'attività.

4.    Scegli il ruolo.

5.    Scegli Trust relationships (Relazioni di attendibilità).

6.    Verifica se la relazione di attendibilità per il ruolo contiene la seguente policy:

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

7.    Se la relazione di attendibilità corrisponde alla policy, scegli Cancel (Annulla). Altrimenti, scegli Edit trust relationship (Modifica relazione di attendibilità).

8.    Copia la policy precedente nella finestra Policy Document (Documento della policy), quindi scegli Update Trust Policy (Aggiorna policy di attendibilità).