

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Automatisieren Sie das Löschen von AWS CloudFormation Stacks und zugehörigen Ressourcen
<a name="automate-deletion-cloudformation-stacks-associated-resources"></a>

*SANDEEP SINGH und James Jacob, Amazon Web Services*

## Zusammenfassung
<a name="automate-deletion-cloudformation-stacks-associated-resources-summary"></a>

[AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ist ein weit verbreiteter Service für die Verwaltung von Cloud-Infrastrukturen als Code (IaC). *Wenn Sie ihn verwenden CloudFormation, verwalten Sie zugehörige Ressourcen als eine einzige Einheit, die als Stack bezeichnet wird.* Sie können eine Sammlung von Ressourcen durch Erstellen, Aktualisieren und Löschen von Stacks erstellen und löschen.

Manchmal benötigen Sie die Ressourcen in einem CloudFormation Stapel nicht mehr. Abhängig von den Ressourcen und ihren Konfigurationen kann es kompliziert sein, einen Stapel und die zugehörigen Ressourcen zu löschen. In realen Produktionssystemen schlagen Löschungen aufgrund widersprüchlicher Bedingungen oder Einschränkungen, die nicht außer Kraft gesetzt werden können, CloudFormation manchmal fehl oder dauern lange. Es kann eine sorgfältige Planung und Ausführung erfordern, um sicherzustellen, dass alle Ressourcen ordnungsgemäß, effizient und konsistent gelöscht werden. Dieses Muster beschreibt, wie Sie ein Framework einrichten, das Sie beim Löschen von CloudFormation Stacks unterstützt, die die folgenden Komplexitäten beinhalten:
+ **Ressourcen mit Löschschutz** — Bei einigen Ressourcen ist der Löschschutz möglicherweise aktiviert. Gängige Beispiele sind [Amazon DynamoDB-Tabellen](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) und [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) -Buckets. Der Löschschutz verhindert automatisiertes Löschen, z. B. das Löschen durch. CloudFormation Wenn Sie diese Ressourcen löschen möchten, müssen Sie den Löschschutz manuell oder programmgesteuert außer Kraft setzen oder vorübergehend deaktivieren. Bevor Sie fortfahren, sollten Sie die Auswirkungen des Löschens dieser Ressourcen sorgfältig abwägen.
+ **Ressourcen mit Aufbewahrungsrichtlinien** — Bestimmte Ressourcen, wie z. B. AWS Key Management Service (AWS KMS) -Schlüssel und Amazon S3 S3-Buckets, verfügen möglicherweise über Aufbewahrungsrichtlinien, die angeben, wie lange sie nach der Anforderung des Löschvorgangs aufbewahrt werden sollen. Sie sollten diese Richtlinien bei der Säuberungsstrategie berücksichtigen, um die Einhaltung der Unternehmensrichtlinien und behördlichen Anforderungen zu gewährleisten.
+ **Verzögertes Löschen von Lambda-Funktionen, die an eine VPC angehängt sind** — Das Löschen einer [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)Funktion, die an eine Virtual Private Cloud (VPC) angehängt ist, kann 5—40 Minuten dauern, abhängig von den mehreren miteinander verbundenen Abhängigkeiten, die an dem Prozess beteiligt sind. Wenn Sie die Funktion vor dem Löschen des Stacks von der VPC trennen, können Sie diese Verzögerung auf unter 1 Minute reduzieren.
+ **Ressourcen, die nicht direkt von erstellt wurden CloudFormation** — In bestimmten Anwendungsdesigns können Ressourcen außerhalb des ursprünglichen CloudFormation Stacks erstellt werden, entweder von der Anwendung selbst oder durch Ressourcen, die über den Stack bereitgestellt werden. Nachfolgend finden Sie zwei Beispiele:
  + CloudFormation könnte eine [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) -Instance bereitstellen, die ein Benutzerdatenskript ausführt. Dann könnte dieses Skript einen [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)Parameter zum Speichern anwendungsbezogener Daten erstellen. Dieser Parameter wird nicht verwaltet. CloudFormation
  + CloudFormation könnte eine Lambda-Funktion bereitstellen, die automatisch eine [Amazon CloudWatch Logs-Gruppe zum Speichern von Protokollen](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) generiert. Diese Protokollgruppe wird nicht verwaltet. CloudFormation

  Auch wenn diese Ressourcen nicht direkt von verwaltet werden CloudFormation, müssen sie häufig bereinigt werden, wenn der Stapel gelöscht wird. Wenn sie nicht verwaltet werden, können sie verwaist werden und zu unnötigem Ressourcenverbrauch führen.

Diese Leitplanken können zwar zu Komplexität führen, sind aber gewollt und entscheidend. Die Möglichkeit CloudFormation , alle Beschränkungen außer Kraft zu setzen und Ressourcen wahllos zu löschen, könnte in vielen Szenarien zu nachteiligen und unvorhergesehenen Folgen führen. Als Cloud-Ingenieur, der für die Verwaltung der Umgebung verantwortlich ist, kann es jedoch vorkommen, dass diese Einschränkungen außer Kraft gesetzt werden müssen, insbesondere in Entwicklungs-, Test- DevOps oder Staging-Umgebungen.

**Gezielte Geschäftsergebnisse**

Durch die Implementierung dieses Frameworks können Sie die folgenden Vorteile erzielen:
+ **Kostenmanagement** — Durch die regelmäßige und effiziente Bereinigung temporärer Umgebungen, wie end-to-end z. B. Umgebungen für Benutzerakzeptanztests, wird verhindert, dass Ressourcen länger als nötig genutzt werden. Dadurch können die Kosten erheblich gesenkt werden.
+ **Sicherheit** — Die automatische Säuberung veralteter oder ungenutzter Ressourcen reduziert die Angriffsfläche und trägt zur Aufrechterhaltung einer sicheren AWS Umgebung bei.
+ **Betriebseffizienz** — Regelmäßige und automatische Säuberungen können die folgenden betrieblichen Vorteile bieten:
  + Automatisierte Skripts, die alte Protokollgruppen entfernen oder Amazon S3 S3-Buckets leeren, können die betriebliche Effizienz verbessern, indem sie die Umgebung sauber und überschaubar halten.
  + Das schnelle Löschen und Neuerstellen von Stacks unterstützt schnelle Iterationen bei Design und Implementierung, was zu einer robusteren und robusteren Architektur führen kann.
  + Das regelmäßige Löschen und Neuerstellen von Umgebungen kann Ihnen helfen, potenzielle Probleme zu identifizieren und zu beheben. Auf diese Weise können Sie sicherstellen, dass die Infrastruktur realen Szenarien standhält.

## Voraussetzungen und Einschränkungen
<a name="automate-deletion-cloudformation-stacks-associated-resources-prereqs"></a>

**Voraussetzungen**
+ Ein aktiver AWS-Konto
+ Python Version 3.6 oder höher, [installiert](https://www.python.org/downloads/)
+ AWS Command Line Interface (AWS CLI), [installiert](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) und [konfiguriert](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)

**Einschränkungen**
+ Eine Benennungskonvention wird verwendet, um die Ressourcen zu identifizieren, die gelöscht werden sollen. Der Beispielcode in diesem Muster verwendet ein Präfix für den Ressourcennamen, Sie können jedoch Ihre eigene Benennungskonvention definieren. Ressourcen, die diese Benennungskonvention nicht verwenden, werden nicht identifiziert oder anschließend gelöscht.

## Architektur
<a name="automate-deletion-cloudformation-stacks-associated-resources-architecture"></a>

Das folgende Diagramm zeigt, wie dieses Framework den CloudFormation Zielstapel und die damit verbundenen zusätzlichen Ressourcen identifiziert.

![\[Die Phasen, in denen CloudFormation Stacks und die zugehörigen Ressourcen erkannt, verarbeitet und gelöscht werden.\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/ab7c3b56-3476-41a3-8ece-68915605a546/images/a7fceb1c-d624-47b3-957d-f910ef2f44d7.png)


Das Diagramm zeigt den folgenden Workflow:

1. **Ressourcen sammeln** — Das Automatisierungs-Framework verwendet eine Namenskonvention, um alle relevanten CloudFormation Stacks, Amazon Elastic Container Registry (Amazon ECR) -Repositorys, DynamoDB-Tabellen und Amazon S3 S3-Buckets zurückzugeben.
**Anmerkung**  
Die Funktionen für diese Phase verwenden [Paginatoren](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html), eine Funktion in Boto3, die den Prozess der Iteration über eine verkürzte API-Ergebnismenge abstrahiert. Dadurch wird sichergestellt, dass alle Ressourcen verarbeitet werden. Um die Leistung weiter zu optimieren, sollten Sie erwägen, [serverseitige](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html#filtering-results) Filterung anzuwenden oder eine [clientseitige](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html#filtering-results-with-jmespath) Filterung durchzuführen. JMESPath 

1. **Vorverarbeitung** — Das Automatisierungs-Framework identifiziert und behebt die Serviceeinschränkungen, die außer Kraft gesetzt werden müssen, damit die Ressourcen gelöscht werden können. CloudFormation Beispielsweise wird die `DeletionProtectionEnabled` Einstellung für DynamoDB-Tabellen auf geändert. `False` In der Befehlszeilenschnittstelle erhalten Sie für jede Ressource eine Eingabeaufforderung mit der Frage, ob Sie die Einschränkung überschreiben möchten.

1. **Stapel löschen** — Das Automation Framework löscht den Stapel. CloudFormation In der Befehlszeilenschnittstelle erhalten Sie eine Eingabeaufforderung mit der Frage, ob Sie den Stack löschen möchten.

1. **Nachbearbeitung** — Das Automatisierungs-Framework löscht alle zugehörigen Ressourcen, die nicht direkt CloudFormation als Teil des Stacks bereitgestellt wurden. Beispiele für diese Ressourcentypen sind Systems Manager Manager-Parameter und CloudWatch Protokollgruppen. Separate Funktionen sammeln diese Ressourcen, verarbeiten sie vor und löschen sie anschließend. In der Befehlszeilenschnittstelle werden Sie für jede Ressource gefragt, ob Sie die Ressource löschen möchten.
**Anmerkung**  
Die Funktionen für diese Phase verwenden [Paginatoren](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html), eine Funktion in Boto3, die den Prozess der Iteration über eine verkürzte API-Ergebnismenge abstrahiert. Dadurch wird sichergestellt, dass alle Ressourcen verarbeitet werden. Um die Leistung weiter zu optimieren, sollten Sie erwägen, [serverseitige](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html#filtering-results) Filterung anzuwenden oder eine [clientseitige](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html#filtering-results-with-jmespath) Filterung durchzuführen. JMESPath 

**Automatisierung und Skalierung**

Wenn Ihr CloudFormation Stack andere Ressourcen enthält, die nicht im Beispielcode enthalten sind, oder wenn der Stack eine Einschränkung hat, die in diesem Muster nicht behandelt wurde, können Sie das Automatisierungsframework an Ihren Anwendungsfall anpassen. Gehen Sie beim Sammeln von Ressourcen, der Vorverarbeitung, dem Löschen des Stacks und der anschließenden Nachverarbeitung derselben Methode nach.

## Tools
<a name="automate-deletion-cloudformation-stacks-associated-resources-tools"></a>

**AWS-Services**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)hilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten AWS-Konten Lebenszyklus über und zu verwalten. AWS-Regionen
+ [CloudFormation Command Line Interface (CFN-CLI)](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/what-is-cloudformation-cli.html) ist ein Open-Source-Tool, mit dem Sie Erweiterungen von Drittanbietern entwickeln und testen AWS und diese dann für die Verwendung in registrieren können. CloudFormation
+ [AWS SDK für Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)ist ein Softwareentwicklungskit, mit dem Sie Ihre Python-Anwendung, -Bibliothek oder Ihr Skript integrieren können AWS-Services.

**Andere Tools**
+ [Click](https://click.palletsprojects.com/en/stable/) ist ein Python-Tool, mit dem Sie Befehlszeilenschnittstellen erstellen können.
+ [Poetry](https://python-poetry.org/docs/) ist ein Tool für Abhängigkeitsmanagement und Paketierung in Python.
+ [Pyenv](https://github.com/pyenv/pyenv) ist ein Tool, mit dem Sie Python-Versionen verwalten und zwischen ihnen wechseln können.
+ [Python](https://www.python.org/) ist eine Allzweck-Computerprogrammiersprache.

**Code-Repository**

Der Code für dieses Muster ist im GitHub [cloudformation-stack-cleanup](https://github.com/aws-samples/cloudformation-stack-cleanup/)Repository verfügbar.

## Best Practices
<a name="automate-deletion-cloudformation-stacks-associated-resources-best-practices"></a>
+ **Kennzeichnen Sie Ressourcen zur leichteren Identifizierung** — Implementieren Sie eine [Tagging-Strategie](https://aws.amazon.com/solutions/guidance/tagging-on-aws/), um Ressourcen zu identifizieren, die für unterschiedliche Umgebungen und Zwecke erstellt wurden. Tags können den Bereinigungsprozess vereinfachen, indem sie Ihnen helfen, Ressourcen anhand ihrer Tags zu filtern.
+ **Ressourcenlebenszyklen einrichten** — Definieren Sie Ressourcenlebenszyklen, um Ressourcen nach einem bestimmten Zeitraum automatisch zu löschen. Auf diese Weise können Sie sicherstellen, dass temporäre Umgebungen nicht zu dauerhaften Kostenbelastungen werden.

## Epen
<a name="automate-deletion-cloudformation-stacks-associated-resources-epics"></a>

### Tools installieren
<a name="install-tools"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Klonen Sie das Repository | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | DevOps Ingenieur | 
| Installieren Sie Poetry. | Folgen Sie den [Anweisungen](https://python-poetry.org/docs/) (Poesy-Dokumentation), um Poetry in der virtuellen Zielumgebung zu installieren. | DevOps Ingenieur | 
| Installieren Sie die Abhängigkeiten. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | DevOps Ingenieur | 
| (Optional) Installieren Sie Pyenv. | Folgen Sie den [Anweisungen](https://github.com/pyenv/pyenv#installation) (GitHub), um Pyenv zu installieren. | DevOps Ingenieur | 

### (Optional) Passen Sie das Framework an
<a name="optional-customize-the-framework"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie Funktionen, die die Zielressourcen sammeln, vorverarbeiten und löschen. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | DevOps Ingenieur, Python | 

### Erstellen Sie Beispielressourcen
<a name="create-sample-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie einen CloudFormation Stapel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | AWS DevOps | 
| Erstellen Sie einen Systems Manager Manager-Parameter. | Geben Sie den folgenden Befehl ein, um einen Systems Manager Manager-Parameter zu erstellen, der nicht bereitgestellt wird über CloudFormation:<pre>aws ssm put-parameter \<br />  --name "/sampleforcleanup/database/password" \<br />  --value "your_db_password" \<br />  --type "SecureString" \<br />  --description "Database password for my app" \<br />  --tier "Standard" \<br />  --region "us-east-1"</pre> | AWS DevOps | 
| Erstellen Sie einen Amazon-S3-Bucket. | Geben Sie den folgenden Befehl ein, um einen Amazon S3 S3-Bucket zu erstellen, der nicht bereitgestellt wird über CloudFormation:<pre>aws s3api create-bucket \<br />  --bucket samplesorcleanup-unmanagedbucket-<UniqueIdentifier> \<br />  --region us-east-1 \<br />  --create-bucket-configuration LocationConstraint=us-east-1</pre> | AWS DevOps | 

### Löschen Sie die Beispielressourcen
<a name="delete-the-sample-resources"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Löschen Sie den CloudFormation Stapel. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/automate-deletion-cloudformation-stacks-associated-resources.html) | AWS DevOps | 
| Bestätigen Sie das Löschen von Ressourcen. | Vergewissern Sie sich in der Ausgabe, dass alle Beispielressourcen gelöscht wurden. Eine Beispielausgabe finden Sie im Abschnitt [Zusätzliche Ressourcen](#automate-deletion-cloudformation-stacks-associated-resources-additional) dieses Musters. | AWS DevOps | 

## Zugehörige Ressourcen
<a name="automate-deletion-cloudformation-stacks-associated-resources-resources"></a>
+ [Einen Stack löschen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) (CloudFormation Dokumentation)
+ [Problembehandlung CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html) (CloudFormation Dokumentation)
+ [Lambda-Funktionen Zugriff auf Ressourcen in einer Amazon VPC gewähren](https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html) (Lambda-Dokumentation)
+ [Wie lösche ich einen AWS CloudFormation Stack, der im Status DELETE\$1FAILED hängengeblieben ist?](https://repost.aws/knowledge-center/cloudformation-stack-delete-failed) (Wissenszentrum)AWS 

## Zusätzliche Informationen
<a name="automate-deletion-cloudformation-stacks-associated-resources-additional"></a>

Im Folgenden finden Sie ein Beispiel für die Ausgabe des `cfncli` Befehls:

```
cfncli --region aus-east-1  dev cleanup-env --prefix-list sampleforcleanup                                                                                                                              
https://sts.us-east-1.amazonaws.com
Cleaning up: ['sampleforcleanup'] in xxxxxxxxxx:us-east-1
Do you want to proceed? [Y/n]: Y
No S3 buckets
No ECR repositories
No Lambda functions in VPC
The following DynamoDB tables will have their deletion protection removed:
sampleforcleanup-MyDynamoDBTable
Do you want to proceed with removing deletion protection from these tables? [Y/n]: Y
Deletion protection disabled for DynamoDB table 'sampleforcleanup-MyDynamoDBTable'.
The following CloudFormation stacks will be deleted:
sampleforcleanup-Stack
Do you want to proceed with deleting these CloudFormation stacks? [Y/n]: Y
Initiated deletion of CloudFormation stack: `sampleforcleanup-Stack`
Waiting for stack `sampleforcleanup-Stack` to be deleted...
CloudFormation stack `sampleforcleanup-Stack` deleted successfully.
The following ssm_params will be deleted:
/sampleforcleanup/database/password
Do you want to proceed with deleting these ssm_params? [Y/n]: Y
Deleted SSM Parameter: /sampleforcleanup/database/password
Cleaned up: ['sampleforcleanup']
```