Didacticiel : Transformation de données pour votre application avec S3 Object Lambda - Amazon Simple Storage Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Didacticiel : Transformation de données pour votre application avec S3 Object Lambda

Lorsque vous stockez des données dans Amazon S3, vous pouvez facilement les partager pour utilisation par plusieurs applications. Cependant, chaque application peut avoir des exigences de format de données uniques et nécessiter une modification ou un traitement de vos données pour un cas d’utilisation particulier. Par exemple, un jeu de données créé par une application de commerce électronique peut inclure des données d’identification personnelle (PII). Lorsque les mêmes données sont traitées à des fins analytiques, ces DCPI ne sont pas nécessaires et doivent être supprimées. Toutefois, si le même jeu de données est utilisé pour une campagne marketing, vous devrez peut-être enrichir les données avec des détails supplémentaires, comme des informations provenant de la base de données de fidélisation des clients.

Avec S3 Object Lambda, vous pouvez ajouter votre propre code pour traiter les données récupérées à partir de S3 avant de les renvoyer vers une application. Plus précisément, vous pouvez configurer une AWS Lambda fonction et l'associer à un point d'accès Lambda S3 Object. Lorsqu’une application envoie des demandes GET S3 standard via le point d’accès S3 Object Lambda, la fonction Lambda indiquée est invoquée pour traiter toutes les données extraites d’un compartiment S3 via le point d’accès S3 de prise en charge. Ensuite, le point d’accès S3 Object Lambda renvoie le résultat transformé à l’application. Vous pouvez créer et exécuter vos propres fonctions Lambda personnalisées, en adaptant la transformation des données S3 Object Lambda à votre cas d’utilisation particulier, sans devoir modifier vos applications.

Diagramme de flux de travail S3 Object Lambda.
Objectif

Dans ce didacticiel, vous apprendrez à ajouter du code personnalisé aux demandes GET S3 standard pour modifier l’objet demandé récupéré à partir de S3 afin que l’objet réponde aux besoins du client ou de l’application demandeur. Plus précisément, vous apprendrez à transformer en majuscules tout le texte de l’objet original stocké dans S3 grâce à S3 Object Lambda.

Note

Ce didacticiel utilise le code Python pour transformer les données. Pour des exemples, AWS SDKs voir Transformer des données pour votre application avec S3 Object Lambda dans la bibliothèque d'exemples de code du AWS SDK.

Prérequis

Avant de commencer ce didacticiel, vous devez disposer d'un utilisateur Compte AWS auquel vous pouvez vous connecter en tant qu'utilisateur AWS Identity and Access Management (IAM) avec les autorisations appropriées. Vous devez également installer Python 3.8 ou version ultérieure.

Créez un utilisateur IAM avec des autorisations dans votre Compte AWS (console)

Vous pouvez créer un utilisateur IAM pour le didacticiel. Pour terminer ce didacticiel, votre utilisateur IAM doit joindre les politiques IAM suivantes pour accéder aux AWS ressources pertinentes et effectuer des actions spécifiques. Pour en savoir plus sur la création d’un utilisateur IAM, consultez Créer des utilisateurs IAM (console) dans le guide de l’utilisateur IAM.

Votre utilisateur IAM requiert les politiques suivantes :

Note

Pour des raisons de simplicité, ce didacticiel crée et utilise un utilisateur IAM. Après avoir terminé ce didacticiel, n’oubliez pas de Supprimer l’utilisateur IAM. Pour une utilisation en production, nous vous recommandons de suivre les Bonnes pratiques de sécurité dans IAM dans le Guide de l’utilisateur IAM. Une bonne pratique requiert que les utilisateurs humains utilisent une fédération avec un fournisseur d’identité pour accéder à AWS avec des informations d’identification temporaires. Une autre bonne pratique consiste à exiger que les charges de travail utilisent des informations d’identification temporaires avec des rôles IAM pour accéder à AWS. Pour en savoir plus sur l'utilisation AWS IAM Identity Center pour créer des utilisateurs avec des informations d'identification temporaires, voir Getting started dans le guide de AWS IAM Identity Center l'utilisateur.

Ce didacticiel utilise des politiques gérées par AWS à accès complet. Pour utilisation en production, nous vous recommandons d’accorder uniquement les autorisations minimales nécessaires à votre cas d’utilisation, conformément aux Bonnes pratiques de sécurité.

Installez Python 3.8 ou version ultérieure sur votre machine locale

