Quelqu'un peut-il m'expliquer clairement la différence et la priorité entre AWS CLI Cloudformationcreate-stack
et deploy
commandes? Pour moi, il semble qu'ils font la même chose et déploient des ressources.
Pourquoi, lorsque vous exécutez la commande deploy à partir de la cli, la pile de création n'a aucun ensemble de modifications exécutables, tandis que la documentation dit:
Déploie le modèle AWS CloudFormation spécifié en créant puis en exécutant un ensemble de modifications. La commande se termine après qu'AWS CloudFormation ait exécuté l'ensemble de modifications. Si vous souhaitez afficher l'ensemble de modifications avant qu'AWS CloudFormation ne l'exécute, utilisez l'indicateur --no-execute-changeset.
create-stack
ne peut être utilisé que lorsque vous savez que vous souhaitez créer une nouvelle pile. Si vous souhaitez mettre à jour une pile, vous devez utiliser une commande différente, etc. Si vous écrivez des fichiers batch (ug) pour vous aider à exécuter votre cloudformation, cela peut être très difficile.
deploy
est une fonctionnalité permettant de mieux tirer parti des ensembles de modifications - plutôt que d'avoir à savoir si une pile existe, vous pouvez simplement exécuter deploy et l'outil déterminera ce qu'il doit faire. Avec le --no-execute-changeset
, il vous fournira en fait la commande nécessaire si vous décidez de revoir les modifications avant de les appliquer.
Il semble que cela ait été introduit en novembre 2016, probablement au moment de la publication des ensembles de modifications.
Je suppose que deploy
n'est que du "sucre syntaxique" autour des méthodes api CreateChangeSet
, CreateStack
et UpdateStack
.
Notez que bien que deploy
soit dans la CLI , c'est pas dans la référence API .
Je suppose que deploy
est préféré en dehors de tout besoin de revoir explicitement un ensemble de modifications. Sans utiliser deploy
, vous auriez potentiellement besoin de create-change-set
puis décidez de créer ou de mettre à jour une pile. Dans ce cas, deploy est comme une pile "upsert".
J'ai cessé d'être paresseux et j'ai vérifié le code, et oui - deploy
est finalement une meilleure façon d'utiliser cloudformation de la CLI. L'implémentation est ici et ici . Notez qu'à ce jour, la possibilité de contrôler le comportement de restauration n'existe pas pour deploy
par ce problème .