Tous les articles
15 février 20257 min de lecture

Structurer ses modules Terraform pour AWS Serverless

Comment organiser vos modules Terraform/Terragrunt pour une infrastructure AWS serverless maintenable et scalable.

TerraformAWSIaCDevOps

Le problème

Beaucoup de projets Terraform démarrent bien mais deviennent rapidement ingérables : un seul state monolithique, du copier-coller entre environnements, des plans qui prennent 10 minutes.

Architecture de modules recommandée

infra/
├── modules/
│   ├── api-gateway/     # Module API Gateway
│   ├── lambda/          # Module Lambda générique
│   ├── dynamodb/        # Module DynamoDB
│   ├── monitoring/      # Module CloudWatch + alertes
│   └── networking/      # Module VPC / Security Groups
├── environments/
│   ├── dev/
│   ├── staging/
│   └── prod/
└── terragrunt.hcl       # Config Terragrunt racine

Principes clés

  1. Un module = une responsabilité : séparez API Gateway, Lambda, DynamoDB
  2. Variables typées : utilisez les types complexes de Terraform
  3. Outputs explicites : chaque module expose ce dont les autres ont besoin
  4. Terragrunt pour le DRY : évitez la duplication entre environnements

Module Lambda réutilisable

Un bon module Lambda doit accepter :

  • Le code source (S3 ou local)
  • La configuration mémoire/timeout
  • Les variables d'environnement
  • Les policies IAM additionnelles
  • La configuration de monitoring

Terragrunt : le game changer

Terragrunt élimine la duplication entre environnements. Un seul terragrunt.hcl par environnement qui référence les modules avec des variables spécifiques.

Résultats observés

  • Plans Terraform passés de 10min à 30s
  • Onboarding d'un nouveau dev : 1 jour au lieu de 1 semaine
  • Déploiements reproductibles et auditables
  • Drift detection automatisée

Besoin de structurer votre IaC ? Contactez-moi.


AV

Antoine Vivies

Tech Lead Backend & Architecte AWS Serverless

LinkedIn