Utilisez la procédure suivante pour installer Python 3.8 ou version ultérieure sur votre machine locale. Pour obtenir des instructions sur l’installation, consultez la page Télécharger Python dans le Guide du débutant de Python.

  1. Ouvrez votre terminal ou shell local, puis exécutez la commande suivante afin de déterminer si Python est déjà installé et, si oui, quelle version est installée.

    python --version
  2. Si Python 3.8 ou version ultérieure n’est pas installé, téléchargez le programme d’installation officiel de Python 3.8 ou version ultérieure qui convient à votre machine locale.

  3. Exécutez le programme d’installation en double-cliquant sur le fichier téléchargé, puis suivez les étapes pour achever l’installation.

    Pour les utilisateurs Windows, choisissez Ajouter Python 3.X au PATH dans l’assistant d’installation avant de choisir Installer maintenant.

  4. Redémarrez votre terminal en le fermant et en le rouvrant.

  5. Exécutez la commande suivante pour vérifier que Python 3.8 ou version ultérieure est installé correctement.

    Pour les utilisateurs macOS, exécutez cette commande :

    python3 --version

    Pour les utilisateurs Windows, exécutez cette commande :

    python --version
  6. Exécutez les commandes suivantes pour vérifier que le gestionnaire de paquets pip3 est installé. Si vous voyez un numéro de version pip et Python 3.8 ou version ultérieure dans la réponse de la commande, cela signifie que le gestionnaire de paquets pip3 est installé correctement.

    pip --version

Étape 1 : créer un compartiment S3

Créez un compartiment pour stocker les données originales que vous prévoyez de transformer.

Pour créer un compartiment
  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le panneau de navigation de gauche, choisissez Compartiments.

  3. Choisissez Créer un compartiment.

    La page Créer un compartiment s'ouvre.

  4. Pour Nom du compartiment, saisissez un nom (par exemple, tutorial-bucket) pour votre compartiment.

    Pour en savoir plus sur les règles d'attribution de noms des compartiments Amazon S3, consultez Règles de dénomination des compartiments à usage général.

  5. Pour Région, choisissez l' Région AWS endroit où vous souhaitez que le compartiment réside.

    Pour en savoir plus sur les régions des compartiments, consultez Présentation des compartiments.

  6. Pour Paramètres de blocage de l'accès public à ce compartiment, conservez les paramètres par défaut (Bloquer tout accès public est activé).

    Nous vous recommandons de laisser tous les paramètres de blocage de l’accès public activés, sauf si vous devez en désactiver un ou plusieurs pour votre cas d’utilisation. Pour en savoir plus sur le blocage de l'accès public, consultez Blocage de l’accès public à votre stockage Amazon S3.

  7. Pour les paramètres restants, conservez les paramètres par défaut.

    (Facultatif) Si vous souhaitez configurer des paramètres de compartiment supplémentaires pour votre cas d’utilisation particulier, consultez Créer un compartiment.

  8. Choisissez Créer un compartiment.

Étape 2 : charger un fichier dans le compartiment S3

Chargez un fichier texte dans le compartiment S3. Ce fichier texte contient les données originales que vous transformerez en majuscules plus tard dans ce didacticiel.

Par exemple, vous pouvez charger un fichier tutorial.txt qui contient le texte suivant :

Amazon S3 Object Lambda Tutorial: You can add your own code to process data retrieved from S3 before returning it to an application.
Charger un fichier dans un compartiment
  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le panneau de navigation de gauche, choisissez Compartiments.

  3. Dans la liste Compartiments, choisissez le nom du compartiment que vous avez créé à l'étape 1 (par exemple, tutorial-bucket) pour y charger votre fichier.

  4. Sous l’onglet Objets de votre compartiment, choisissez Charger.

  5. Dans la page Charger, sous Fichiers et dossiers, choisissez Ajouter des fichiers.

  6. Choisissez un fichier à charger, puis choisissez Ouvrir. Par exemple, vous pouvez charger le fichier tutorial.txt mentionné précédemment.

  7. Choisissez Charger.

Étape 3 : créer un point d’accès S3

Pour utiliser un point d’accès S3 Object Lambda afin d’accéder aux données originales et de les transformer, vous devez créer un point d’accès S3 et l’associer au compartiment S3 que vous avez créé à l’étape 1. Le point d'accès doit se trouver dans le même Région AWS emplacement que les objets que vous souhaitez transformer.

Plus loin dans ce didacticiel, vous utiliserez ce point d’accès comme point d’accès de prise en charge pour votre point d’accès Object Lambda.

Créer un point d’accès
  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le volet de navigation, choisissez Points d’accès.

  3. Dans la page Points d’accès, choisissez Créer un point d’accès.

  4. Dans le champ Nom du point d’accès, saisissez le nom (par exemple, tutorial-access-point) du point d’accès.

    Pour en savoir plus sur l’attribution de noms aux points d’accès, consultez Règles de dénomination pour les points d'accès Amazon S3.

  5. Dans Nom du compartiment, saisissez le nom du compartiment que vous avez créé à l’étape 1 (par exemple, tutorial-bucket). S3 attache le point d’accès à ce compartiment.

    (Facultatif) Vous pouvez choisir Parcourir S3 pour parcourir et rechercher les compartiments inclus dans votre compte. Si vous choisissez Parcourir S3, choisissez le compartiment souhaité, puis choisissez Choisir un chemin pour renseigner le champ Nom du compartiment avec le nom de ce compartiment.

  6. Pour Origine du réseau, choisissez Internet.

    Pour en savoir plus sur les origines de réseau des points d’accès, consultez Création de points d’accès restreints à un virtual private cloud.

  7. Par défaut, tous les paramètres de blocage d’accès public sont activés pour votre point d’accès. Nous vous recommandons de conserver l’option Bloquer tous les accès publics activée.

    Pour en savoir plus, consultez Gestion de l’accès public aux points d’accès.

  8. Pour tous les autres paramètres de point d’accès, conservez les paramètres par défaut.

    (Facultatif) Vous pouvez modifier les paramètres du point d’accès afin de prendre en charge votre cas d’utilisation. Pour ce didacticiel, nous vous recommandons de conserver les paramètres par défaut.

    (Facultatif) Si vous devez gérer l’accès à votre point d’accès, vous pouvez indiquer une politique de point d’accès. Pour plus d’informations, consultez Exemples de stratégie de point d’accès.

  9. Choisissez Créer un point d’accès.

Étape 4 : créer une fonction Lambda

Pour transformer des données originales, créez une fonction Lambda à utiliser avec votre point d’accès S3 Object Lambda.

Écrire le code d’une fonction Lambda et créer un package de déploiement avec un environnement virtuel

  1. Sur votre ordinateur local, créez un dossier avec le nom du dossier object-lambda afin que l’environnement virtuel puisse l’utiliser ultérieurement dans ce didacticiel.

  2. Dans le dossier object-lambda, créez un fichier avec une fonction Lambda qui change tout le texte de l’objet original en majuscules. Par exemple, vous pouvez utiliser la fonction suivante écrite en langage Python. Enregistrez cette fonction dans un fichier nommé transform.py.

    import boto3 import requests from botocore.config import Config # This function capitalizes all text in the original object def lambda_handler(event, context): object_context = event["getObjectContext"] # Get the presigned URL to fetch the requested original object # from S3 s3_url = object_context["inputS3Url"] # Extract the route and request token from the input context request_route = object_context["outputRoute"] request_token = object_context["outputToken"] # Get the original S3 object using the presigned URL response = requests.get(s3_url) original_object = response.content.decode("utf-8") # Transform all text in the original object to uppercase # You can replace it with your custom code based on your use case transformed_object = original_object.upper() # Write object back to S3 Object Lambda s3 = boto3.client('s3', config=Config(signature_version='s3v4')) # The WriteGetObjectResponse API sends the transformed data # back to S3 Object Lambda and then to the user s3.write_get_object_response( Body=transformed_object, RequestRoute=request_route, RequestToken=request_token) # Exit the Lambda function: return the status code return {'status_code': 200}
    Note

    L’exemple précédent de fonction Lambda charge l’ensemble de l’objet demandé en mémoire avant de le transformer et de le renvoyer au client. Vous pouvez autrement diffuser l’objet à partir de S3 pour éviter de charger l’intégralité de l’objet dans la mémoire. Cette approche peut être utile lorsque vous travaillez avec des objets volumineux. Pour en savoir plus sur le streaming des réponses avec des points d’accès Object Lambda, consultez les exemples de streaming dans Utilisation de requêtes GetObject dans Lambda.

    Lorsque vous écrivez une fonction Lambda à utiliser avec un point d’accès S3 Objet Lambda, la fonction est basée sur le contexte d’événement d’entrée que S3 Object Lambda fournit à la fonction Lambda. Le contexte de l’événement fournit des informations sur la demande effectuée dans l’événement transmis de S3 Object Lambda à Lambda. Il contient les paramètres que vous utiliserez pour créer la fonction Lambda.

    Les champs utilisés pour créer la fonction Lambda précédente sont les suivants :

    Le champ de getObjectContext indique les détails d’entrée et de sortie pour les connexions à Amazon S3 et à S3 Object Lambda. Il comporte les champs suivants :

    • inputS3Url – Une URL présignée que la fonction Lambda peut utiliser pour télécharger l’objet original à partir du point d’accès de prise en charge. En utilisant une URL présignée, la fonction Lambda n’a pas besoin des autorisations de lecture Amazon S3 pour récupérer l’objet original et peut uniquement accéder à l’objet traité par chaque invocation.

    • outputRoute – Un jeton de routage qui est ajouté à l’URL S3 Object Lambda lorsque la fonction Lambda appelle WriteGetObjectResponse pour renvoyer l’objet transformé.

    • outputToken – Un jeton utilisé par S3 Object Lambda pour correspondre à l’appel WriteGetObjectResponse avec l’appelant original lors du renvoi de l’objet transformé.

    Pour en savoir plus sur tous les champs du contexte de l’événement, consultez Format et utilisation du contexte d’événement et Écriture de fonctions Lambda pour les points d’accès S3 Object Lambda.

  3. Dans votre terminal local, saisissez la commande suivante pour installer le package virtualenv :

    python -m pip install virtualenv
  4. Dans votre terminal local, ouvrez le dossier object-lambda que vous avez créé précédemment, puis saisissez la commande suivante pour créer et initialiser un environnement virtuel nommé venv.

    python -m virtualenv venv
  5. Pour activer l’environnement virtuel, saisissez la commande suivante pour exécuter le fichier activate à partir du dossier de l’environnement :

    Pour les utilisateurs macOS, exécutez cette commande :

    source venv/bin/activate

    Pour les utilisateurs Windows, exécutez cette commande :

    .\venv\Scripts\activate

    Votre invite de commande change maintenant pour afficher (venv), indiquant que l’environnement virtuel est actif.

  6. Pour installer les bibliothèques requises, exécutez les commandes suivantes ligne par ligne dans l’venvenvironnement virtuel.

    Ces commandes installent des versions mises à jour des dépendances de votre lambda_handlerfonction Lambda. Ces dépendances sont les AWS SDK for Python (Boto3) et le module des demandes.

    pip3 install boto3
    pip3 install requests
  7. Pour désactiver l’environnement virtuel, exécutez la commande suivante :

    deactivate
  8. Pour créer un package de déploiement avec les bibliothèques installées en tant que fichier .zip nommé lambda.zip à la racine du répertoire object-lambda, exécutez la commande les commandes ligne par ligne dans votre terminal local.

    Astuce

    Les commandes suivantes peuvent nécessiter des ajustements pour fonctionner dans votre environnement particulier. Par exemple, une bibliothèque peut s’afficher dans site-packages ou dans dist-packages, et le premier dossier peut être lib ou lib64. En outre, il est possible de nommer le fichier python avec une version de Python différente. Vous pouvez utiliser la commande pip show pour localiser un package spécifique.

    Pour les utilisateurs macOS, exécutez les commandes suivantes :

    cd venv/lib/python3.8/site-packages
    zip -r ../../../../lambda.zip .

    Pour les utilisateurs Windows, exécutez les commandes suivantes :

    cd .\venv\Lib\site-packages\
    powershell Compress-Archive * ../../../lambda.zip

    La dernière commande enregistre le package de déploiement à la racine du répertoire object-lambda.

  9. Ajoutez le fichier de code de fonction transform.py à la racine de votre package de déploiement.

    Pour les utilisateurs macOS, exécutez les commandes suivantes :

    cd ../../../../
    zip -g lambda.zip transform.py

    Pour les utilisateurs Windows, exécutez les commandes suivantes :

    cd ..\..\..\
    powershell Compress-Archive -update transform.py lambda.zip

    Lorsque vous aurez achevé cette étape, vous disposerez de la structure de répertoire suivante :

    lambda.zip$ │ transform.py │ __pycache__ | boto3/ │ certifi/ │ pip/ │ requests/ ...

Créer une fonction Lambda à l’aide d’un rôle d’exécution (console)

  1. Connectez-vous à la AWS Lambda console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/lambda/.

  2. Dans le volet de navigation de gauche, choisissez Fonctions.

  3. Choisissez Créer une fonction.

  4. Choisissez Créer à partir de zéro.

  5. Sous Informations de base, procédez comme suit :

    1. Sous Nom de la fonction, saisissez tutorial-object-lambda-function.

    2. Pour Exécution, choisissez Python 3.8 ou version ultérieure.

  6. Développez la section Changer le rôle d’exécution par défaut. Sous Rôle d’exécution, choisissez Créer un nouveau rôle avec les autorisations Lambda de base.

    À l'étape 5 plus loin dans ce didacticiel, vous associerez AmazonS3 ObjectLambdaExecutionRolePolicy au rôle d'exécution de cette fonction Lambda.

  7. Conservez les paramètres restants définis sur les valeurs par défaut.

  8. Choisissez Créer une fonction.

Déployez le code de votre fonction Lambda avec les archives du fichier .zip et configurez la fonction Lambda (console)

  1. Dans la AWS Lambda console https://console.aws.amazon.com/lambda/, sélectionnez Functions dans le volet de navigation de gauche.

  2. Choisissez la fonction Lambda que vous avez créée précédemment (par exemple, tutorial-object-lambda-function).

  3. Dans la page des détails de la fonction Lambda, choisissez l’onglet Code. Dans la section Source du code, choisissez Charger à partir de, puis fichier .zip.

  4. Choisissez Charger pour sélectionner votre fichier .zip local.

  5. Choisissez le fichier lambda.zip que vous avez créé précédemment, puis choisissez Ouvrir.

  6. Choisissez Enregistrer.

  7. Dans la section Paramètres d’exécution, choisissez Modifier.

  8. Dans la page Modifier les paramètres d’exécution, confirmez que Exécution est définie sur Python 3.8 ou version ultérieure.

  9. Pour indiquer à l’exécution Lambda la méthode de gestionnaire dans votre code de fonction Lambda à invoquer, saisissez transform.lambda_handler pour Gestionnaire.

    Quand vous configurez une fonction dans Python, la valeur du paramètre de gestionnaire correspond au nom de fichier et au nom de module de gestionnaire, séparés par un point. Par exemple, transform.lambda_handler appelle la méthode lambda_handler définie dans le fichier transform.py.

  10. Choisissez Enregistrer.

  11. (Facultatif) Dans la page des détails de votre fonction Lambda, choisissez l’onglet Configuration. Dans le volet de navigation de gauche, choisissez Configuration générale, puis Modifier. Dans le champ Délai d’expiration, saisissez 1 min 0 s. Conservez les paramètres restants définis sur les valeurs par défaut, puis choisissez Enregistrer.

    Le Délai d’expiration est la durée que Lambda autorise pour l’exécution d’une fonction pour invocation avant de l’arrêter. Le durée par défaut est de 3 secondes. La durée maximale d’une fonction Lambda utilisée par S3 Object Lambda est de 60 secondes. La tarification est basée sur la quantité de mémoire configurée et la durée pendant laquelle votre code s’exécute.

Étape 5 : configurer une politique IAM pour le rôle d’exécution de votre fonction Lambda

Pour permettre à votre fonction Lambda de fournir des données personnalisées et des en-têtes de réponse à l’appelant GetObject, le rôle d’exécution de votre fonction Lambda doit disposer des autorisations IAM pour appeler l’API WriteGetObjectResponse.

Pour attacher une politique IAM au rôle de votre fonction Lambda

  1. Dans la AWS Lambda console https://console.aws.amazon.com/lambda/, sélectionnez Functions dans le volet de navigation de gauche.

  2. Choisissez la fonction que vous avez créée à l’étape 4 (par exemple, tutorial-object-lambda-function).

  3. Dans la page des détails de votre fonction Lambda, choisissez l’onglet Configuration, puis Autorisations dans le volet de navigation de gauche.

  4. Sous Rôle d’exécution, cliquez sur le lien du Nom de rôle. La console IAM s’ouvre.

  5. Sur la page Summary (Résumé) de la console IAM pour le rôle d’exécution de votre fonction Lambda, choisissez l’onglet Permissions (Autorisations). Ensuite, dans le menu Add Permissions (Ajouter des autorisations), choisissez Attach policies (Attacher des politiques).

  6. Dans la page Attacher des autorisations, saisissez AmazonS3ObjectLambdaExecutionRolePolicy dans le champ de recherche pour filtrer la liste des politiques. Cochez la case à côté du nom de la politique AmazonS3 ObjectLambdaExecutionRolePolicy.

  7. Choisissez Attach Policies (Attacher des politiques).

Étape 6 : créer un point d’accès S3 Object Lambda

Un point d’accès S3 Object Lambda offre la flexibilité d’invoquer une fonction Lambda directement à partir d’une demande GET S3 afin que la fonction puisse traiter les données récupérées à partir d’un point d’accès S3. Lors de la création et de la configuration d’un point d’accès S3 Object Lambda, vous devez indiquer la fonction Lambda à invoquer et fournir le contexte de l’événement au format JSON en tant que paramètres personnalisés à utiliser par Lambda.

Créer un point d’accès S3 Object Lambda
  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le volet de navigation de gauche, choisissez Points d’accès Object Lambda.

  3. Dans la page Points d'accès Object Lambda), choisissez Créer un point d'accès Object Lambda).

  4. Pour Nom du point d’accès Lambda d’objet, saisissez le nom que vous souhaitez utiliser pour le point d’accès Object Lambda (par exemple, tutorial-object-lambda-accesspoint).

  5. Pour Point d’accès de prise en charge, saisissez ou accédez au point d’accès standard que vous avez créé à l’étape 3 (par exemple, tutorial-access-point), puis choisissez Choisir un point d’accès de prise en charge.

  6. Pour S3 APIs, pour récupérer des objets du compartiment S3 afin que la fonction Lambda les traite, sélectionnez. GetObject

  7. Pour invoquer une fonction Lambda, vous pouvez choisir l’une des deux options suivantes de ce didacticiel.

    • Choisissez Choisissez parmi les fonctions dans votre compte, puis choisissez la fonction Lambda que vous avez créée à l’étape 4 (par exemple, tutorial-object-lambda-function) dans la liste déroulante Fonction Lambda.

    • Choisissez Saisir l’ARN, puis entrez l’Amazon Resource Name (ARN) de la fonction Lambda que vous avez créée à l’étape 4.

  8. Pour Version de la fonction Lambda, choisissez $LATEST (la dernière version de la fonction Lambda que vous avez créée à l’étape 4).

  9. (Facultatif) Si vous avez besoin de votre fonction Lambda pour reconnaître et traiter les demandes GET avec des en-têtes de plage et de numéro de partie, sélectionnez La fonction Lambda prend en charge les demandes utilisant la plage et La fonction Lambda prend en charge les demandes utilisant des numéros de partie. Sinon, décochez ces deux cases.

    Pour en savoir plus sur l’utilisation des plages ou des numéros de pièce avec S3 Object Lambda, consultez Travailler avec Range and partNumber headers.

  10. (Facultatif) Sous Charge utile – facultatif, ajoutez un texte JSON pour fournir des informations supplémentaires à votre fonction Lambda.

    Une charge utile est un texte JSON facultatif que vous pouvez fournir à votre fonction Lambda comme entrée pour toutes les invocations provenant d’un point d’accès S3 Object Lambda spécifique. Pour personnaliser les comportements de plusieurs points d’accès Object Lambda qui invoquent la même fonction Lambda, vous pouvez configurer des charges utiles avec différents paramètres, augmentant ainsi la flexibilité de votre fonction Lambda.

    Pour en savoir plus sur les charges utiles, consultez Format et utilisation du contexte d’événement.

  11. (Facultatif) Pour Métriques de demande – facultatif, choisissez Activer ou Désactiver pour ajouter la surveillance Amazon S3 à votre point d’accès Object Lambda. Les statistiques relatives aux demandes sont facturées au CloudWatch tarif standard d'Amazon. Pour en savoir plus, consultez PricingCloudWatch (Tarification).

  12. Sous Politique de point d’accès Object Lambda – facultatif, conservez le paramètre par défaut.

    (Facultatif) Vous pouvez définir une politique de ressource. Cette politique de ressource permet à l’autorisation d’API GetObject d’utiliser le point d’accès Object Lambda spécifié.

  13. Conservez les paramètres restants définis sur les valeurs par défaut, puis choisissez Créer un point d’accès Object Lambda.

Étape 7 : afficher les données transformées

S3 Object Lambda est maintenant prêt à transformer vos données pour votre cas d’utilisation. Dans ce didacticiel, S3 Object Lambda transforme tout le texte de votre objet en majuscules.

Afficher les données transformées dans votre point d’accès S3 Object Lambda

Lorsque vous demandez de récupérer un fichier via votre point d’accès S3 Object Lambda, vous effectuez un appel d’API GetObject à S3 Object Lambda. S3 Object Lambda invoque la fonction Lambda pour transformer vos données, puis retourne les données transformées en réponse à l’appel d’API GetObject S3 standard.

  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le panneau de navigation de gauche, choisissez Points d'accès Object Lambda.

  3. Sur la page Points d’accès Lambda d’objet, choisissez le point d’accès S3 Object Lambda que vous avez créé à l’étape 6 (par exemple, tutorial-object-lambda-accesspoint).

  4. Dans l’onglet Objets de votre point d’accès S3 Object Lambda, sélectionnez le fichier portant le même nom (par exemple, tutorial.txt) comme celui que vous avez chargé dans le compartiment S3 à l’étape 2.

    Ce fichier doit contenir toutes les données transformées.

  5. Pour afficher les données transformées, choisissez Ouvrir ou Télécharger.

Exécuter un script Python pour imprimer les données originales et transformées

Vous pouvez utiliser S3 Object Lambda avec vos applications existantes. Pour ce faire, mettez à jour la configuration de votre application pour utiliser le nouvel ARN du point d’accès S3 Object Lambda que vous avez créé à l’étape 6 afin de récupérer des données depuis S3.

L’exemple de script Python suivant imprime à la fois les données originales à partir du compartiment S3 et les données transformées à partir du point d’accès S3 Object Lambda.

  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le panneau de navigation de gauche, choisissez Points d'accès Object Lambda.

  3. Sur la page Points d’accès Lambda d’objet, choisissez le bouton radio situé à gauche du point d’accès S3 Object Lambda que vous avez créé à l’étape 6 (par exemple, tutorial-object-lambda-accesspoint).

  4. Choisissez Copier l'ARN.

  5. Enregistrez l’ARN pour utilisation ultérieure.

  6. Écrivez un script Python sur votre machine locale pour imprimer les données originales (par exemple, tutorial.txt) à partir de votre compartiment S3 et les données transformées (par exemple, tutorial.txt) à partir de votre point d’accès S3 Object Lambda. Vous pouvez utiliser l’exemple de script suivant.

    import boto3 from botocore.config import Config s3 = boto3.client('s3', config=Config(signature_version='s3v4')) def getObject(bucket, key): objectBody = s3.get_object(Bucket = bucket, Key = key) print(objectBody["Body"].read().decode("utf-8")) print("\n") print('Original object from the S3 bucket:') # Replace the two input parameters of getObject() below with # the S3 bucket name that you created in Step 1 and # the name of the file that you uploaded to the S3 bucket in Step 2 getObject("tutorial-bucket", "tutorial.txt") print('Object transformed by S3 Object Lambda:') # Replace the two input parameters of getObject() below with # the ARN of your S3 Object Lambda Access Point that you saved earlier and # the name of the file with the transformed data (which in this case is # the same as the name of the file that you uploaded to the S3 bucket # in Step 2) getObject("arn:aws:s3-object-lambda:us-west-2:111122223333:accesspoint/tutorial-object-lambda-accesspoint", "tutorial.txt")
  7. Enregistrez votre script Python avec un nom personnalisé (par exemple, tutorial_print.py) dans le dossier (par exemple, object-lambda) que vous avez créé à l’étape 4 sur votre machine locale.

  8. Dans votre terminal local, exécutez la commande suivante à partir de la racine du répertoire (par exemple, object-lambda) que vous avez créé à l’étape 4.

    python3 tutorial_print.py

    Vous devriez voir à la fois les données originales et les données transformées (tout le texte en majuscules) sur le terminal. Par exemple, vous devriez voir quelque chose ressemblant au texte suivant.

    Original object from the S3 bucket: Amazon S3 Object Lambda Tutorial: You can add your own code to process data retrieved from S3 before returning it to an application. Object transformed by S3 Object Lambda: AMAZON S3 OBJECT LAMBDA TUTORIAL: YOU CAN ADD YOUR OWN CODE TO PROCESS DATA RETRIEVED FROM S3 BEFORE RETURNING IT TO AN APPLICATION.

Étape 8 : nettoyer

Si vous avez transformé vos données via S3 Object Lambda comme un simple exercice d’apprentissage, supprimez les ressources AWS que vous avez allouées afin de ne plus accumuler de frais.

Supprimer le point d’accès Object Lambda

  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le panneau de navigation de gauche, choisissez Points d'accès Object Lambda.

  3. Sur la page Points d'accès Lambda d'objet, choisissez le bouton radio situé à gauche du point d'accès S3 Object Lambda que vous avez créé à l'étape 6 (par exemple, tutorial-object-lambda-accesspoint).

  4. Choisissez Supprimer.

  5. Confirmez que vous souhaitez supprimer votre point d’accès Object Lambda en saisissant son nom dans le champ de texte qui s’affiche, puis choisissez Supprimer.

