Comment puis-je retenir certaines de mes ressources lorsque je supprime une pile AWS CloudFormation ?

Lecture de 4 minute(s)
0

Je souhaite supprimer une pile AWS CloudFormation nouvelle ou existante, sans pour autant supprimer toutes les ressources de la pile.

Brève description

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

Avant de supprimer une pile, veillez à spécifier les options de politique Retenir, Instantané ou Supprimer pour chaque ressource que vous souhaitez conserver :

  • L’option Retenir 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 vous montrent comment utiliser l’option Retenir pour DeletionPolicy afin d’empêcher la suppression des ressources lors d’une suppression de la pile CloudFormation.

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

Dans votre modèle CloudFormation, saisissez Retenir comme politique de suppression (DeletionPolicy) pour les ressources que vous souhaitez conserver. Dans les exemples de modèles JSON et YAML suivants, la politique Retenir 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

Charger votre 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. En revanche, 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 Retenir 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 que vous avez supprimé la pile CloudFormation, vous pouvez vérifier si la politique Retenir des modèles précédents a été appliquée efficacement.

  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 Retenir sont toujours disponibles.

Informations connexes

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

Comment puis-je éviter la suppression ou la mise à jour des ressources de ma pile CloudFormation ?

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