110 votes

Comment puis-je déboguer rapidement et efficacement les modèles CloudFormation ?

CloudFormation est une offre puissante d'AWS qui permet la création programmatique de piles de ressources AWS, telles que le système de gestion de l'information (SGI). le niveau web d'une application, a cluster de calcul haute performance, o une pile d'applications complète, avec un seul appel API. C'est un outil extrêmement puissant. L'utiliser est sûrement considéré comme une bonne pratique AWS, surtout lorsqu'elle est combinée avec Chef, Marionnette, o cloud-init. Le déboguer me pousse au vice.

Prenons un exemple de production : Le stock modèles de cluster mongodb ne fonctionnera pas pour moi. Je ne sais pas vraiment pourquoi. Je suis sûr que c'est quelque chose de simple, comme c'est presque toujours le cas. Mon problème n'est pas que je n'arrive pas à comprendre ce qui ne va pas. C'est qu'il faut à la pile entre 20 et 30 minutes pour échouer, puis encore trois ou quatre minutes pour supprimer, en supposant qu'elle supprime les ressources correctement.

Qu'est-ce que je rate ? Je suis au courant de la --disable-rollback et l'utiliser comme de l'oxygène. J'ai appris il y a longtemps à emballer les messages de sortie avec cfn-signal et de les jeter comme du lest sur un bateau qui coule. Comment puis-je accélérer le processus de débogage des modèles, ou suis-je condamné à constater mes erreurs une demi-heure après les avoir commises ?

1voto

Mikelax Points 431

Une nouvelle fonctionnalité récemment ajoutée à Cloudformation en décembre dernier a été l'ajout de Types de paramètres supplémentaires . Ces nouveaux types permettent à vos modèles d'effectuer une vérification plus poussée des données, et peuvent également "échouer rapidement" lors de la création de ressources et de piles Cloudformation imbriquées. Vous avez également la possibilité de fournir des messages d'erreur personnalisés plus agréables à lire lorsque des valeurs non valides sont transmises à l'aide de la nouvelle fonction Attribut ConstraintDescription .

Les nouveaux types sont particulièrement utiles lorsqu'il s'agit de traiter diverses ressources VPC. Vous pouvez vous assurer que les paramètres de vos modèles sont du bon type et qu'ils sont explicites quant à l'attente d'une valeur unique ou d'une liste.

Par exemple :

"Parameters" : {
  "SingleGroup": { "Type": "AWS::EC2::SecurityGroup::Id", ...},
  "GroupList": {"Type": "List<AWS::EC2::SecurityGroup::Id>", ...}
}

1voto

WillRubel Points 11

Veuillez consulter mon validateur de cloudformation à l'adresse https://pypi.org/project/cloudformation-validator/

Cela permettra de valider le schéma, puis de valider à nouveau une liste de règles, et d'autoriser des règles personnalisées. Il permet également une intégration facile avec les outils de déploiement.

0voto

VictorPro Points 29

Vous pouvez également utiliser le CloudFormation Designer disponible sur Amazon ici : https://console.aws.amazon.com/cloudformation/designer/home?region=us-east-1

Il suffit de coller votre modèle (JSON) dans le volet "Modèle", puis de cliquer sur le symbole de coche pour valider votre modèle. Toute erreur apparaîtra dans le volet "Erreur".

J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X