Aller au contenu principal

Introduction à AWS CloudFormation


Qu'est-ce que CloudFormation ?

AWS CloudFormation est un service qui vous permet de modéliser et de provisionner des ressources AWS de manière automatisée et répétable.

Principe de base


Concepts clés

1. Template

Un template est un fichier YAML ou JSON qui décrit les ressources AWS à créer.

AWSTemplateFormatVersion: '2010-09-09'
Description: Mon premier template CloudFormation

Resources:
MonBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: mon-bucket-unique-12345

2. Stack

Une stack est une collection de ressources AWS gérée comme une unité.

3. Change Set

Un change set permet de prévisualiser les modifications avant de les appliquer.

4. Stack Events

Les events tracent toutes les opérations sur la stack.


CloudFormation vs Terraform

AspectCloudFormationTerraform
ProviderAWS uniquementMulti-cloud
LangageYAML/JSONHCL
StateGéré par AWSFichier local ou remote
CoûtGratuitGratuit (Open Source)
Drift DetectionIntégréLimité
RollbackAutomatiqueManuel
ModulesNested StacksModules natifs
Quand utiliser CloudFormation ?
  • Infrastructure 100% AWS
  • Besoin de rollback automatique
  • Équipe déjà familière avec AWS
  • Intégration avec AWS Organizations

Workflow CloudFormation

Étapes du workflow

  1. Écrire : Créer le template YAML/JSON
  2. Valider : Vérifier la syntaxe
  3. Créer/Mettre à jour : Déployer la stack
  4. Surveiller : Vérifier les events
  5. Maintenir : Gérer le cycle de vie

Premier template

Créons un bucket S3 simple :

AWSTemplateFormatVersion: '2010-09-09'
Description: Création d'un bucket S3 simple

Resources:
MyS3Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub 'my-first-bucket-${AWS::AccountId}'
Tags:
- Key: Environment
Value: Development
- Key: ManagedBy
Value: CloudFormation

Déploiement via CLI

# Valider le template
aws cloudformation validate-template \
--template-body file://template.yaml

# Créer la stack
aws cloudformation create-stack \
--stack-name my-first-stack \
--template-body file://template.yaml

# Vérifier le statut
aws cloudformation describe-stacks \
--stack-name my-first-stack

# Voir les events
aws cloudformation describe-stack-events \
--stack-name my-first-stack

Déploiement via Console

  1. Ouvrir la console CloudFormation
  2. Cliquer Create stack
  3. Uploader le template
  4. Nommer la stack
  5. Configurer les options
  6. Reviewer et créer

États d'une Stack

ÉtatDescription
CREATE_IN_PROGRESSCréation en cours
CREATE_COMPLETECréation réussie
CREATE_FAILEDCréation échouée
UPDATE_IN_PROGRESSMise à jour en cours
DELETE_IN_PROGRESSSuppression en cours
ROLLBACK_IN_PROGRESSRollback en cours

Régions et disponibilité

CloudFormation est disponible dans toutes les régions AWS. Chaque stack est créée dans une région spécifique.

# Créer dans une région spécifique
aws cloudformation create-stack \
--stack-name my-stack \
--template-body file://template.yaml \
--region eu-west-1

# Lister les stacks d'une région
aws cloudformation list-stacks \
--region eu-west-1 \
--stack-status-filter CREATE_COMPLETE UPDATE_COMPLETE

Limites et quotas

LimiteValeur
Taille max template (S3)1 MB
Taille max template (direct)51,200 bytes
Ressources par stack500
Stacks par compte/région2000
Paramètres par template200
Outputs par template200
Mappings par template200

Commandes CLI essentielles

# Créer une stack
aws cloudformation create-stack \
--stack-name NAME \
--template-body file://template.yaml

# Mettre à jour une stack
aws cloudformation update-stack \
--stack-name NAME \
--template-body file://template.yaml

# Supprimer une stack
aws cloudformation delete-stack \
--stack-name NAME

# Lister les stacks
aws cloudformation list-stacks

# Décrire une stack
aws cloudformation describe-stacks \
--stack-name NAME

# Créer un change set
aws cloudformation create-change-set \
--stack-name NAME \
--change-set-name my-changes \
--template-body file://template.yaml

# Exécuter un change set
aws cloudformation execute-change-set \
--stack-name NAME \
--change-set-name my-changes

Résumé

  • CloudFormation est le service IaC natif d'AWS
  • Les templates décrivent l'infrastructure
  • Les stacks regroupent les ressources
  • Les change sets permettent de prévisualiser
  • Le rollback est automatique en cas d'erreur

← Table des matières | Bases des Templates →