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 ensemble de données créé par une application de commerce électronique peut inclure des informations personnellement identifiables (PII). Lorsque les mêmes données sont traitées à des fins d'analyse, elles ne PII 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 GETdemandes S3 standard via le point d'accès Lambda d'objets S3, la fonction Lambda spécifiée est invoquée pour traiter toutes les données extraites d'un compartiment S3 via le point d'accès S3 compatible. 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 comment ajouter du code personnalisé aux GET demandes S3 standard afin de modifier l'objet demandé extrait 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 AWS SDK code.

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 IAM utilisateur avec des autorisations dans votre Compte AWS (console)

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

Votre IAM utilisateur a besoin des politiques suivantes :

Note

Dans un souci de simplicité, ce didacticiel crée et utilise un IAM utilisateur. Après avoir terminé ce didacticiel, n'oubliez pas de Supprimer l'IAMutilisateur. Pour une utilisation en production, nous vous recommandons de suivre les meilleures pratiques de sécurité décrites IAM dans le guide de IAM l'utilisateur. 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 à obliger les charges de travail à utiliser des informations d'identification temporaires avec IAM des rôles d'accès 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 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 local ou votre coquille locale, 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 de Windows, choisissez Ajouter Python 3.X 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 de compartiment.

  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 panneau 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 relatives à l'attribution de noms 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. Tous les paramètres de blocage d'accès public seront activés par défaut à 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— Un présigné URL que la fonction Lambda peut utiliser pour télécharger l'objet d'origine depuis le point d'accès compatible. En utilisant un présignéURL, la fonction Lambda n'a pas besoin d'autorisations de lecture Amazon S3 pour récupérer l'objet d'origine et ne peut accéder qu'à l'objet traité par chaque invocation.

    • outputRoute— Un jeton de routage qui est ajouté à l'objet Lambda S3 URL 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 celles AWS SDK pour Python (Boto3) et le module de requêtes.

    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 panneau 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 à appeler, saisissez transform.lambda_handler pour Gestionnaire.

    Si vous configurez une fonction dans Python, la valeur du paramètre du gestionnaire sera le nom du fichier et le nom du module du 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 panneau 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 appel 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 IAM politique pour le rôle d'exécution de votre fonction Lambda

Pour permettre à votre fonction Lambda de fournir des données et des en-têtes de réponse personnalisés à l'GetObjectappelant, le rôle d'exécution de votre fonction Lambda doit être autorisé à appeler le. IAM WriteGetObjectResponse API

Pour associer une IAM politique à votre rôle de 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 panneau de navigation de gauche.

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

  5. Sur la page Résumé de la IAM console pour le rôle d'exécution de votre fonction Lambda, choisissez l'onglet Permissions. 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 Lambda aux objets S3 offre la flexibilité d'invoquer une fonction Lambda directement à partir d'une GET demande S3 afin que la fonction puisse traiter les données extraites d'un point d'accès S3. Lorsque vous créez et configurez un point d'accès Lambda aux objets S3, vous devez spécifier la fonction Lambda à invoquer et fournir le contexte de l'événement JSON sous forme de 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 panneau 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 appeler 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 Enter ARN, puis entrez le nom de ressource Amazon (ARN) de la fonction Lambda que vous avez créée à l'étape 4.

  8. Pour la 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 que votre fonction Lambda reconnaisse et traite les GET demandes avec des en-têtes de plage et de numéro de pièce, sélectionnez La fonction Lambda prend en charge les demandes utilisant des plages et la fonction Lambda prend en charge les demandes utilisant des numéros de pièce. 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 JSON du texte pour fournir des informations supplémentaires à votre fonction Lambda.

    Une charge utile est un JSON texte facultatif que vous pouvez fournir à votre fonction Lambda comme entrée pour toutes les invocations provenant d'un point d'accès Lambda d'un objet S3 spécifique. Pour personnaliser les comportements de plusieurs points d'accès Object Lambda qui appellent 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 plus d'informations, consultez CloudWatchles tarifs.

  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 ressources accorde l'GetObjectAPIautorisation 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 à récupérer un fichier via votre point d'accès S3 Object Lambda, vous GetObject API appelez S3 Object Lambda. S3 Object Lambda invoque la fonction Lambda pour transformer vos données, puis renvoie les données transformées en réponse à l'appel S3 standard. GetObject API

  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 afin d'utiliser le nouveau point d'accès S3 Object Lambda ARN que vous avez créé à l'étape 6 pour récupérer les données de 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 CopierARN.

  5. Conservez-les ARN pour les réutiliser ultérieurement.

  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 panneau de navigation de gauche.

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

  6. Sur la page Résumé du rôle d'exécution de votre fonction Lambda de la IAM console, 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 panneau 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'IAMutilisateur

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

  2. Dans le panneau 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 menu 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 pouvez personnaliser la fonction Lambda en fonction de votre cas d'utilisation afin de modifier les données renvoyées par les requêtes S3 GET 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.