Comment puis-je accélérer le processus de débogage des modèles, ou suis-je condamné à toujours remarquer mes erreurs une demi-heure après les avoir commises ?
Voici quelques suggestions de meilleures pratiques, axées spécifiquement sur l'amélioration de la vitesse d'itération du développement de modèles CloudFormation complexes :
Utiliser les outils CloudFormation pour valider les modèles et les mises à jour des piles.
AWS les a déjà soulignés dans sa propre Meilleures pratiques document, donc je ne les répéterai pas :
Cette étape a pour but de détecter les erreurs évidentes de syntaxe ou de logique avant d'effectuer la création ou la mise à jour d'une pile.
Tester les ressources de manière isolée
Avant d'utiliser une ressource CloudFormation individuelle dans une pile complexe, assurez-vous de bien comprendre toute l'étendue du comportement de création/mise à jour/suppression de cette ressource, y compris les limites d'utilisation et les temps de démarrage/arrêt typiques, en testant d'abord leur comportement dans des piles autonomes plus petites.
- Si vous développez ou utilisez des ressources personnalisées tierces, écrivez des tests unitaires en utilisant les bibliothèques appropriées pour la plate-forme linguistique, afin de vous assurer que la logique de l'application se comporte comme prévu dans tous les cas d'utilisation.
- Sachez que le temps nécessaire à la création/mise à jour/suppression d'une ressource individuelle peut varier considérablement d'un type de ressource à l'autre, en fonction du comportement des appels API sous-jacents. Par exemple, une ressource complexe
AWS::CloudFront::Distribution
ressource peut parfois prendre 30 à 60 minutes à créer/mettre à jour/supprimer, tandis qu'une AWS::EC2::SecurityGroup
mises à jour en secondes.
- Les ressources individuelles peuvent présenter des bogues/problèmes/limitations dans leur mise en œuvre, qui sont beaucoup plus faciles à déboguer et à développer des solutions de contournement lorsqu'elles sont testées isolément, plutôt que dans une pile beaucoup plus grande. Gardez à l'esprit les limitations telles que Limites des services AWS selon les paramètres de votre compte AWS individuel, ou Région Disponibilité des services en fonction de la région dans laquelle vous créez votre pile.
Construisez des piles compliquées par petits incréments
Lors de la création ou de la mise à jour d'une pile, l'échec d'une seule ressource entraîne le retour en arrière de l'ensemble des modifications apportées à la ressource, ce qui peut détruire inutilement d'autres ressources créées avec succès et prendre beaucoup de temps lors de la construction d'une pile complexe avec un long graphe de dépendance des ressources associées.
La solution consiste à construire votre pile progressivement, par petits lots de mise à jour, en ajoutant des ressources une (ou quelques) fois à la fois. De cette façon, si un échec survient lors de la création ou de la mise à jour d'une ressource, le retour en arrière n'entraîne pas la destruction de l'ensemble des ressources de votre pile, mais uniquement de l'ensemble des ressources modifiées lors de la dernière mise à jour.
Suivre l'évolution des mises à jour de la pile
Veillez à Suivez l'évolution de la mise à jour de votre pile en visualisant les événements de la pile pendant qu'une création/mise à jour est effectuée. Ce sera le point de départ pour déboguer d'autres problèmes avec les ressources individuelles.