web-dev-qa-db-fra.com

AWS CloudFormation créer-pile vs déployer

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.

15
nixmind

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.

18
chris

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 .

5
Kirk Broadhurst