Wie behebe ich den Fehler „Rolle [role_arn] ist ungültig oder kann nicht angenommen werden“, wenn ich einen AWS CloudFormation-Stack aktualisiere oder lösche?

Lesedauer: 4 Minute
0

Ich möchte den Fehler „Die Rolle [role_arn] ist ungültig oder kann nicht angenommen werden“ beheben, wenn ich einen AWS CloudFormation-Stack erstelle, aktualisiere oder lösche.

Kurzbeschreibung

Sie erhalten diesen Fehler, wenn ein Problem mit der AWS Identity and Access Management (IAM) -Servicerolle auftritt, die von AWS CloudFormation verwendet wird, um in Ihrem Namen Ressourcen in einem Stack aufzurufen.

Sie können diesen Fehler erhalten, wenn Sie versuchen:

  • Erstellen Sie einen Stack mithilfe der AWS-Befehlszeilenschnittstelle (AWS CLI) oder eines API-Aufrufs.
  • Aktualisieren Sie einen Stack, wenn AWS CloudFormation einen Änderungssatz erstellt.
  • Löscht einen Stapel.
  • Aktualisieren oder löschen Sie eine IAM-Rolle. Wenn Sie die Vertrauensrichtlinie einer aktualisierten IAM-Rolle ändern, kann AWS CloudFormation die Rolle nicht übernehmen.

Um diesen Fehler zu beheben, stellen Sie fest, ob die von AWS CloudFormation verwendete IAM-Servicerolle vorhanden ist. Dann:

  • Wenn die IAM-Rolle nicht existiert, erstellen Sie eine neue IAM-Rolle mit demselben Namen.
  • Wenn die IAM-Rolle vorhanden ist, vergewissern Sie sich, dass die Rollentrust-Richtlinie es AWS CloudFormation ermöglicht, die IAM-Rolle zu übernehmen.

Oder Sie können die aktuelle IAM-Rolle, die verwendet wurde, um die für den aktuellen Stack-Vorgang verwendete Servicerolle zu überschreiben, indem Sie den Parameter --role-arn verwenden.

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS-CLI verwenden.

Behebung

Bestätigen Sie, dass die IAM-Rolle vorhanden ist

1.    Öffnen Sie die IAM-Konsole.

2.    Wählen Sie im Navigationsbereich Rollen.

3.    Wählen Sie in der Spalte Rollenname die IAM-Rolle aus, die in der Fehlermeldung erwähnt wird, die Sie erhalten haben.

4.    Wenn die Rolle vorhanden ist, führen Sie die Schritte im Bestätigen Sie, dass die Richtlinie zur Vertrauensstellung der Rolle es AWS CloudFormation ermöglicht, die IAM-Rolle zu übernehmen Abschnitt aus         -oder-
Führen Sie die Schritte im Abschnitt Aktuelle IAM-Rolle überschreiben, die von AWS CloudFormation verwendet wird.

        Wenn die Rolle nicht existiert, führen Sie die Schritte unter Neue IAM-Rolle erstellen aus und vergewissern Sie sich, dass sie über die erforderlichen Berechtigungen verfügt.

Erstellen Sie eine neue IAM-Rolle und stellen Sie sicher, dass sie über die erforderlichen Berechtigungen verfügt

1.     Erstellen Sie eine neue IAM-Rolle mit demselben Namen wie die in dem Fehler erwähnte Rolle

2.    Vergewissern Sie sich, dass die neue IAM-Rolle über die erforderlichen Berechtigungen verfügt, damit AWS CloudFormation Erstellungs-, Aktualisierungs- oder Löschvorgänge für Ressourcen in Ihrem Stack ausführen kann.

3.    Nachdem die Rolle erstellt wurde, können Sie Ihren Stack erneut erstellen, aktualisieren oder löschen.

Hinweis: Wenn die neue Rolle nicht über die erforderlichen IAM-Berechtigungen verfügt, können die Stack-Operationen fehlschlagen. Der Löschvorgang schlägt beispielsweise fehl, wenn Sie versuchen, eine Amazon Elastic Compute Cloud (Amazon EC2) Instance-Ressource zu löschen, für die die IAM-Rolle nicht über die Berechtigung für die Aktion ec2:TerminateInstances verfügt.

Bestätigen Sie, dass die Richtlinie zur Vertrauensstellung es AWS CloudFormation ermöglicht, die IAM-Rolle zu übernehmen

1.    Öffnen Sie die IAM-Konsole.

2.    Wählen Sie im Navigationsbereich Rollen.

3.    Wählen Sie in der Spalte Rollenname die IAM-Rolle aus, die in der Fehlermeldung erwähnt wird, die Sie erhalten haben.

4.    Wählen Sie den Tab Vertrauensbeziehungen.

5.    Bestätigen Sie, dass cloudformation.amazonaws.com in der Vertrauensbeziehung als vertrauenswürdige Entität ausgewiesen ist.

Wenn cloudformation.amazonaws.com nicht als vertrauenswürdige Entität aufgeführt ist, wählen Sie Vertrauensverhältnis bearbeiten.

6.    Geben Sie im Policy Document Editor die folgende AWS CloudFormation Servicerolle Vertrauensrichtlinie ein:

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

7.    Wählen Sie Vertrauensrichtlinie aktualisieren.

Dank der aktualisierten Trusty-Richtlinie kann AWS CloudFormation nun die IAM-Rolle übernehmen.

8.    Nachdem die Rolle erstellt wurde, können Sie Ihren Stack erneut erstellen, aktualisieren oder löschen.

Überschreiben Sie die aktuelle IAM-Rolle, die von AWS CloudFormation verwendet wird

1.    Führen Sie den folgenden Befehl aus, um den Stack zu aktualisieren:

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

Hinweis: Ersetzen Sie my-stack, my-stack-template.json und 123456789123 durch Ihre Werte.

2.    Führen Sie den folgenden Befehl aus, um den Stapel zu löschen:

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

Hinweis: Ersetzen Sie my-stack und 123456789123 durch Ihre Werte.


Weitere Informationen

AWS CloudFormation-Servicerolle

Eine Rolle erstellen, um Berechtigungen an einen AWS-Service zu delegieren

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren