Direkt zum Inhalt

Wie behebe ich den Fehler „Last applied policy cannot be deleted“ in CloudFormation?

Lesedauer: 3 Minute
0

Ich möchte den Fehler „Last applied policy cannot be deleted“ in AWS CloudFormation beheben.

Kurzbeschreibung

Wenn du versuchst, den CloudFormation-Stack oder Richtlinienressourcen wie AWS::SQS::QueuePolicy, AWS::S3::BucketPolicy und AWS::SNS::TopicPolicy zu löschen, erhältst du möglicherweise die folgende Fehlermeldung:

„Last applied policy cannot be deleted. Please delete other policies applied to this resource before deleting the last applied policy.“

Wenn du eine Richtlinie nach der anderen auf dieselbe Ressource anwendest, wird die zweite Richtlinie zur zuletzt angewendeten Richtlinie. Wenn du versuchst, die zweite Richtlinie zu löschen, erlaubt dir CloudFormation nicht, die Richtlinie zu löschen.

Behebe diesen Fehler anhand der folgenden Szenarien:

  • Der Stack und die Richtlinienressource befinden sich im Status DELETE_FAILED.
  • Die Richtlinienressource wird gelöscht, wenn andere Richtlinienressourcen vorhanden sind, die von anderen Stacks bereitgestellt wurden.

Lösung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

Der Stack und die Richtlinienressource befinden sich im Status DELETE\ _FAILED

Wenn du versucht hast, einen Stack zu löschen, und die Richtlinienressource nicht gelöscht wurde, versuche erneut, den Stack zu löschen, und überspringe die Ressource. Führe eine der folgenden Aktionen aus, um einen Stack und eine Richtlinie aufzulösen, die sich im Status DELETE_FAILED befinden:

  • Öffne die CloudFormation-Konsole und wähle dann Stack löschen aus. Wähle im Popup-Fenster You may retain resources that are failing to delete (Du kannst Ressourcen beibehalten, die nicht gelöscht werden können), unter Ressourcen zum Beibehalten die Richtlinienressource aus.
  • Führe den folgenden AWS-CLI-Befehl aus:
    aws cloudformation delete-stack --stack-name example-stack-name --retain-resources example-policy-resource-id
    Hinweis: Ersetze example-stack-name durch den Stack, der nicht gelöscht werden konnte. Ersetze example-policy-resource-id durch die ID der Richtlinienressource, die nicht gelöscht werden konnte.

Wenn du eine der vorherigen Aktionen abschließt und erneut versuchst, den Stack zu löschen, werden die Ressourcen, die du zur Aufbewahrung ausgewählt hast, nicht gelöscht. Der Status des Stacks ändert sich in DELETE_COMPLETE.

Hinweis: Um unnötige Gebühren zu vermeiden, lösche die beibehaltenen Ressourcen manuell, wenn du den Stack löschst. Wenn die Ressource, auf die du die Richtlinie angewendet hast, gelöscht wird, musst du die Ressourcen nicht manuell löschen. Die Richtlinienressource wird gelöscht, wenn du die Zielressource löschst.

Weitere Informationen findest du unter Wie lösche ich einen AWS CloudFormation-Stack, der im Status DELETE\ _FAILED hängen bleibt?

Richtlinienressourcen aus verschiedenen Stacks löschen, die du auf dieselbe Ressource angewendet hast

Wenn du mehrere Richtlinien aus verschiedenen Stacks auf dieselbe Ressource angewendet hast, musst du die erste Richtlinie löschen, die du angewendet hast.

Beispielsweise erstellst du ExamplePolicyA in example-stack-A und wendest die Richtlinie auf exampleQueue1 an. Dann erstellst du ExamplePolicyB in example-stack-B und wendest die Richtlinie mit unterschiedlichen Berechtigungen auf exampleQueue1 an. Wenn du versuchst, ExamplePolicyB zu löschen, erhältst du die folgende Fehlermeldung:

„Last applied policy cannot be deleted. Please delete other policies applied to this resource before deleting the last applied policy.“

Um ExamplePolicyB zu löschen, musst du zuerst ExamplePolicyA löschen.

Hinweis: Es hat sich bewährt, frühere Richtlinien zu löschen, bevor du eine neue Richtlinie erstellst.

AWS OFFICIALAktualisiert vor 2 Jahren