Comment conserver mes ressources lorsque je supprime une pile AWS CloudFormation ?

Date de la dernière mise à jour : 08/07/2019

Je veux supprimer une pile AWS CloudFormation nouvelle ou existante, mais je ne veux pas supprimer toutes les ressources de la pile. Comment conserver certaines des ressources dans la pile ?

Brève description

Pour conserver certaines ressources lorsque vous supprimez une pile, utilisez l’attribut DeletionPolicy dans votre modèle AWS CloudFormation.

Lorsque vous supprimez une pile, spécifiez l'option de stratégie Retain (Conserver), Snapshot (Instantané) ou Delete (Supprimer) :

  • L'option Retain (Conserve) conserve la ressource en cas de suppression de la pile.
  • L'option Snapshot (Instantané) crée un instantané de la ressource avant sa suppression.
    Remarque : cette option n'est disponible que pour les ressources qui prennent en charge les instantanés.
  • L'option Delete (Supprimer) supprime la ressource en même temps que la pile.
    Remarque : cette option est le résultat par défaut si vous ne configurez pas de DeletionPolicy.

Solution

Les étapes suivantes montrent comment utiliser la stratégie Retain (Conserver) pour empêcher la suppression des groupes de sécurité lors de la suppression d'une pile AWS CloudFormation.

Spécifiez les attributs DeletionPolicy dans le modèle AWS CloudFormation.

Dans votre modèle AWS CloudFormation, saisissez Retain comme stratégie de conservation pour les ressources à conserver lorsque la pile est supprimée. Dans les exemples d'extraits de modèle JSON et YAML suivants, la stratégie Retain (Conserver) est spécifiée pour les groupes de sécurité.

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

Charger votre modèle AWS CloudFormation mis à jour

  1. Ouvrez la console AWS CloudFormation.
  2. Choisissez Create Stack (Créer une pile).
  3. Pour Choose a template (Choisir un modèle), choisissez Upload a template to Amazon S3 (Charger un modèle dans Amazon S3), puis le modèle AWS CloudFormation que vous avez modifié pour inclure les stratégies de suppression.
  4. Sélectionnez Next (Suivant).
  5. Pour Stack name (Nom de la pile), saisissez le nom de votre pile, puis cliquez sur Next (Suivant).
  6. Sur la page Options, choisissez les options appropriées pour votre pile, puis cliquez sur Next (Suivant).
  7. Sélectionnez Create (Créer).

Test de l'attribut DeletionPolicy (Politique de suppression)

  1. Supprimez la pile AWS CloudFormation.
  2. Vérifiez que les ressources ayant la stratégie Retain (Conserver) sont toujours disponibles après la suppression de la pile.

Pour l'exemple d'extrait de modèle dans cette solution, vous pouvez vérifier l'aboutissement de la stratégie Retain (Conserver) en suivant la procédure ci-dessous après avoir supprimé la pile AWS CloudFormation.

  1. Ouvrez la console Amazon EC2.
  2. Sur le volet de navigation, dans la section Network & Security (Réseau et sécurité), choisissez Security Groups (Groupes de sécurité).
  3. Vérifiez que les groupes de sécurité ayant la stratégie Retain (Conserver) sont toujours disponibles.