Come posso mantenere alcune delle mie risorse quando elimino uno stack di AWS CloudFormation?

3 minuti di lettura
0

Desidero eliminare uno stack di AWS CloudFormation nuovo o esistente, ma non voglio eliminare tutte le risorse dello stack.

Breve descrizione

Per conservare determinate risorse quando elimini uno stack, utilizza l'attributo DeletionPolicy nel modello di CloudFormation.

Prima di eliminare uno stack, assicurati di specificare l'opzione della policy Retain, Snapshot o Delete per ogni risorsa che desideri conservare:

  • L'opzione Retain conserva la risorsa in caso di eliminazione dello stack.
  • L'opzione Snapshot crea uno snapshot della risorsa prima che venga eliminata.
    Nota: questa opzione è disponibile solo per le risorse che supportano gli snapshot.
  • L'opzione Delete cancella la risorsa insieme allo stack.
    Nota: questa opzione è l'esito predefinito se non si imposta un attributo DeletionPolicy.

Risoluzione

I passaggi seguenti mostrano come utilizzare l'opzione Retain nella DeletionPolicy per impedire che le risorse vengano eliminate durante l'eliminazione di uno stack di CloudFormation.

Specificare gli attributi DeletionPolicy nel modello di AWS CloudFormation

Nel tuo modello di CloudFormation, inserisci Retain nella DeletionPolicy per le risorse che desideri conservare. Nel seguente esempio di modelli JSON e YAML, la policy Retain è specificata per le risorse AWS::EC2::SecurityGroup.

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

Caricare il modello di CloudFormation aggiornato

  1. Apri la console AWS CloudFormation.
  2. Per creare un nuovo stack, scegli Crea stack. In caso di stack esistente, seleziona lo stack che desideri aggiornare, quindi scegli Aggiorna stack.
  3. In Seleziona un modello, scegli Carica un modello su Amazon S3, quindi scegli il modello di CloudFormation che hai modificato per includere le policy di eliminazione.
  4. Scegli Avanti.
  5. Se stai creando un nuovo stack, in Nome stack inserisci un nome per il tuo stack, quindi scegli Avanti.
  6. Nella pagina Opzioni, seleziona le opzioni appropriate per il tuo stack, quindi scegli Avanti.
  7. Scegli Crea.

Verificare l'attributo DeletionPolicy

  1. Elimina lo stack di AWS CloudFormation.
  2. Verifica che le risorse con l'opzione Retain in DeletionPolicy siano ancora disponibili dopo il completamento dell'eliminazione dello stack. Puoi controllare le risorse nei rispettivi servizi utilizzando la Console di gestione AWS o l'Interfaccia della linea di comando AWS (AWS CLI).

Ad esempio, puoi verificare se la policy Retain è andata a buon fine per i modelli precedenti utilizzando i passaggi seguenti dopo aver eliminato lo stack di CloudFormation.

  1. Apri la console Amazon EC2.
  2. Nel pannello di navigazione, nella sezione Rete e sicurezza scegli Gruppi di sicurezza.
  3. Conferma che i gruppi di sicurezza con la policy Retain associata siano ancora disponibili.

Informazioni correlate

Creating a stack on the AWS CloudFormation console

Come posso impedire che le risorse nel mio stack CloudFormation vengano eliminate o aggiornate?

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa