Wie behalte ich einige meiner Ressourcen bei, wenn ich einen AWS-CloudFormation-Stack lösche?

Lesedauer: 3 Minute
0

Ich möchte einen neuen oder vorhandenen AWS-CloudFormation-Stack löschen, aber ich möchte nicht alle Ressourcen des Stacks löschen.

Kurzbeschreibung

Um bestimmte Ressourcen zu behalten, wenn Sie einen Stack löschen, verwenden Sie das Attribut DeletionPolicy in Ihrer CloudFormation-Vorlage.

Bevor Sie einen Stack löschen, stellen Sie sicher, dass Sie für jede Ressource, die Sie behalten möchten, die Richtlinienoption Beibehaltung, Snapshot oder Löschen angeben:

  • Die Option Beibehaltung behält die Ressource bei, falls ein Stack gelöscht wird.
  • Die Option Snapshot erstellt einen Snapshot der Ressource, bevor diese Ressource gelöscht wird.
    Anmerkung: Diese Option ist nur für Ressourcen verfügbar, die Snapshots unterstützen.
  • Die Option Löschen löscht die Ressource zusammen mit dem Stack.
    Anmerkung: Diese Option ist das Standardergebnis, wenn Sie keine DeletionPolicy festlegen.

Lösung

Die folgenden Schritte zeigen Ihnen, wie Sie die Option Beibehaltung für DeletionPolicy verwenden, um das Löschen von Ressourcen während einer CloudFormation-Stack-Löschung zu verhindern.

Geben Sie die DeletionPolicy-Attribute in der AWS-CloudFormation-Vorlage an

Geben Sie in Ihrer CloudFormation-Vorlage Beibehaltung als DeletionPolicy für die Ressourcen ein, die Sie behalten möchten. In den folgenden JSON- und YAML-Beispielvorlagen ist die Richtlinie Beibehaltung für Ressourcen vom Typ AWS::EC2::SecurityGroup spezifiziert.

JSON:

{
  "Description": "AWS CloudFormation DeletionPolicy demo",
  "Resources": {
    "SGroup1": {
      "Type": "AWS::EC2::SecurityGroup",
      "DeletionPolicy": "Retain",
      "Properties": {
        "GroupDescription": "EC2 Instance access"
      }
    },
    "SGroup2": {
      "Type": "AWS::EC2::SecurityGroup",
      "DeletionPolicy": "Retain",
      "Properties": {
        "GroupDescription": "EC2 Instance access"
      }
    },
    "SGroup1Ingress": {
      "Type": "AWS::EC2::SecurityGroupIngress",
      "DeletionPolicy": "Retain",
      "Properties": {
        "GroupName": {
          "Ref": "SGroup1"
        },
        "IpProtocol": "tcp",
        "ToPort": "80",
        "FromPort": "80",
        "CidrIp": "0.0.0.0/0"
      }
    },
    "SGroup2Ingress": {
      "Type": "AWS::EC2::SecurityGroupIngress",
      "DeletionPolicy": "Retain",
      "Properties": {
        "GroupName": {
          "Ref": "SGroup2"
        },
        "IpProtocol": "tcp",
        "ToPort": "80",
        "FromPort": "80",
        "CidrIp": "0.0.0.0/0"
      }
    }
  }
}

YAML:

Description: AWS CloudFormation DeletionPolicy demo
Resources:
  SGroup1:
    Type: 'AWS::EC2::SecurityGroup'
    DeletionPolicy: Retain
    Properties:
      GroupDescription: EC2 Instance access
  SGroup2:
    Type: 'AWS::EC2::SecurityGroup'
    DeletionPolicy: Retain
    Properties:
      GroupDescription: EC2 Instance access
  SGroup1Ingress:
    Type: 'AWS::EC2::SecurityGroupIngress'
    DeletionPolicy: Retain
    Properties:
      GroupName: !Ref SGroup1
      IpProtocol: tcp
      ToPort: '80'
      FromPort: '80'
      CidrIp: 0.0.0.0/0
  SGroup2Ingress:
    Type: 'AWS::EC2::SecurityGroupIngress'
    DeletionPolicy: Retain
    Properties:
      GroupName: !Ref SGroup2
      IpProtocol: tcp
      ToPort: '80'
      FromPort: '80'
      CidrIp: 0.0.0.0/0

Hochladen Ihrer aktualisierten CloudFormation-Vorlage

  1. Öffnen Sie die AWS-CloudFormation-Konsole.
  2. Wählen Sie für einen neuen Stack die Option Stack erstellen. Wählen Sie für einen vorhandenen Stack den Stack aus, den Sie aktualisieren möchten, und wählen Sie dann Stack aktualisieren.
  3. Wählen Sie unter Vorlage auswählen die Option Vorlage auf Amazon S3 hochladen aus und wählen Sie dann die CloudFormation-Vorlage aus, die Sie angepasst haben, sodass sie die Löschrichtlinien beinhaltet.
  4. Wählen Sie Weiter.
  5. Wenn Sie einen neuen Stack erstellen, geben Sie unter Stack-Name einen Namen für Ihren Stack ein und wählen Sie dann Weiter.
  6. Wählen Sie auf der Seite Optionen die entsprechenden Optionen für Ihren Stack aus und wählen Sie dann Weiter.
  7. Wählen Sie Erstellen.

Testen Sie das Attribut DeletionPolicy

  1. Löschen Sie den AWS-CloudFormation-Stack.
  2. Vergewissern Sie sich, dass die Ressourcen mit der Option Beibehaltung für DeletionPolicy auch nach Abschluss des Stack-Löschvorgangs noch verfügbar sind. Sie können die Ressourcen in den jeweiligen Services mithilfe der AWS-Managementkonsole oder der AWS CLI überprüfen.

Sie können beispielsweise den Erfolg der Richtlinie Beibehaltung für die vorherigen Vorlagen überprüfen, indem Sie die folgenden Schritte ausführen, nachdem Sie den CloudFormation-Stack gelöscht haben.

  1. Öffnen Sie die Amazon-EC2-Konsole.
  2. Wählen Sie im Navigationsbereich im Abschnitt Netzwerk und Sicherheit die Option Sicherheitsgruppen aus.
  3. Vergewissern Sie sich, dass die Sicherheitsgruppen mit der angehängten Richtlinie Beibehaltung weiterhin verfügbar sind.

Weitere Informationen

Erstellen eines Stacks auf der AWS-CloudFormation-Konsole

Wie verhindere ich, dass die Ressourcen in meinem CloudFormation-Stack gelöscht oder aktualisiert werden?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren