Clément Schanen

Gestion et gouvernanceService régional

CloudFormation

Permet de définir, déployer et gérer une infrastructure AWS via des templates JSON ou YAML

Cas d’utilisations

  • Automatiser la création d’environnements cohérents et reproductibles
  • Versionner le code de l’infrastructure
  • Faciliter le partage et la collaboration dans une équipe
  • Déployer la même architecture dans plusieurs comptes ou régions
  • Intégrer au CI/CD pour un déploiement continu

Fonctionnement

  1. Écriture du template (JSON/YAML)
  2. Déploiement d’une stack CloudFormation appelle automatiquement les APIs AWS
  3. Gestion : mise à jour via Change Sets, rollback automatique en cas d’erreur, suppression simple

Fonctionnalités

  • Drift Detection : vérifie si l’infrastructure réelle diffère du template
  • Change Set : aperçu des modifications avant déploiement
  • StackSet : déploiement multi-comptes et multi-régions
  • Rollback : retour à l’état précédent en cas d’échec
  • Intégration avec les autres services AWS
    • SNS notifications lors des déploiements
    • Support de la majorité des services AWS (pas 100 %)

Concepts clés

  • Template : fichier décrivant l’infrastructure, composants principaux :
    • AWSTemplateFormatVersion
    • Resources (obligatoire)
    • Parameters, Mappings, Conditions
    • Outputs (export)
    • Transform (SAM, macros)
  • Stack : instance du template déployée (régional)
  • Nested stacks : permet de factoriser des architectures complexes

Certaines ressources sont immuables. Elles ne peuvent pas être modifiées (par exemple renommer un bucket S3)

Bonnes pratiques

  • Paramétrer plutôt que coder en dur : utiliser Parameters, Mappings et Conditions pour rendre les templates réutilisables et adaptables
  • Modulariser : privilégier les templates imbriqués (nested stacks) pour éviter les gros fichiers monolithiques et favoriser la réutilisation
  • Outputs : utiliser les Outputs pour partager des valeurs entre stacks
  • Nommer clairement : respecter une convention de nommage cohérente pour stacks, ressources et paramètres
  • Automatiser la validation : tester les templates avec cfn-lint par exemple