Come posso risolvere l'errore "Il ruolo [role_arn] non è valido o non può essere assunto" quando aggiorno o elimino uno stack di AWS CloudFormation?

4 minuti di lettura
0

Desidero risolvere l'errore "Il ruolo [role_arn] non è valido o non può essere assunto" quando creo, aggiorno o elimino uno stack di AWS CloudFormation.

Breve descrizione

Questo errore viene visualizzato quando si verifica un problema con il ruolo del servizio AWS Identity and Access Management (IAM) utilizzato da AWS CloudFormation per effettuare chiamate alle risorse in uno stack per tuo conto.

Puoi ricevere questo errore quando provi a:

  • Creare uno stack utilizzando l'interfaccia della linea di comando AWS (AWS CLI) o una chiamata API.
  • Aggiornare uno stack quando AWS CloudFormation crea un set di modifiche.
  • Eliminare uno stack.
  • Aggiornare o eliminare un ruolo IAM. Se modifichi la policy di attendibilità di un ruolo IAM aggiornato, AWS CloudFormation non può assumere il ruolo.

Per risolvere questo errore, determina se esiste un ruolo di servizio IAM utilizzato da AWS CloudFormation. Quindi:

  • Se il ruolo IAM non esiste, crea un nuovo ruolo IAM con lo stesso nome.
  • Se il ruolo IAM esiste, verifica che la policy di attendibilità del ruolo consenta ad AWS CloudFormation di assumere il ruolo IAM.

In alternativa, puoi sovrascrivere il ruolo IAM corrente utilizzato per sostituire il ruolo di servizio utilizzato per l'operazione corrente dello stack utilizzando il parametro --role-arn.

Nota: se ricevi errori durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS, assicurati di utilizzare la versione più recente dell'interfaccia della linea di comando AWS (AWS CLI).

Risoluzione

Verifica l'esistenza del ruolo IAM

1.    Apri la console IAM.

2.    Nel riquadro di navigazione, scegli Ruoli.

  1. Nella colonna Nome ruolo, scegli il ruolo IAM indicato nel messaggio di errore che hai ricevuto.

  2. Se il ruolo esiste, completa i passaggi nella sezione Verifica che la policy di attendibilità del ruolo consenta ad AWS CloudFormation di assumere il ruolo IAM
    -oppure-
    Completa i passaggi indicati nella sezione Sostituisci il ruolo IAM corrente utilizzato da AWS CloudFormation.

        Se il ruolo non esiste, completa i passaggi indicati nella sezione Crea un nuovo ruolo IAM e verifica che disponga delle autorizzazioni richieste.

Crea un nuovo ruolo IAM e verifica che disponga delle autorizzazioni richieste

1.     Crea un nuovo ruolo IAM con lo stesso nome del ruolo indicato nell'errore

2.    Verifica che il nuovo ruolo IAM disponga delle autorizzazioni necessarie per consentire ad AWS CloudFormation di eseguire operazioni di creazione, aggiornamento o eliminazione sulle risorse.

3.    Dopo la creazione del ruolo, puoi creare, aggiornare o eliminare nuovamente lo stack.

Nota: se il nuovo ruolo non dispone delle autorizzazioni IAM richieste, le operazioni dello stack potrebbero non riuscire. Ad esempio, l'operazione di eliminazione non riesce se tenti di eliminare una risorsa dell’istanza Amazon Elastic Compute Cloud (Amazon EC2) in cui il ruolo IAM non dispone dell'autorizzazione per l'azione ec2:TerminateInstances.

Verifica che la policy di attendibilità del ruolo consenta ad AWS CloudFormation di assumere il ruolo IAM

1.    Apri la console IAM.

2.    Nel riquadro di navigazione, scegli Ruoli.

  1. Nella colonna Nome ruolo, scegli il ruolo IAM indicato nel messaggio di errore che hai ricevuto.

4.    Scegli la scheda Relazioni di fiducia.

5.    Verifica che la relazione di fiducia indichi cloudformation.amazonaws.com come un'entità attendibile.

Se cloudformation.amazonaws.com non è elencato come un’entità attendibile, scegli Modifica relazione di fiducia.

6.    Nell'editor Documento policy, inserisci la seguente policy di attendibilità del ruolo del servizio AWS CloudFormation:

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

7.    Scegli Aggiorna policy di attendibilità.

A questo punto, la policy di attendibilità aggiornata consente ad AWS CloudFormation di assumere il ruolo di IAM.

8.    Dopo la creazione del ruolo, puoi creare, aggiornare o eliminare nuovamente lo stack.

Sostituisci l'attuale ruolo IAM utilizzato da AWS CloudFormation

1.    Per aggiornare lo stack, esegui il seguente comando:

aws cloudformation update-stack --stack-name my-stack --template-body file://my-stack-template.json --role-arn arn:aws:iam::123456789123:role/cloudformation-role

Nota: sostituisci my-stack, my-stack-template.json e 123456789123 con i tuoi valori.

2.    Per eliminare lo stack, esegui il seguente comando:

aws cloudformation delete-stack --stack-name my-stack --role-arn arn:aws:iam::123456789123:role/cloudformation-role

**Nota:**sostituisci my-stack e 123456789123 con i tuoi valori.


Informazioni correlate

Ruolo del servizio AWS CloudFormation

Creazione di un ruolo per delegare le autorizzazioni in un servizio AWS

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa