Cours > Module > Chapitre

Lab : Utilisation de S3 Object Lambda pour Transformer des Objets à la Volée

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 :

  1. Créer un bucket S3 et y stocker un fichier texte.
  2. Créer une fonction AWS Lambda pour modifier le contenu du fichier avant qu’il ne soit renvoyé.
  3. Créer un S3 Object Lambda Access Point.
  4. 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

  1. Accédez à la console AWS > S3.
  2. Cliquez sur Créer un bucket.
  3. Nom du bucket : my-object-lambda-bucket.
  4. Région : Sélectionnez votre région (ex : us-east-1).
  5. Désactivez le blocage d’accès public.
  6. Cliquez sur Créer un bucket.

Étape 2 : Téléverser un fichier texte

  1. Accédez à votre bucket S3 > Onglet “Objets”.
  2. Cliquez sur Téléverser > Ajoutez un fichier sample.txt contenant :
  3. 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

  1. Allez dans AWS S3 > Access Points.
  2. Cliquez sur Créer un Access Point.
  3. Nom : my-object-lambda-ap.
  4. Bucket : my-object-lambda-bucket.
  5. Créer un Access Point Lambda > Activer S3 Object Lambda.
  6. Sélectionner la fonction Lambda : S3ObjectLambdaTransform.
  7. 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.

×

Panier