Objectif
Ce lab vous guide dans l’utilisation de S3 Object Lambda, une fonctionnalité qui permet d’exécuter une fonction AWS Lambda pour modifier les objets S3 à la volée avant qu’ils ne soient retournés à l’utilisateur.
Nous allons :
- Créer un bucket S3 et y stocker un fichier texte.
- Créer une fonction AWS Lambda pour modifier le contenu du fichier avant qu’il ne soit renvoyé.
- Créer un S3 Object Lambda Access Point.
- Tester la transformation via AWS CLI.
Prérequis
✅ Un compte AWS avec IAM ayant les permissions nécessaires (s3:CreateAccessPoint, s3-object-lambda:*, lambda:*).
✅ AWS CLI installé et configuré.
Étape 1 : Création d’un bucket S3
- Accédez à la console AWS > S3.
- Cliquez sur Créer un bucket.
- Nom du bucket : my-object-lambda-bucket.
- Région : Sélectionnez votre région (ex : us-east-1).
- Désactivez le blocage d’accès public.
- Cliquez sur Créer un bucket.
Étape 2 : Téléverser un fichier texte
- Accédez à votre bucket S3 > Onglet “Objets”.
- Cliquez sur Téléverser > Ajoutez un fichier sample.txt contenant :
- Cliquez sur Téléverser.
Étape 3 : Créer une fonction AWS Lambda
Nous allons créer une fonction Lambda qui remplace du texte dans les objets S3 avant qu’ils ne soient renvoyés.
1. Accéder à AWS Lambda
- Allez sur AWS Lambda > Créer une fonction.
- Nom de la fonction : S3ObjectLambdaTransform.
- Runtime : Python 3.9.
- Rôle IAM : Sélectionnez Créer un nouveau rôle avec des permissions de base Lambda.
2. Ajouter le code suivant
Dans l’éditeur AWS Lambda, remplacez le contenu par :
import boto3
import json
def lambda_handler(event, context):
# Lire l'objet original
s3 = boto3.client('s3')
object_context = event["getObjectContext"]
request_route = object_context["outputRoute"]
request_token = object_context["outputToken"]
# Télécharger le fichier original
response = s3.get_object(Bucket=event["configuration"]["sourceBucket"], Key=event["configuration"]["key"])
content = response["Body"].read().decode("utf-8")
# Transformation du contenu
transformed_content = content.replace("AWS S3 Object Lambda", "AWS Object Lambda 🚀")
# Retourner le nouvel objet transformé
s3.write_get_object_response(
Body=transformed_content,
RequestRoute=request_route,
RequestToken=request_token
)
return {
"statusCode": 200,
"body": json.dumps("Transformation appliquée avec succès !")
}
3. Ajouter des permissions IAM
- Accédez à la section Permissions > Rôle IAM.
- Ajoutez les permissions AmazonS3FullAccess et AWSLambdaBasicExecutionRole.
- Enregistrez la fonction.
Étape 4 : Créer un S3 Object Lambda Access Point
- Allez dans AWS S3 > Access Points.
- Cliquez sur Créer un Access Point.
- Nom : my-object-lambda-ap.
- Bucket : my-object-lambda-bucket.
- Créer un Access Point Lambda > Activer S3 Object Lambda.
- Sélectionner la fonction Lambda : S3ObjectLambdaTransform.
- Enregistrez l’Access Point.
Étape 5 : Tester l’accès via AWS CLI
Récupérez l’ARN de l’Access Point et exécutez la commande suivante pour voir l’objet transformé :
aws s3api get-object --bucket arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/my-object-lambda-ap --key sample.txt sample-transformed.txt
✅ Ouvrez sample-transformed.txt et vous verrez :
Bienvenue sur AWS Object Lambda 🚀 !
Conclusion
✅ S3 Object Lambda permet de modifier dynamiquement les objets avant qu’ils ne soient renvoyés.
✅ Plus besoin de stocker plusieurs versions modifiées des fichiers.
✅ Idéal pour le filtrage de données, la conversion de formats, ou la personnalisation de contenu.