Comment conserver certaines de mes ressources lors de la suppression d’une pile AWS CloudFormation ?

Lecture de 4 minute(s)
0

Je souhaite supprimer une pile AWS CloudFormation nouvelle ou existante, mais je ne souhaite pas supprimer toutes les ressources de la pile.

Brève description

Pour pouvoir conserver certaines ressources lorsque vous supprimez une pile, vous devez utiliser l'attribut DeletionPolicy dans votre modèle CloudFormation.

Avant de supprimer une pile, veillez à spécifier l'option de politique Conserver, Instantané ou Supprimer pour chaque ressource que vous souhaitez conserver :

  • L'option Conserver permet de conserver la ressource en cas de suppression de la pile.
  • L'option Instantané crée un instantané de la ressource avant sa suppression.
    Remarque : cette option est uniquement disponible pour les ressources qui prennent en charge les instantanés.
  • L'option Supprimer supprime la ressource en même temps que la pile.
    Remarque : cette option est le résultat par défaut si l’attribut DeletionPolicy n’est pas configuré.

Résolution

Les étapes suivantes expliquent comment utiliser l'option Conserver pour DeletionPolicy afin d'empêcher la suppression de ressources lors de la suppression d'une pile CloudFormation.

Spécification des attributs DeletionPolicy dans le modèle AWS CloudFormation

Dans votre modèle CloudFormation, saisissez Retain (Conserver) en tant qu’attribut DeletionPolicy pour les ressources que vous souhaitez conserver. Dans les exemples de modèles JSON et YAML suivants, la politique Retain est spécifiée pour les ressources 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

Chargement du modèle CloudFormation mis à jour

  1. Ouvrez la console AWS CloudFormation.
  2. S’il s’agit d’une nouvelle pile, choisissez l’option Créer une pile. S’il s’agit d’une pile existante, sélectionnez la pile que vous souhaitez mettre à jour, puis choisissez Mettre à jour la pile.
  3. Dans Choisir un modèle, sélectionnez Charger un modèle sur Amazon S3, puis choisissez le modèle CloudFormation auquel vous avez ajouté des politiques de suppression.
  4. Sélectionnez Suivant.
  5. Si vous créez une nouvelle pile, saisissez son nom dans le champ Nom de la pile, puis sélectionnez Suivant.
  6. Sur la page Options, sélectionnez les options appropriées pour votre pile, puis choisissez Suivant.
  7. Sélectionnez Créer.

Test de l'attribut DeletionPolicy

  1. Supprimez la pile AWS CloudFormation.
  2. Vérifiez que les ressources associées à l'option Conserver pour DeletionPolicy sont toujours disponibles après suppression de la pile. Vous pouvez consulter les ressources dans leurs services respectifs à l'aide de la console de gestion AWS ou de l'AWS CLI.

Par exemple, une fois la pile CloudFormation supprimée, vous pouvez vérifier que la politique Conserver a bien été appliquée aux modèles cités plus haut en suivant ces étapes :

  1. Ouvrez la console Amazon EC2.
  2. Dans le panneau de navigation de la section Réseau et sécurité, choisissez Groupes de sécurité.
  3. Vérifiez que les groupes de sécurité associés à la politique Conserver sont toujours disponibles.

Informations connexes

Création d'une pile dans la console AWS CloudFormation

Comment empêcher les ressources de ma pile CloudFormation d'être supprimées ou mises à jour ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans