Je veux supprimer une pile AWS CloudFormation nouvelle ou existante, mais je ne veux pas supprimer toutes les ressources de la pile. Comment puis-je conserver certaines de ses ressources tout en supprimant 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, assurez-vous de spécifier l'option de politique Retain (Conserver), Snapshot (Instantané) ou Delete (Supprimer) pour chaque ressource que vous souhaitez conserver :
- L'option Retain (Conserver) permet de conserver la ressource en cas de suppression de la pile.
- L'option Snapshot (Instantané) permet de créer 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.
Résolution
Les étapes suivantes expliquent comment utiliser l'option Retain (Conserver) pour DeletionPolicy afin d'empêcher la suppression de ressources lors de la suppression d'une pile CloudFormation.
Spécifiez les attributs DeletionPolicy dans le modèle AWS CloudFormation.
Dans votre modèle AWS CloudFormation, saisissez Retain (Conserver) comme politique DeletionPolicy pour les ressources que vous souhaitez conserver. Dans les exemples de modèles JSON et YAML suivants, la politique Retain (Conserver) 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
- Ouvrez la console AWS CloudFormation.
- Pour une nouvelle pile, choisissez Create Stack (Créer une pile). Pour une pile existante, sélectionnez la pile que vous souhaitez mettre à jour, puis choisissez Update Stack (Mettre à jour la pile).
- 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 CloudFormation que vous avez modifié afin d'inclure les politiques de suppression.
- Choisissez Next (Suivant).
- Si vous créez une nouvelle pile, pour Stack Name (Nom de la pile), saisissez un nom pour votre pile, puis choisissez Next (Suivant).
- Sur la page Options, sélectionnez les options appropriées pour votre pile, puis choisissez Next (Suivant).
- Choisissez Create (Créer).
Test de l'attribut DeletionPolicy (Politique de suppression)
- Supprimez la pile AWS CloudFormation.
- Vérifiez que les ressources ayant l'option Retain (Conserver) pour DeletionPolicy sont toujours disponibles après la suppression de la pile. Vous pouvez consulter les ressources de leurs services respectifs à l'aide de la console de gestion AWS ou d'AWS CLI.
Par exemple, vous pouvez vérifier le succès de la politique Retain (Conserver) pour les modèles précédents en suivant les étapes ci-dessous après avoir supprimé la pile CloudFormation.
- Ouvrez la console Amazon EC2.
- Sur le panneau de navigation, dans la section Network & Security (Réseau et sécurité), choisissez Security Groups (Groupes de sécurité).
- Vérifiez que les groupes de sécurité ayant la politique Retain (Conserver) sont toujours disponibles.
Informations connexes
Création d'une pile dans la console AWS CloudFormation
Comment empêcher les ressources dans ma pile AWS CloudFormation d'être supprimées ou mises à jour ?