J'ai un seau S3 comme ressource dans mon modèle CloudFormation. Avec DeletionPolicy
mis à Retain
. Cela fonctionne comme prévu: lors de la suppression de la pile, il conserve effectivement le compartiment. Cependant, lorsque je tente de créer à nouveau la pile, la création échoue lors de la tentative de création du même compartiment, un message d'erreur indiquant que celui-ci existe déjà.
Que dois-je ajouter à mon modèle CloudFormation pour qu'il ne tente pas de recréer une ressource déjà existante?
Le fragment pertinent de mon modèle est le suivant:
"Resources": {
"SomeS3Bucket" : {
"Type" : "AWS::S3::Bucket",
"DeletionPolicy" : "Retain",
"Properties": {
"BucketName": "SomeS3Bucket"
}
}
Réponses:
Une approche consiste à ajouter un paramètre d'entrée au modèle CloudFormation pour indiquer qu'un compartiment existant doit être utilisé.
Utilisez les clauses Condition dans le modèle pour créer le compartiment uniquement si le paramètre indique qu'il est nécessaire.
la source
CloudFormation utilise des balises avec le préfixe "aws:" pour garder une trace des ressources associées à quelles entrées dans quelles piles - c'est l'état "réel" qu'il utilise pour se comparer à un modèle avant de décider quoi ajouter / supprimer / mettre à jour.
En tant qu'utilisateur, vous ne pouvez pas ajouter, éditer ou supprimer de telles balises.
Donc, si vos ressources existantes ne possèdent pas ces balises, ou si elles n'ont pas les valeurs correctes pour ces balises, elles ne sont pas considérées comme faisant partie de la nouvelle pile et je ne vois pas de moyen de changer cela.
la source
J'essaie d'automatiser cela aussi, car il semble que cela ne peut pas être fait uniquement avec le modèle Cloudformation. Le processus auquel je songe:
temp-$originalbucketname
$originalbucketname
temp-$originalbucketname
C'est un processus très compliqué, selon la taille du compartiment, cela peut prendre des heures car la plupart des étapes sont O (n) avec le nombre de clés.
On pourrait penser que Cloudformation est la couche de base de l’automatisation AWS, mais je pense que c’est juste un monstre (assez limité) rassemblant des API byzantines pour tous leurs services.
la source