Ce projet implémente un pipeline serverless sur AWS permettant de traiter automatiquement des images. Lorsqu'une image est déposée dans un bucket S3 source, une première fonction Lambda la déplace vers un bucket intermédiaire. Ce dépôt déclenche automatiquement une seconde fonction Lambda qui génère une miniature et la stocke dans un bucket de destination.
L'ensemble de l'infrastructure est provisionné avec Terraform, illustrant les bonnes pratiques IAM : resource-based policies, execution roles avec le principe du moindre privilège, et Lambda Layers pour les dépendances externes.
- Terraform installé (version >= 1.0)
- AWS CLI installé et configuré
- Un compte AWS avec les droits suffisants
- Python 3.11
Configuration des credentials AWS :
aws configure
# AWS Access Key ID
# AWS Secret Access Key
# Default region : us-east-1
# Default output format : json- Cloner le repo
git clone https://github.com/inaleoby/aws-lambda-terraform
cd aws-lambda-terraform/terraform- Initialiser Terraform
terraform init- Vérifier les ressources à créer
terraform plan- Déployer l'infrastructure
terraform applyUploader une image JPEG dans le bucket source :
Option 1 - Console AWS
S3 → espoir-bucket-source → Upload → choisir une image JPEG
Option 2 - AWS CLI
aws s3 cp mon-image.jpeg s3://espoir-bucket-source/Option 3 - CloudShell (sans installation locale)
# Ouvrir CloudShell depuis la console AWS
aws s3 cp mon-image.jpeg s3://espoir-bucket-source/Vérifier les résultats :
espoir-bucket-middle → l'image originale
espoir-bucket-destination/thumbnails/ → la miniature 128x128
En cas d'erreur, consulter les logs CloudWatch :
Lambda → MoveToS3Function → Monitor → View CloudWatch logs
Lambda → CreateThumbnailFunction → Monitor → View CloudWatch logs
Détruire toutes les ressources créées :
terraform destroyImportant : les buckets S3 doivent être vides avant la destruction. Le projet utilise force_destroy = true donc Terraform vide les buckets automatiquement avant de les supprimer.
aws-lambda-terraform/
├── terraform/
│ ├── main.tf → buckets S3, fonctions Lambda, triggers
│ ├── iam.tf → rôles et policies IAM
│ └── terraform.tf → configuration du provider AWS
├── lambda/
│ ├── lambda1/
│ │ └── moveToS3Function.py
│ └── lambda2/
│ └── CreateThumbnailFunction.py
├── docs/
│ └── architecture.png
└── README.md
Réalisé par : Kofi Inale OBYMPE
GitHub : https://github.com/inaleoby
Lab inspiré par le cours de Amadou Merico. linkedin : https://www.linkedin.com/in/amadoumerico