Supprimer le point d’accès S3

  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le panneau de navigation de gauche, choisissez Points d'accès.

  3. Accédez au point d’accès que vous avez créé à l’étape 3 (par exemple, tutorial-access-point), puis choisissez le bouton radio en regard du nom du point d’accès.

  4. Choisissez Supprimer.

  5. Confirmez que vous souhaitez supprimer votre point d’accès Object Lambda en saisissant son nom dans le champ de texte qui s’affiche, puis choisissez Supprimer.

Supprimer le rôle d’exécution de votre fonction Lambda.

  1. Connectez-vous à la AWS Lambda console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/lambda/.

  2. Dans le panneau de navigation de gauche, choisissez Fonctions.

  3. Choisissez la fonction que vous avez créée à l'étape 4 (par exemple, tutorial-object-lambda-function).

  4. Dans la page des détails de votre fonction Lambda, choisissez l’onglet Configuration, puis Autorisations dans le volet de navigation de gauche.

  5. Sous Rôle d’exécution, cliquez sur le lien du Nom de rôle. La console IAM s'ouvre.

  6. Dans la page Récapitulatif de la console IAM du rôle d’exécution de votre fonction Lambda, choisissez Supprimer le rôle.

  7. Dans la boîte de dialogue Supprimer le rôle, choisissez Oui, supprimer.

Supprimer la fonction Lambda

  1. Dans la AWS Lambda console https://console.aws.amazon.com/lambda/, sélectionnez Functions dans le volet de navigation de gauche.

  2. Cochez la case à gauche du nom de la fonction que vous avez créée à l’étape 4 (par exemple, tutorial-object-lambda-function).

  3. Choisissez Actions, puis Supprimer.

  4. Dans la boîte de dialogue Supprimer une fonction, choisissez Supprimer.

Supprimer le groupe de CloudWatch journaux

  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans le volet de navigation de gauche, choisissez Groupes de journaux.

  3. Recherchez le groupe de journaux dont le nom se termine par la fonction Lambda que vous avez créée à l’étape 4 (par exemple, tutorial-object-lambda-function).

  4. Cochez la case située à gauche du nom du groupe de journaux.

  5. Choisissez Actions, puis Supprimer le ou les groupes de journaux.

  6. Dans la boîte de dialogue Supprimer le ou les groupes de journaux, choisissez Supprimer.

Supprimer le fichier original dans le compartiment source S3

  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le panneau de navigation de gauche, choisissez Compartiments.

  3. Dans la liste Nom du compartiment, choisissez le nom du compartiment vers lequel vous avez chargé le fichier original à l’étape 2 (par exemple, tutorial-bucket).

  4. Cochez la case située à gauche du nom de l’objet que vous souhaitez supprimer (par exemple, tutorial.txt).

  5. Choisissez Supprimer.

  6. Dans la page Supprimer des objets, dans la section Supprimer définitivement les objets ?, confirmez que vous souhaitez supprimer cet objet en saisissant permanently delete dans la zone de texte.

  7. Choisissez Supprimer les objets.

Supprimer le compartiment source S3

  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le panneau de navigation de gauche, choisissez Compartiments.

  3. Dans la liste Compartiments, choisissez le bouton radio en regard du nom du compartiment que vous avez créé à l’étape 1 (par exemple, tutorial-bucket).

  4. Choisissez Supprimer.

  5. Dans la page Supprimer le compartiment, confirmez que vous souhaitez supprimer le compartiment en saisissant le nom de ce dernier dans le champ de texte, puis choisissez Supprimer le compartiment.

Supprimer l’utilisateur IAM

  1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à https://console.aws.amazon.com/iam/l'adresse.

  2. Dans le volet de navigation, choisissez Utilisateurs, puis cochez la case en regard du nom de l’utilisateur à supprimer.

  3. En haut de la page, choisissez Supprimer.

  4. Dans le champ Supprimer user name ? boîte de dialogue, entrez le nom d'utilisateur dans le champ de saisie de texte pour confirmer la suppression de l'utilisateur. Sélectionnez Delete (Supprimer).

Étapes suivantes

Après avoir terminé ce didacticiel, vous pourrez personnaliser la fonction Lambda pour votre cas d’utilisation afin de modifier les données renvoyées par des demandes GET S3 standard.

Voici une liste de cas d’utilisation courants pour S3 Object Lambda :

Pour en savoir plus sur S3 Object Lambda, consultez Transformation d’objets avec S3 Object Lambda.