

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.

# Transformation d’objets avec S3 Object Lambda
<a name="transforming-objects"></a>

**Note**  
Depuis le 7 novembre 2025, S3 Object Lambda n'est disponible que pour les clients existants qui utilisent actuellement le service, ainsi que pour certains AWS partenaires du réseau de partenaires (APN). Pour des fonctionnalités semblables à celles de S3 Object Lambda, cliquez ici : [Modification de la disponibilité d’Amazon S3 Object Lambda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Amazon S3 Object Lambda vous donne la possibilité d’ajouter votre propre code aux requêtes Amazon S3 `GET`, `LIST` et `HEAD` afin de modifier et de traiter les données lorsqu’elles sont renvoyées vers une application. Vous pouvez utiliser du code personnalisé pour modifier les données renvoyées par les demandes S3 `GET` afin de filtrer les lignes, de redimensionner les images et les filigranes de manière dynamique, de supprimer des données confidentielles et plus encore. Vous pouvez également utiliser S3 Object Lambda pour modifier la sortie des requêtes S3 `LIST` afin de créer une vue personnalisée de tous les objets d’un compartiment et des requêtes S3 `HEAD` pour modifier les métadonnées des objets, telles que le nom et la taille des objets. Vous pouvez utiliser S3 Object Lambda comme origine pour votre CloudFront distribution Amazon afin de personnaliser les données pour les utilisateurs finaux, par exemple en redimensionnant automatiquement les images, en transcodant d'anciens formats (comme de JPEG en WebP) ou en supprimant des métadonnées. Pour plus d'informations, consultez le billet de AWS blog [Use Amazon S3 Object Lambda with Amazon](https://aws.amazon.com/blogs/aws/new-use-amazon-s3-object-lambda-with-amazon-cloudfront-to-tailor-content-for-end-users/). CloudFront Alimenté par les fonctions AWS Lambda, votre code s'exécute sur une infrastructure entièrement gérée par. AWS S3 Object Lambda réduit le besoin de créer et de stocker des copies dérivées de vos données ou d’exécuter des proxys, tout cela sans avoir à modifier vos applications.

**Fonctionnement de S3 Object Lambda**  
S3 Object Lambda utilise des AWS Lambda fonctions pour traiter automatiquement la sortie des requêtes S3 ou `GET` `HEAD` requêtes `LIST` standard. AWS Lambda est un service de calcul sans serveur qui exécute du code défini par le client sans nécessiter la gestion des ressources informatiques sous-jacentes. Vous pouvez créer et exécuter vos propres fonctions Lambda personnalisées afin d’ajuster la transformation des données à vos cas d’utilisation spécifiques. 

Après avoir configuré une fonction Lambda, vous l’attachez à un point de terminaison de service S3 Object Lambda (connu sous le nom de *point d’accès Object Lambda*). Le point d’accès Object Lambda utilise un point d’accès S3 standard, appelé *point d’accès compatible*, pour accéder aux données.

Lorsque vous envoyez une demande à votre point d’accès Object Lambda, Amazon S3 appelle automatiquement votre fonction Lambda. Toutes les données récupérées à l’aide d’une demande S3 `GET`, `LIST` ou `HEAD` via le point de terminaison Object Lambda renvoient un résultat transformé à l’application. Toutes les autres demandes sont traitées comme d’habitude, comme illustré dans le diagramme suivant. 



![\[Diagramme illustrant le fonctionnement de S3 Object Lambda.\]](http://docs.aws.amazon.com/fr_fr/AmazonS3/latest/userguide/images/ObjectLamdaDiagram.png)


Les rubriques de cette section décrivent comment utiliser S3 Object Lambda.

**Topics**
+ [Création de points d’accès Object Lambda](olap-create.md)
+ [Utilisation des points d’accès Amazon S3 Object Lambda](olap-use.md)
+ [Considérations sur la sécurité pour les points d’accès S3 Object Lambda](olap-security.md)
+ [Écriture de fonctions Lambda pour les points d’accès S3 Object Lambda](olap-writing-lambda.md)
+ [Utilisation de AWS fonctions Lambda intégrées](olap-examples.md)
+ [Bonnes pratiques et directives pour S3 Object Lambda](olap-best-practices.md)
+ [Didacticiels S3 Object Lambda](olap-tutorials.md)
+ [Débogage et résolution des problèmes de S3 Object Lambda](olap-debugging-lambda.md)

# Création de points d’accès Object Lambda
<a name="olap-create"></a>

**Note**  
Depuis le 7 novembre 2025, S3 Object Lambda n'est disponible que pour les clients existants qui utilisent actuellement le service, ainsi que pour certains AWS partenaires du réseau de partenaires (APN). Pour des fonctionnalités semblables à celles de S3 Object Lambda, cliquez ici : [Modification de la disponibilité d’Amazon S3 Object Lambda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Un point d’accès Object Lambda est associé à un seul point d’accès standard, que vous spécifiez lors de la création. Pour créer un point d’accès Object Lambda, vous avez besoin des ressources suivantes :
+ **Un point d’accès S3 standard.** Lorsque vous travaillez avec des points d'accès Object Lambda, ce point d'accès standard est appelé point d'*accès de support* et est attaché à un compartiment S3 ou à un volume Amazon FSx pour OpenZFS. Pour obtenir des informations sur la création de points d’accès standard, consultez [Création d’un point d’accès](creating-access-points.md).
+ **Une AWS Lambda fonction.** Vous pouvez créer votre propre fonction Lambda ou utiliser une fonction prédéfinie. Pour plus d’informations sur la création de fonctions Lambda, consultez [Écriture de fonctions Lambda pour les points d’accès S3 Object Lambda](olap-writing-lambda.md). Pour plus d’informations sur les fonctions prédéfinies, consultez [Utilisation de AWS fonctions Lambda intégrées](olap-examples.md).
+ **(Facultatif) Une politique Gestion des identités et des accès AWS (IAM).** Les points d’accès Amazon S3 prennent en charge les politiques de ressources IAM que vous pouvez utiliser pour contrôler l’utilisation des points d’accès par ressource, utilisateur ou autres conditions. Pour plus d’informations sur la création de telles politiques, consultez [Configuration des politiques IAM pour les points d’accès Object Lambda](olap-policies.md).

Les sections suivantes décrivent comment créer un point d’accès Object Lambda en utilisant :
+ Le AWS Management Console
+ Le AWS Command Line Interface (AWS CLI)
+ Un AWS CloudFormation modèle
+ Le AWS Cloud Development Kit (AWS CDK)

Pour obtenir des informations sur la création d’un point d’accès Object Lambda à l’aide de l’API REST, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPointForObjectLambda.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPointForObjectLambda.html) dans la *Référence des API Amazon Simple Storage Service*.

## Créer un point d’accès Object Lambda
<a name="create-olap"></a>

Utilisez l’une des procédures suivantes pour créer votre point d’accès Object Lambda. 

### Utilisation de la console S3
<a name="olap-create-console"></a>

**Pour créer un point d’accès Object Lambda à l’aide de la console**

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

1. Dans la barre de navigation, choisissez le nom du fichier actuellement affiché Région AWS. Choisissez ensuite la région à laquelle vous souhaitez passer. 

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

1. Dans la page **Points d’accès Object Lambda**, choisissez **Créer un point d’accès Object Lambda**.

1. Pour **Object Lambda Access Point name** (Nom du point d’accès Object Lambda), saisissez le nom que vous souhaitez utiliser pour le point d’accès. 

   Comme pour les points d’accès standard, des règles s’appliquent à l’attribution de noms pour des points d’accès Object Lambda. Pour plus d’informations, consultez [Règles de dénomination des points d’accès](access-points-restrictions-limitations-naming-rules.md#access-points-names).

1. Pour **Supporting Access Point** (Point d’accès de prise en charge), saisissez le point d’accès standard à utiliser ou accédez-y. Le point d'accès doit se trouver dans le même Région AWS emplacement que les objets que vous souhaitez transformer. Pour obtenir des informations sur la création de points d'accès standard, consultez [Création d’un point d’accès](creating-access-points.md).

1. Sous **Configuration de transformation**, vous pouvez ajouter une fonction qui transforme vos données pour votre point d’accès Object Lambda. Effectuez l’une des actions suivantes :
   + Si vous avez déjà une AWS Lambda fonction dans votre compte, vous pouvez la sélectionner sous **Invoke Lambda** function. Vous pouvez saisir ici l'Amazon Resource Name (ARN) d'une fonction Lambda dans votre Compte AWS ou choisir une fonction Lambda dans le menu déroulant.
   + Si vous souhaitez utiliser une fonction AWS intégrée, choisissez le nom de la fonction sous **fonction AWS construite** et sélectionnez **Créer une fonction Lambda**. Cela vous mènera à la console Lambda où vous pourrez déployer une fonction intégrée dans votre. Compte AWS Pour plus d’informations sur les fonctions définies, consultez [Utilisation de AWS fonctions Lambda intégrées](olap-examples.md).

   Sous **S3 APIs**, choisissez une ou plusieurs opérations d'API à appeler. Pour chaque API sélectionnée, vous devez spécifier une fonction Lambda à invoquer. 

1. (Facultatif) Sous **Payload** (Charge utile), ajoutez le texte JSON à fournir en entrée à la fonction Lambda. Vous pouvez configurer des charges utiles avec différents paramètres pour différents points d’accès Object Lambda qui invoquent la même fonction Lambda, augmentant ainsi la flexibilité de votre fonction Lambda.
**Important**  
Lorsque vous utilisez des points d’accès Object Lambda, vérifiez que la charge utile ne contient pas d’informations confidentielles.

1. (Facultatif) Pour **Range and part number** (Plage et numéro de partie), vous devez activer cette option pour traiter les requêtes `GET` et `HEAD` avec des en-têtes de plage et de numéro de partie. L’activation de cette option confirme que votre fonction Lambda est capable de reconnaître et de traiter ces demandes. Pour plus d’informations sur les en-têtes de plage et les numéros de partie, voir [Utilisation des en-têtes Range et partNumber](range-get-olap.md).

1. (Facultatif) Pour **Métriques de demande**), 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.

1. (Facultatif) Sous **Object Lambda Access Point policy** (Politique de points d’accès Object Lambda), définissez une politique de ressources. Les politiques de ressources accordent des autorisations pour le point d’accès Object Lambda spécifié et peuvent contrôler l’utilisation du point d’accès par ressource, utilisateur ou d’autres conditions. Pour plus d’informations sur les politiques de ressources d’un point d’accès Object Lambda, consultez [Configuration des politiques IAM pour les points d’accès Object Lambda](olap-policies.md).

1. Sous **Block Public Access settings for this Object Lambda Access Point** (Paramètres de blocage d’accès public pour ce point d’accès Object Lambda), sélectionnez les paramètres de blocage d’accès public que vous voulez appliquer. Tous les paramètres de blocage d’accès public sont activés par défaut pour les nouveaux points d’accès Object Lambda et nous vous recommandons de laisser les paramètres par défaut activés. Actuellement, Amazon S3 ne prend pas en charge la modification des paramètres de blocage d’accès public d’un point d’accès Object Lambda après la création de ce point d’accès Object Lambda.

   Pour plus d’informations sur l’utilisation du blocage de l’accès public Amazon S3, consultez [Gestion de l’accès public aux points d’accès de compartiments à usage général](access-points-bpa-settings.md).

1. Choisissez **Create Object Lambda Access Point** (Créer un point d’accès Object Lambda).

### À l'aide du AWS CLI
<a name="olap-create-cli"></a>

**Pour créer un point d'accès Object Lambda à l'aide d'un modèle AWS CloudFormation**
**Note**  
Pour utiliser les commandes suivantes, remplacez `user input placeholders` par vos propres informations.

1. Téléchargez le package de déploiement des AWS Lambda fonctions `s3objectlambda_deployment_package.zip` dans la configuration [par défaut de S3 Object Lambda](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration).

1. Exécutez la commande `put-object` suivante pour charger le package dans un compartiment Amazon S3.

   ```
   aws s3api put-object --bucket Amazon S3 bucket name --key s3objectlambda_deployment_package.zip --body release/s3objectlambda_deployment_package.zip
   ```

1. Téléchargez le AWS CloudFormation modèle dans la `s3objectlambda_defaultconfig.yaml` configuration [par défaut de S3 Object Lambda](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration).

1. Exécutez la commande `deploy` suivante pour déployer le modèle dans votre Compte AWS.

   ```
   aws cloudformation deploy --template-file s3objectlambda_defaultconfig.yaml \
    --stack-name CloudFormation stack name \ 
    --parameter-overrides ObjectLambdaAccessPointName=Object Lambda Access Point name \
     SupportingAccessPointName=Amazon S3 access point S3BucketName=Amazon S3 bucket \
     LambdaFunctionS3BucketName=Amazon S3 bucket containing your Lambda package \ 
     LambdaFunctionS3Key=Lambda object key LambdaFunctionS3ObjectVersion=Lambda object version \ 
     LambdaFunctionRuntime=Lambda function runtime --capabilities capability_IAM
   ```

Vous pouvez configurer ce AWS CloudFormation modèle pour appeler Lambda pour `GET``HEAD`, et les opérations d'`LIST`API. Pour plus d’informations sur la modification de la configuration par défaut du modèle, consultez [Automatisez la configuration de S3 Object Lambda à l'aide d'un modèle CloudFormation](olap-using-cfn-template.md).<a name="olap-create-cli-specific"></a>

**Pour créer un point d'accès Object Lambda à l'aide du AWS CLI**
**Note**  
Pour utiliser les commandes suivantes, remplacez `user input placeholders` par vos propres informations.

L’exemple suivant crée un point d’accès Object Lambda nommé *`my-object-lambda-ap`* pour le compartiment *`amzn-s3-demo-bucket1`* dans le compte *`111122223333`*. Cet exemple suppose qu’un point d’accès standard nommé *`example-ap`* a déjà été créé. Pour plus d’informations sur la création d’un point d’accès standard, consultez [Création d’un point d’accès](creating-access-points.md).

Cet exemple utilise la fonction AWS prédéfinie. `decompress` Pour plus d’informations sur les fonctions prédéfinies, consultez [Utilisation de AWS fonctions Lambda intégrées](olap-examples.md).

1. Créez un compartiment. Dans cet exemple, nous allons utiliser *`amzn-s3-demo-bucket1`*. Pour plus d’informations sur la création de compartiments, consultez [Création d’un compartiment à usage général](create-bucket-overview.md).

1. Créez un point d’accès standard et attachez-le à votre compartiment. Dans cet exemple, nous allons utiliser *`example-ap`*. Pour obtenir des informations sur la création de points d'accès standard, consultez [Création d’un point d’accès](creating-access-points.md).

1. Effectuez l’une des actions suivantes : 
   + Créez une fonction Lambda dans votre compte que vous souhaitez utiliser pour transformer votre objet Simple Storage Service (Amazon S3). Pour plus d'informations sur la création de fonctions Lambda, consultez [Écriture de fonctions Lambda pour les points d’accès S3 Object Lambda](olap-writing-lambda.md). Pour utiliser votre fonction personnalisée avec le AWS CLI, consultez la section [Utilisation de Lambda avec le AWS CLI dans le](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-awscli.html) guide du *AWS Lambda développeur*.
   + Utilisez une fonction AWS Lambda prédéfinie. Pour plus d’informations sur les fonctions prédéfinies, consultez [Utilisation de AWS fonctions Lambda intégrées](olap-examples.md).

1. Créez un fichier de configuration JSON nommé `my-olap-configuration.json`. Dans cette configuration, fournissez le point d’accès de prise en charge et l’Amazon Resource Name (ARN) de la fonction Lambda que vous avez créée au cours des étapes précédentes ou l’ARN de la fonction prédéfinie que vous utilisez.  
**Example**  

   

   ```
   {
       "SupportingAccessPoint" : "arn:aws:s3:us-east-1:111122223333:accesspoint/example-ap",
       "TransformationConfigurations": [{
           "Actions" : ["GetObject", "HeadObject", "ListObjects", "ListObjectsV2"],
           "ContentTransformation" : {
               "AwsLambda": {
                   "FunctionPayload" : "{\"compressionType\":\"gzip\"}",
                   "FunctionArn" : "arn:aws:lambda:us-east-1:111122223333:function/compress"
               }
           }
       }]
   }
   ```

1. Exécutez la commande `create-access-point-for-object-lambda` pour créer votre point d’accès Object Lambda.

   ```
   aws s3control create-access-point-for-object-lambda --account-id 111122223333 --name my-object-lambda-ap --configuration file://my-olap-configuration.json
   ```

1. (Facultatif) Créez un fichier de stratégie JSON nommé `my-olap-policy.json`.

   L’ajout d’une politique de ressources de points d’accès Object Lambda peut contrôler l’utilisation du point d’accès par ressource, utilisateur ou d’autres conditions. Cette politique de ressources accorde l’autorisation `GetObject` pour le compte *`444455556666`* au point d’accès Object Lambda spécifié.  
**Example**  

   

   ```
   {
       "Version": "2008-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Grant account 444455556666 GetObject access",
               "Effect": "Allow",
               "Action": "s3-object-lambda:GetObject",
               "Principal": {
                   "AWS": "arn:aws:iam::444455556666:root"
               },
               "Resource": "your-object-lambda-access-point-arn"
           }
       ]
   }
   ```

1. (Facultatif) Exécutez la commande `put-access-point-policy-for-object-lambda` pour définir votre politique de ressources.

   ```
   aws s3control put-access-point-policy-for-object-lambda --account-id 111122223333 --name my-object-lambda-ap --policy file://my-olap-policy.json
   ```

1. (Facultatif) Spécifiez une charge utile.

   Une charge utile est un JSON facultatif que vous pouvez fournir à votre AWS Lambda fonction en entrée. Vous pouvez configurer des charges utiles avec différents paramètres pour différents points d’accès Object Lambda qui invoquent la même fonction Lambda, augmentant ainsi la flexibilité de votre fonction Lambda.

   La configuration suivante du point d’accès Object Lambda affiche une charge utile avec deux paramètres.

   ```
   {
   	"SupportingAccessPoint": "AccessPointArn",
   	"CloudWatchMetricsEnabled": false,
   	"TransformationConfigurations": [{
   		"Actions": ["GetObject", "HeadObject", "ListObjects", "ListObjectsV2"],
   		"ContentTransformation": {
   			"AwsLambda": {
   				"FunctionArn": "FunctionArn",
   				"FunctionPayload": "{\"res-x\": \"100\",\"res-y\": \"100\"}"
   			}
   		}
   	}]
   }
   ```

   La configuration de point d’accès Object Lambda suivante montre une charge utile avec un seul paramètre et avec `GetObject-Range`, `GetObject-PartNumber`, `HeadObject-Range` et `HeadObject-PartNumber` activés.

   ```
   {
       "SupportingAccessPoint":"AccessPointArn",
       "CloudWatchMetricsEnabled": false,
       "AllowedFeatures": ["GetObject-Range", "GetObject-PartNumber", "HeadObject-Range", "HeadObject-PartNumber"],        
       "TransformationConfigurations": [{
           "Action": ["GetObject", "HeadObject", "ListObjects", "ListObjectsV2"],
           "ContentTransformation": {
               "AwsLambda": {
                   "FunctionArn":"FunctionArn",
                   "FunctionPayload": "{\"compression-amount\": \"5\"}"
               }
           }
       }]
   }
   ```
**Important**  
Lorsque vous utilisez des points d’accès Object Lambda, vérifiez que la charge utile ne contient pas d’informations confidentielles.

### Utilisation de la AWS CloudFormation console et du modèle
<a name="olap-create-cfn-console"></a>

Vous pouvez créer un point d’accès Object Lambda à l’aide de la configuration par défaut fournie par Amazon S3. Vous pouvez télécharger un AWS CloudFormation modèle et le code source d'une fonction Lambda depuis le [GitHub référentiel](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration) et déployer ces ressources pour configurer un point d'accès Object Lambda fonctionnel.

Pour plus d'informations sur la modification de la configuration par défaut du AWS CloudFormation modèle, consultez[Automatisez la configuration de S3 Object Lambda à l'aide d'un modèle CloudFormation](olap-using-cfn-template.md).

Pour plus d'informations sur la configuration des points d'accès Object Lambda CloudFormation sans le modèle, consultez le guide [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3objectlambda-accesspoint.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3objectlambda-accesspoint.html)de l'*AWS CloudFormation utilisateur*.

**Pour charger le package de déploiement de votre fonction Lambda**

1. Téléchargez le package de déploiement des AWS Lambda fonctions `s3objectlambda_deployment_package.zip` dans la configuration [par défaut de S3 Object Lambda](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration).

1. Chargez le package dans un compartiment Amazon S3.

**Pour créer un point d'accès Object Lambda à l'aide de la console AWS CloudFormation**

1. Téléchargez le AWS CloudFormation modèle dans la `s3objectlambda_defaultconfig.yaml` configuration [par défaut de S3 Object Lambda](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration).

1. Connectez-vous à la console de AWS gestion et ouvrez la console à l'adresse AWS CloudFormation [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Effectuez l’une des actions suivantes : 
   + Si vous ne l'avez jamais utilisé AWS CloudFormation auparavant, sur la page d' AWS CloudFormation accueil, choisissez **Create stack**.
   + Si vous l'avez AWS CloudFormation déjà utilisé, dans le volet de navigation de gauche, choisissez **Stacks**. Choisissez **Create stack** (Créer une pile), puis **With new resources (standard)** (Avec de nouvelles ressources (standard)).

1. Pour **Prerequisite - Prepare template (Prérequis – Préparer le modèle)**, choisissez **Template is ready (Le modèle est prêt)**.

1. Pour **Specify template** (Spécifier le modèle), choisissez **Upload a template file** (Charger un fichier de modèle) et chargez `s3objectlambda_defaultconfig.yaml`.

1. Choisissez **Next** (Suivant).

1. Sur la page **Specify stack details (Spécifier les détails de la pile)**, saisissez un nom pour la pile.

1. Dans la section **Parameters** (Paramètres), spécifiez les paramètres suivants, définis dans le modèle de pile :

   1. Pour **CreateNewSupportingAccessPoint**, effectuez l'une des actions suivantes : 
      + Si vous disposez déjà d’un point d’accès de prise en charge pour le compartiment S3 dans lequel vous avez chargé le modèle, choisissez **false** (faux).
      + Si vous souhaitez créer un nouveau point d’accès pour ce compartiment, choisissez **true** (vrai). 

   1. Pour **EnableCloudWatchMonitoring**, choisissez **vrai** ou **faux**, selon que vous souhaitez activer les métriques de CloudWatch demande et les alarmes Amazon. 

   1. (Facultatif) Pour **LambdaFunctionPayload**, ajoutez le texte JSON que vous souhaitez fournir à votre fonction Lambda en entrée. Vous pouvez configurer des charges utiles avec différents paramètres pour différents points d’accès Object Lambda qui invoquent la même fonction Lambda, augmentant ainsi la flexibilité de votre fonction Lambda.
**Important**  
Lorsque vous utilisez des points d’accès Object Lambda, vérifiez que la charge utile ne contient pas d’informations confidentielles.

   1. Pour **LambdaFunctionRuntime**, entrez votre environnement d'exécution préféré pour la fonction Lambda. Les options disponibles sont `nodejs14.x`, `python3.9` et `java11`.

   1. Pour **LambdaFunctionS3 BucketName**, entrez le nom du compartiment Amazon S3 dans lequel vous avez chargé le package de déploiement.

   1. Pour **LambdaFunctionS3Key**, entrez la clé d'objet Amazon S3 sur laquelle vous avez chargé le package de déploiement.

   1. Pour **LambdaFunctionS3 ObjectVersion**, entrez la version de l'objet Amazon S3 dans laquelle vous avez chargé le package de déploiement.

   1. Pour **ObjectLambdaAccessPointName**, entrez un nom pour votre point d'accès Object Lambda.

   1. Pour **S3 BucketName**, entrez le nom du compartiment Amazon S3 qui sera associé à votre point d'accès Object Lambda.

   1. Pour **SupportingAccessPointName**, entrez le nom de votre point d'accès compatible.
**Note**  
Il s’agit d’un point d’accès associé au compartiment Amazon S3 que vous avez choisi à l’étape précédente. Si aucun point d'accès n'est associé à votre compartiment Amazon S3, vous pouvez configurer le modèle pour en créer un pour vous en choisissant **true** for **CreateNewSupportingAccessPoint**.

1. Choisissez **Next** (Suivant).

1. Sur la page **Configurer les options de pile**, choisissez **Suivant**.

   Pour plus d’informations sur les paramètres facultatifs figurant sur cette page, consultez [Définition des options des piles AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-add-tags.html) dans le *Guide de l’utilisateur AWS CloudFormation *.

1. Sur la page **Review (Vérification)**, choisissez **Create stack (Créer une pile)**.

### À l'aide du AWS Cloud Development Kit (AWS CDK)
<a name="olap-create-cdk"></a>

Pour plus d'informations sur la configuration des points d'accès Object Lambda à l'aide de AWS CDK, consultez la section [`AWS::S3ObjectLambda`Construct Library](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-s3objectlambda-readme.html) dans la référence de l'*AWS Cloud Development Kit (AWS CDK) API*.

# Automatisez la configuration de S3 Object Lambda à l'aide d'un modèle CloudFormation
<a name="olap-using-cfn-template"></a>

**Note**  
Depuis le 7 novembre 2025, S3 Object Lambda n'est disponible que pour les clients existants qui utilisent actuellement le service, ainsi que pour certains AWS partenaires du réseau de partenaires (APN). Pour des fonctionnalités semblables à celles de S3 Object Lambda, cliquez ici : [Modification de la disponibilité d’Amazon S3 Object Lambda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Vous pouvez utiliser un AWS CloudFormation modèle pour créer rapidement un point d'accès Amazon S3 Object Lambda. Le CloudFormation modèle crée automatiquement les ressources pertinentes, configure les rôles Gestion des identités et des accès AWS (IAM) et met en place une AWS Lambda fonction qui gère automatiquement les demandes via le point d'accès Object Lambda. Ce CloudFormation modèle vous permet de mettre en œuvre les meilleures pratiques, d'améliorer votre niveau de sécurité et de réduire les erreurs causées par les processus manuels.

Ce [GitHub référentiel](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration) contient le CloudFormation modèle et le code source de la fonction Lambda. Pour obtenir des instructions sur l’utilisation de ce modèle, consultez [Création de points d’accès Object Lambda](olap-create.md).

La fonction Lambda fournie dans ce modèle n’exécute aucune transformation. Au lieu de cela, elle renvoie vos objets en l’état à partir de la source de données sous-jacente. Vous pouvez cloner la fonction et ajouter votre propre code de transformation pour modifier et traiter les données lorsqu’elles sont renvoyées vers une application. Pour plus d’informations sur la modification de votre fonction, consultez [Modification de la fonction Lambda](#modifying-lambda-function) et [Écriture de fonctions Lambda pour les points d’accès S3 Object Lambda](olap-writing-lambda.md). 

## Modification du modèle.
<a name="modifying-cfn-template"></a>

**Création d’un nouveau point d’accès de prise en charge**  
S3 Object Lambda utilise deux points d’accès, un point d’accès Object Lambda et un point d’accès S3 standard, appelé *point d’accès de prise en charge*. Lorsque vous effectuez une demande auprès d’un point d’accès Object Lambda, S3 invoque Lambda en votre nom ou délègue la demande au point d’accès de prise en charge, en fonction de la configuration S3 Object Lambda. Vous pouvez créer un nouveau point d’accès de prise en charge en transmettant le paramètre suivant dans le cadre de la commande `aws cloudformation deploy` lors du déploiement du modèle.

```
CreateNewSupportingAccessPoint=true
```

**Configuration d’une charge utile de fonction**  
Vous pouvez configurer une charge utile de manière à fournir des données supplémentaires à la fonction Lambda en transmettant le paramètre suivant dans le cadre de la commande `aws cloudformation deploy` lors du déploiement du modèle.

```
LambdaFunctionPayload="format=json"
```

**Activation de la CloudWatch surveillance d'Amazon**  
Vous pouvez activer la CloudWatch surveillance en transmettant le paramètre suivant dans le cadre de la `aws cloudformation deploy` commande lors du déploiement du modèle.

```
EnableCloudWatchMonitoring=true
```

Ce paramètre active votre point d'accès Object Lambda pour les métriques de demande Amazon S3 et crée deux CloudWatch alarmes pour surveiller les erreurs côté client et côté serveur.

**Note**  
 CloudWatch L'utilisation d'Amazon entraînera des coûts supplémentaires. Pour plus d’informations sur les métriques de demande Amazon S3, consultez [Surveillance et journalisation des points d’accès](access-points-monitoring-logging.md).  
Pour plus d’informations sur la tarification, consultez [Tarification CloudWatch ](https://aws.amazon.com/cloudwatch/pricing/). 

**Configuration de la simultanéité provisionnée**  
Pour réduire la latence, vous pouvez configurer la simultanéité provisionnée pour la fonction Lambda qui soutient le point d’accès Object Lambda, en modifiant le modèle afin d’inclure les lignes suivantes sous `Resources`.

```
LambdaFunctionVersion:
      Type: AWS::Lambda::Version
      Properties:
        FunctionName: !Ref LambdaFunction
        ProvisionedConcurrencyConfig:
            ProvisionedConcurrentExecutions: Integer
```

**Note**  
Des frais supplémentaires pour le provisionnement simultané vous seront facturés. Pour plus d’informations sur la simultanéité provisionnée, consultez [Gestion de la simultanéité provisionnée Lambda](https://docs.aws.amazon.com/lambda/latest/dg/provisioned-concurrency.html) dans le *Guide du développeur AWS Lambda *.  
Pour plus d’informations sur la tarification, consultez [Tarification AWS Lambda](https://aws.amazon.com/lambda/pricing/).

## Modification de la fonction Lambda
<a name="modifying-lambda-function"></a>

**Modification des valeurs d’en-tête d’une requête `GetObject`**  
Par défaut, la fonction Lambda transfère tous les en-têtes, à l’exception de `Content-Length` et `ETag`, de la demande d’URL présignée au client `GetObject`. En fonction de votre code de transformation dans la fonction Lambda, vous pouvez choisir d’envoyer de nouvelles valeurs d’en-tête à la demande `GetObject` du client.

Vous pouvez mettre à jour votre fonction Lambda pour envoyer de nouvelles valeurs d’en-tête en les transmettant dans l’opération d’API `WriteGetObjectResponse`.

Par exemple, si votre fonction Lambda traduit du texte dans des objets Amazon S3 vers une autre langue, vous pouvez transmettre une nouvelle valeur dans l’en-tête `Content-Language`. Pour ce faire, vous pouvez modifier la fonction `writeResponse` comme suit :

```
async function writeResponse (s3Client: S3, requestContext: GetObjectContext, transformedObject: Buffer,
  headers: Headers): Promise<PromiseResult<{}, AWSError>> {
  const { algorithm, digest } = getChecksum(transformedObject);

  return s3Client.writeGetObjectResponse({
    RequestRoute: requestContext.outputRoute,
    RequestToken: requestContext.outputToken,
    Body: transformedObject,
    Metadata: {
      'body-checksum-algorithm': algorithm,
      'body-checksum-digest': digest
    },
    ...headers,
    ContentLanguage: 'my-new-language'
  }).promise();
}
```

Pour obtenir la liste complète des en-têtes pris en charge, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax](https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax) dans la *Référence des API Amazon Simple Storage Service*.

**Renvoi des en-têtes de métadonnées**  
Vous pouvez mettre à jour votre fonction Lambda pour envoyer de nouvelles valeurs d’en-tête en les transmettant dans la demande d’opération d’API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax](https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax).

```
async function writeResponse (s3Client: S3, requestContext: GetObjectContext, transformedObject: Buffer,
  headers: Headers): Promise<PromiseResult<{}, AWSError>> {
  const { algorithm, digest } = getChecksum(transformedObject);

  return s3Client.writeGetObjectResponse({
    RequestRoute: requestContext.outputRoute,
    RequestToken: requestContext.outputToken,
    Body: transformedObject,
    Metadata: {
      'body-checksum-algorithm': algorithm,
      'body-checksum-digest': digest,
      'my-new-header': 'my-new-value' 
    },
    ...headers
  }).promise();
}
```

**Renvoi d’un nouveau code de statut**  
Vous pouvez renvoyer un code de statut personnalisé au client `GetObject` en transmettant ce code dans la demande d’opération d’API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax](https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax).

```
async function writeResponse (s3Client: S3, requestContext: GetObjectContext, transformedObject: Buffer,
  headers: Headers): Promise<PromiseResult<{}, AWSError>> {
  const { algorithm, digest } = getChecksum(transformedObject);

  return s3Client.writeGetObjectResponse({
    RequestRoute: requestContext.outputRoute,
    RequestToken: requestContext.outputToken,
    Body: transformedObject,
    Metadata: {
      'body-checksum-algorithm': algorithm,
      'body-checksum-digest': digest
    },
    ...headers,
    StatusCode: Integer
  }).promise();
}
```

Pour obtenir la liste complète des codes de statut pris en charge, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax](https://docs.aws.amazon.com/AmazonS3/latest/API/API_WriteGetObjectResponse.html#API_WriteGetObjectResponse_RequestSyntax) dans la *Référence des API Amazon Simple Storage Service*.

**Application des paramètres `Range` et `partNumber` à l’objet source**  
Par défaut, le point d'accès Object Lambda créé par le CloudFormation modèle peut gérer les paramètres `Range` et`partNumber`. La fonction Lambda applique la plage ou le numéro de partie demandé à l’objet transformé. Pour ce faire, la fonction doit télécharger l’objet entier et exécuter la transformation. Dans certains cas, vos plages d’objets transformés peuvent correspondre exactement à vos plages d’objets source. Cela signifie que la demande de plage d’octets A-B sur votre objet source et l’exécution de la transformation peuvent fournir le même résultat que la demande de l’objet entier, l’exécution de la transformation et le renvoi de la plage d’octets A-B sur l’objet transformé.

Dans ce cas, vous pouvez modifier l’implémentation de la fonction Lambda pour appliquer la plage ou le numéro de partie directement à l’objet source. Cette approche réduit la latence globale de la fonction ainsi que la mémoire requise. Pour plus d’informations, consultez [Utilisation des en-têtes Range et partNumber](range-get-olap.md).

**Désactivation de la gestion de `Range` et `partNumber`**  
Par défaut, le point d'accès Object Lambda créé par le CloudFormation modèle peut gérer les paramètres `Range` et`partNumber`. Si vous n’avez pas besoin de ce comportement, vous pouvez le désactiver en supprimant les lignes suivantes du modèle :

```
AllowedFeatures:
  - GetObject-Range
  - GetObject-PartNumber
  - HeadObject-Range 
  - HeadObject-PartNumber
```

**Transformation de large objets**  
Par défaut, la fonction Lambda traite l’ensemble de l’objet en mémoire avant de pouvoir commencer à diffuser la réponse vers S3 Object Lambda. Vous pouvez modifier la fonction pour diffuser la réponse au fur et à mesure qu’elle effectue la transformation. Cela permet de réduire la latence de transformation et la mémoire de la fonction Lambda. Pour obtenir un exemple de mise en œuvre, consultez [Stream compressed content example (Exemple de diffusion de contenu compressé)](olap-writing-lambda.md#olap-getobject-response).

# Utilisation des points d’accès Amazon S3 Object Lambda
<a name="olap-use"></a>

**Note**  
Depuis le 7 novembre 2025, S3 Object Lambda n'est disponible que pour les clients existants qui utilisent actuellement le service, ainsi que pour certains AWS partenaires du réseau de partenaires (APN). Pour des fonctionnalités semblables à celles de S3 Object Lambda, cliquez ici : [Modification de la disponibilité d’Amazon S3 Object Lambda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Les demandes via des points d’accès Amazon S3 Object Lambda fonctionnent de la même manière que les demandes via d’autres points d’accès. Pour plus d’informations sur les demandes via un point d’accès, consultez [Utilisation des points d’accès Amazon S3 de compartiments à usage général](using-access-points.md). Vous pouvez effectuer des demandes via les points d'accès Object Lambda à l'aide de la console Amazon S3, AWS Command Line Interface (AWS CLI) ou de l' AWS SDKsAPI REST Amazon S3.

**Important**  
Les Amazon Resource Names (ARNs) pour les points d'accès Object Lambda utilisent le nom de service. `s3-object-lambda` Ainsi, le point d'accès Object Lambda ARNs commence par`arn:aws::s3-object-lambda`, au lieu de`arn:aws::s3`, par celui qui est utilisé avec d'autres points d'accès.

## Comment trouver l’ARN de votre point d’accès Object Lambda
<a name="olap-find-arn"></a>

Pour utiliser un point d'accès Object Lambda avec le AWS CLI ou AWS SDKs, vous devez connaître le nom de ressource Amazon (ARN) du point d'accès Object Lambda. Les exemples suivants montrent comment trouver l’ARN d’un point d’accès Object Lambda à l’aide de la console Amazon S3 ou de l’ AWS CLI. 

### Utilisation de la console S3
<a name="olap-use-arn-console"></a>

**Pour trouver l’ARN de votre point d’accès Object Lambda avec la console**

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

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

1. Sélectionnez le bouton d’option en regard du point d’accès Object Lambda dont vous souhaitez copier l’ARN.

1. Choisissez **Copier l’ARN**.

### À l'aide du AWS CLI
<a name="olap-use-arn-cli"></a>

**Pour trouver l'ARN de votre point d'accès Object Lambda à l'aide du AWS CLI**

1. Pour récupérer la liste des points d’accès Object Lambda associés à votre Compte AWS, exécutez la commande suivante. Avant d'exécuter la commande, remplacez l'identifiant du compte *`111122223333`* par le Compte AWS vôtre.

   ```
   aws s3control list-access-points-for-object-lambda --account-id 111122223333
   ```

1. Lisez la sortie de la commande pour trouver l’ARN du point d’accès Object Lambda que vous souhaitez utiliser. La sortie de la commande précédente doit ressembler à celle de l’exemple suivant.

   ```
   {
       "ObjectLambdaAccessPointList": [
           {
               "Name": "my-object-lambda-ap",
               "ObjectLambdaAccessPointArn": "arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/my-object-lambda-ap"
           },
           ...
       ]
   }
   ```

## Comment utiliser un alias de type compartiment pour votre point d’accès Object Lambda de compartiment S3
<a name="ol-access-points-alias"></a>

Quand vous créez un point d’accès Object Lambda, Amazon S3 génère automatiquement un alias unique pour votre point d’accès Object Lambda. Vous pouvez utiliser cet alias à la place d’un nom de compartiment Amazon S3 ou de l’Amazon Resource Name (ARN) du point d’accès Object Lambda dans une demande pour les opérations de plan de données de point d’accès. Pour obtenir la liste de ces opérations, consultez la page [Compatibilité des points d’accès](access-points-service-api-support.md).

Un nom d’alias de point d’accès Object Lambda est créé dans le même espace de noms qu’un compartiment Amazon S3. Ce nom d’alias est généré automatiquement et ne peut pas être modifié. Pour un point d’accès Object Lambda existant, un alias est automatiquement attribué. Un nom d’alias de point d’accès Object Lambda répond à toutes les exigences d’un nom de compartiment Amazon S3 valide et comprend les parties suivantes :

`Object Lambda Access Point name prefix-metadata--ol-s3`

**Note**  
Le suffixe `--ol-s3` est réservé aux noms d’alias de point d’accès Object Lambda et ne peut pas être utilisé pour les noms de compartiment ou de point d’accès Object Lambda. Pour plus d’informations sur les règles d’attribution de noms des compartiments Amazon S3, consultez [Règles de dénomination des compartiments à usage général](bucketnamingrules.md).

Voici des exemples d’ARN et d’alias de point d’accès Object Lambda pour un point d’accès Object Lambda nommé `my-object-lambda-access-point` :
+ **ARN** – `arn:aws:s3-object-lambda:region:account-id:accesspoint/my-object-lambda-access-point`
+ **Alias de point d’accès Object Lambda** : `my-object-lambda-acc-1a4n8yjrb3kda96f67zwrwiiuse1a--ol-s3`

Lorsque vous utilisez un point d’accès Object Lambda, vous pouvez utiliser le nom d’alias du point d’accès Object Lambda sans d’importantes modifications de code.

Lorsque vous supprimez un point d’accès Object Lambda, le nom d’alias du point d’accès Object Lambda devient inactif et n’est plus provisionné.

### Comment trouver l’alias de votre point d’accès Object Lambda
<a name="olap-find-alias"></a>

#### Utilisation de la console S3
<a name="olap-use-alias-console"></a>

**Pour trouver l’alias de votre point d’accès Object Lambda avec la console**

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

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

1. Pour le point d’accès Object Lambda que vous souhaitez utiliser, copiez la valeur de l’**alias du point d’accès Object Lambda**.

#### À l'aide du AWS CLI
<a name="olap-use-alias-cli"></a>

Lorsque vous créez un point d’accès Object Lambda, Amazon S3 génère automatiquement un nom d’alias de point d’accès Object Lambda, comme illustré dans l’exemple de commande suivant. Pour exécuter cette commande, remplacez `user input placeholders` par vos propres informations. Pour plus d'informations sur la création d'un point d'accès Object Lambda à l'aide du AWS CLI, consultez. [Pour créer un point d'accès Object Lambda à l'aide du AWS CLI](olap-create.md#olap-create-cli-specific)

```
aws s3control create-access-point-for-object-lambda --account-id 111122223333 --name my-object-lambda-access-point --configuration file://my-olap-configuration.json
{
    "ObjectLambdaAccessPointArn": "arn:aws:s3:region:111122223333:accesspoint/my-access-point",
    "Alias": {
        "Value": "my-object-lambda-acc-1a4n8yjrb3kda96f67zwrwiiuse1a--ol-s3",
        "Status": "READY"
    }
}
```

Le nom d’alias du point d’accès Object Lambda généré comporte deux champs : 
+ Le champ `Value` est la valeur d’alias du point d’accès Object Lambda. 
+ Le champ `Status` est le statut de l’alias du point d’accès Object Lambda. Si le statut est `PROVISIONING`, Amazon S3 fournit l’alias du point d’accès Object Lambda, qui n’est pas encore prêt à être utilisé. Si le statut est `READY`, l’alias du point d’accès Object Lambda a été correctement provisionné et est prêt à être utilisé.

Pour plus d’informations sur le type de données `ObjectLambdaAccessPointAlias` dans l’API REST, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPointForObjectLambda.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPointForObjectLambda.html) et [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ObjectLambdaAccessPointAlias.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ObjectLambdaAccessPointAlias.html) dans la *Référence des API Amazon Simple Storage Service*.

### Comment utiliser l’alias du point d’accès Object Lambda
<a name="use-olap-alias"></a>

Vous pouvez utiliser un alias de point d’accès Object Lambda plutôt qu’un nom de compartiment Amazon S3 pour les opérations répertoriées dans [Compatibilité des points d’accès](access-points-service-api-support.md).

L' AWS CLI exemple de `get-bucket-location` commande suivant utilise l'alias du point d'accès du compartiment pour renvoyer le nom dans Région AWS lequel se trouve le compartiment. Pour exécuter cette commande, remplacez `user input placeholders` par vos propres informations.

```
aws s3api get-bucket-location --bucket my-object-lambda-acc-w7i37nq6xuzgax3jw3oqtifiusw2a--ol-s3
            
{
    "LocationConstraint": "us-west-2"
}
```

Si l’alias du point d’accès Object Lambda indiqué dans une demande n’est pas valide, le code d’erreur `InvalidAccessPointAliasError` est renvoyé. Pour plus d’informations sur `InvalidAccessPointAliasError`, consultez [List of Error Codes](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList) dans la *Référence des API Amazon Simple Storage Service*.

Les limites d’un alias de point d’accès Object Lambda sont les mêmes que celles d’un alias de point d’accès. Pour plus d’informations sur les limites d’un alias de point d’accès, consultez [Limitations des alias de point d’accès](access-points-naming.md#use-ap-alias-limitations).

# Considérations sur la sécurité pour les points d’accès S3 Object Lambda
<a name="olap-security"></a>

**Note**  
Depuis le 7 novembre 2025, S3 Object Lambda n'est disponible que pour les clients existants qui utilisent actuellement le service, ainsi que pour certains AWS partenaires du réseau de partenaires (APN). Pour des fonctionnalités semblables à celles de S3 Object Lambda, cliquez ici : [Modification de la disponibilité d’Amazon S3 Object Lambda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Avec Amazon S3 Object Lambda, vous pouvez effectuer des transformations personnalisées sur les données lorsqu'elles quittent Amazon S3 en utilisant l'échelle et la flexibilité d'une plate-forme AWS Lambda de calcul. S3 et Lambda restent sécurisés par défaut, mais une attention particulière de l’auteur de fonction Lambda est nécessaire pour maintenir cette sécurité. S3 Object Lambda nécessite que tous les accès soient effectués par des mandataires authentifiés (pas d’accès anonyme) et via HTTPS.

Pour limiter les risques de sécurité, nous vous recommandons de respecter les points suivants : 
+ Étendez le rôle d’exécution Lambda au plus petit ensemble d’autorisations possible.
+ Dans la mesure du possible, veillez à ce que votre fonction Lambda accède à Amazon S3 via l’URL présignée fournie. 

## Configuration des politiques IAM
<a name="olap-iam-policies"></a>

Les points d'accès S3 prennent en charge les politiques de ressources Gestion des identités et des accès AWS (IAM) qui vous permettent de contrôler l'utilisation du point d'accès par ressource, par utilisateur ou selon d'autres conditions. Pour de plus amples informations, veuillez consulter [Configuration des politiques IAM pour les points d’accès Object Lambda](olap-policies.md).

## Comportement de chiffrement
<a name="olap-encryption"></a>

Étant donné que les points d'accès Object Lambda utilisent à la fois Amazon S3 et qu' AWS Lambda il existe des différences de comportement de chiffrement. Pour plus d’informations sur le comportement de chiffrement S3 par défaut, consultez [Définition du comportement de chiffrement côté serveur par défaut pour les compartiments Amazon S3](bucket-encryption.md).
+ Lorsque vous utilisez le chiffrement côté serveur S3 avec des points d’accès Object Lambda, l’objet est déchiffré avant d’être envoyé à Lambda. Une fois l’objet envoyé à Lambda, il est traité sous sa forme déchiffrée (dans le cas d’une requête `GET` ou `HEAD`).
+ Pour empêcher la journalisation de la clé de chiffrement, S3 rejette les requêtes `GET` et `HEAD` pour les objets chiffrés côté serveur avec des clés fournies par le client (SSE-C). Toutefois, la fonction Lambda peut encore récupérer ces objets si elle a accès à la clé fournie par le client.
+ Lorsque vous utilisez le chiffrement côté client S3 avec des points d’accès Object Lambda, veillez à ce que Lambda ait accès à la clé de chiffrement pour pouvoir déchiffrer et rechiffrer l’objet.

## Sécurité des points d’accès
<a name="olap-access-points-security"></a>

S3 Object Lambda utilise deux points d'accès, un point d'accès Object Lambda et un point d'accès S3 standard, appelé *point d'accès de prise en charge*. Lorsque vous effectuez une demande auprès d'un point d'accès Object Lambda, S3 appelle Lambda en votre nom ou délègue la demande au point d'accès de prise en charge, en fonction de la configuration S3 Object Lambda. Lorsque Lambda est invoqué pour une demande, S3 génère une URL présignée sur votre objet en votre nom via le point d’accès de prise en charge. Votre fonction Lambda reçoit cette URL en entrée quand la fonction est invoquée.

Vous pouvez définir votre fonction Lambda pour utiliser cette URL présignée pour récupérer l’objet d’origine, au lieu d’invoquer S3 directement. Ce modèle vous permet d’appliquer de meilleures limites de sécurité à vos objets. Vous pouvez limiter l’accès direct des objets à un ensemble limité de rôles ou d’utilisateurs IAM par le biais de compartiments S3 ou de points d’accès S3. Cette approche protège également vos fonctions Lambda face au [problème de l’adjoint confus](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), dans le cadre duquel une fonction mal configurée, dotée d’autorisations différentes de l’appelant, pourrait autoriser ou refuser l’accès aux objets alors qu’elle ne le devrait pas.

## Accès public au point d’accès Object Lambda
<a name="olap-public-access"></a>

S3 Object Lambda n’autorise pas un accès anonyme ou public, car Amazon S3 doit autoriser votre identité pour effectuer une demande S3 Object Lambda quelconque. Lorsque vous invoquez des demandes via un point d’accès Object Lambda, vous devez avoir l’autorisation `lambda:InvokeFunction` pour la fonction Lambda configurée. De même, lorsque vous invoquez d’autres opérations d’API via un point d’accès Object Lambda, vous devez disposer des autorisations `s3:*` requises. 

Sans ces autorisations, les demandes d’invocation de Lambda et de délégation à S3 échouent avec des erreurs HTTP 403 (Interdit). Tous les accès doivent être effectués par des mandants authentifiés. Si vous avez besoin d’un accès public, vous pouvez utiliser Lambda@Edge comme alternative. Pour plus d'informations, consultez [la section Personnalisation en périphérie avec Lambda](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html) @Edge dans le manuel * CloudFront Amazon* Developer Guide.

## Adresses IP des points d’accès Object Lambda
<a name="olap-ips"></a>

Les sous-réseaux `describe-managed-prefix-lists` prennent en charge les points de terminaison de cloud privé virtuel (VPC) de la passerelle et sont liés à la table de routage des points de terminaison du VPC. Comme le point d’accès Object Lambda ne prend pas en charge le VPC de passerelle, ses plages IP sont manquantes. Les plages manquantes appartiennent à Amazon S3, mais ne sont pas prises en charge par les points de terminaison de VPC de la passerelle. Pour plus d'informations sur`describe-managed-prefix-lists`, consultez [DescribeManagedPrefixLists](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeManagedPrefixLists.html)la *référence de l'API Amazon EC2* et les [plages d'adresses AWS IP](https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html) dans le. *Références générales AWS*

# Configuration des politiques IAM pour les points d’accès Object Lambda
<a name="olap-policies"></a>

**Note**  
Depuis le 7 novembre 2025, S3 Object Lambda n'est disponible que pour les clients existants qui utilisent actuellement le service, ainsi que pour certains AWS partenaires du réseau de partenaires (APN). Pour des fonctionnalités semblables à celles de S3 Object Lambda, cliquez ici : [Modification de la disponibilité d’Amazon S3 Object Lambda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Les points d'accès Amazon S3 prennent en charge les politiques de ressources Gestion des identités et des accès AWS (IAM) que vous pouvez utiliser pour contrôler l'utilisation du point d'accès par ressource, par utilisateur ou selon d'autres conditions. Vous pouvez contrôler l’accès par le biais d’une politique de ressources facultative sur votre point d’accès Object Lambda ou d’une politique de ressources sur le point d’accès de prise en charge. Pour step-by-step des exemples, voir [Didacticiel : Transformation de données pour votre application avec S3 Object Lambda](tutorial-s3-object-lambda-uppercase.md) et[Didacticiel : Détecter et expurger des PII avec S3 Object Lambda et Amazon Comprehend](tutorial-s3-object-lambda-redact-pii.md). 

Les quatre ressources suivantes doivent disposer d’autorisations pour utiliser les points d’accès Object Lambda :
+ L’identité IAM, telle que l’utilisateur ou le rôle. Pour obtenir plus d’informations sur les identités IAM et sur les bonnes pratiques, consultez [Identités IAM (utilisateurs, groupes d’utilisateurs et rôles)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) dans le *Guide de l’utilisateur IAM*.
+ Point d'accès standard connecté à une source de données sous-jacente telle qu'un compartiment S3 ou un volume Amazon FSx pour OpenZFS. Lorsque vous utilisez des points d'accès Object Lambda, ce point d'accès standard est appelé *point d'accès de prise en charge*.
+ Le point d’accès Object Lambda.
+ La AWS Lambda fonction.

**Important**  
Avant d'enregistrer votre politique, assurez-vous de résoudre les avertissements de sécurité, les erreurs, les avertissements généraux et les suggestions de AWS Identity and Access Management Access Analyzer. IAM Access Analyzer exécute des vérifications de politiques pour valider votre politique par rapport à la [grammaire de politique](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html) et aux [bonnes pratiques](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) IAM. Ces vérifications génèrent des résultats et fournissent des recommandations exploitables pour vous aider à créer des stratégies fonctionnelles et conformes aux bonnes pratiques en matière de sécurité.   
Pour en savoir plus sur la validation des politiques à l’aide d’IAM Access Analyzer, consultez [Validation de politique IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) dans le *Guide de l’utilisateur IAM*. Pour afficher la liste des avertissements, erreurs et suggestions renvoyés par IAM Access Analyzer, consultez la [Référence de vérification de politique IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html).

Les exemples de politique suivants supposent que vous disposez des ressources suivantes :
+ Un compartiment Amazon S3 avec l’Amazon Resource Name (ARN) suivant : 

  `arn:aws:s3:::amzn-s3-demo-bucket1`
+ Un point d’accès Amazon S3 Standard sur ce compartiment avec l’ARN suivant : 

  `arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point`
+ Un point d’accès Object Lambda avec l’ARN suivant : 

  `arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/my-object-lambda-ap`
+ Une AWS Lambda fonction avec l'ARN suivant : 

  `arn:aws:lambda:us-east-1:111122223333:function:MyObjectLambdaFunction`

**Note**  
Si vous utilisez une fonction Lambda de votre compte, vous devez inclure la version de cette fonction dans votre déclaration de politique. Dans l'exemple d'ARN suivant, la version est indiquée par *1* :  
`arn:aws:lambda:us-east-1:111122223333:function:MyObjectLambdaFunction:1`  
Lambda ne prend pas en charge l’ajout de politiques IAM à la version `$LATEST`. Pour plus d’informations sur les versions des fonctions Lambda, consultez [Versions de fonctions Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) dans le *Guide du développeur AWS Lambda *.

**Example – Stratégie de compartiment qui délègue le contrôle d’accès aux points d’accès standard**  
L’exemple de stratégie de compartiment S3 suivant délègue le contrôle d’accès pour un compartiment aux points d’accès standard du compartiment. Cette politique permet un accès complet à tous les points d’accès appartenant au compte du propriétaire du compartiment. Ainsi, tous les accès à ce compartiment sont contrôlés par les politiques attachées à ses points d’accès. Les utilisateurs peuvent lire à partir du compartiment uniquement via un point d’accès, ce qui signifie que les opérations peuvent uniquement être invoquées via des points d’accès. Pour de plus amples informations, veuillez consulter [Délégation du contrôle d’accès aux points d’accès](access-points-policies.md#access-points-delegating-control).     
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement" : [
    {
        "Effect": "Allow",
        "Principal" : { "AWS":"account-ARN"},
        "Action" : "*",
        "Resource" : [
            "arn:aws:s3:::amzn-s3-demo-bucket", 
            "arn:aws:s3:::amzn-s3-demo-bucket/*"
        ],
        "Condition": {
            "StringEquals" : { "s3:DataAccessPointAccount" : "Bucket owner's account ID" }
        }
    }]
}
```

**Example  : politique IAM qui accorde à un utilisateur les autorisations nécessaires pour utiliser un point d’accès Object Lambda**  
La politique IAM suivante accorde à un utilisateur des autorisations sur la fonction Lambda, le point d’accès standard et le point d’accès Object Lambda.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowLambdaInvocation",
      "Action": [
        "lambda:InvokeFunction"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:lambda:us-east-1:111122223333:function:MyObjectLambdaFunction:1",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:CalledVia": [
            "s3-object-lambda.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "AllowStandardAccessPointAccess",
      "Action": [
        "s3:Get*",
        "s3:List*"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point/*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:CalledVia": [
            "s3-object-lambda.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "AllowObjectLambdaAccess",
      "Action": [
        "s3-object-lambda:Get*",
        "s3-object-lambda:List*"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/my-object-lambda-ap"
    }
  ]
}
```

## Activation des autorisations pour les rôles d’exécution Lambda
<a name="olap-execution-role"></a>

Quand des demandes `GET` sont adressées à un point d’accès Object Lambda, votre fonction Lambda a besoin d’une autorisation pour envoyer les données au point d’accès S3 Object Lambda. Cette autorisation est fournie en activant l’autorisation `s3-object-lambda:WriteGetObjectResponse` sur le rôle d’exécution de votre fonction Lambda. Vous pouvez créer un rôle d’exécution ou mettre à jour un rôle existant.

**Note**  
Votre fonction a besoin de l’autorisation `s3-object-lambda:WriteGetObjectResponse` uniquement si vous réalisez une requête `GET`.

**Pour créer un rôle d’exécution dans la console IAM**

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Dans le volet de navigation de gauche, choisissez **Rôles**. 

1. Choisissez **Créer un rôle**.

1. Sous **Cas d’utilisation courants**, choisissez **Lambda**.

1. Choisissez **Suivant**.

1. Sur la page **Ajouter des autorisations**, recherchez la stratégie AWS gérée [https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AmazonS3ObjectLambdaExecutionRolePolicy$serviceLevelSummary](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AmazonS3ObjectLambdaExecutionRolePolicy$serviceLevelSummary), puis cochez la case à côté du nom de la stratégie. 

   Cette politique doit contenir l’action `s3-object-lambda:WriteGetObjectResponse`.

1. Choisissez **Suivant**.

1. Sur la page **Name, review, and create** (Nommer, vérifier et créer), pour **Role name** (Nom du rôle), saisissez **s3-object-lambda-role**.

1. (Facultatif) Ajoutez une description et des balises pour ce rôle. 

1. Choisissez **Créer un rôle**.

1. Appliquez l’objet récemment créé **s3-object-lambda-role** comme rôle d’exécution de votre fonction Lambda. Cela peut être fait pendant ou après la création de la fonction Lambda dans la console Lambda.

Pour plus d’informations sur les rôles d’exécution, consultez [Rôle d’exécution Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) dans le *Guide du développeur AWS Lambda *.

## Utilisation des clés de contexte avec des points d’accès Object Lambda
<a name="olap-keys"></a>

S3 Object Lambda évaluera les clés de contexte telles que `s3-object-lambda:TlsVersion` ou `s3-object-lambda:AuthType` qui sont liées à la connexion ou à la signature de la demande. Toutes les autres clés de contexte, telles que `s3:prefix`, sont évaluées par Simple Storage Service (Amazon S3). 

## Prise en charge du CORS du point d’accès Object Lambda
<a name="olap-cors"></a>

Quand S3 Object Lambda reçoit une demande d’un navigateur ou que la demande inclut un en-tête `Origin`, S3 Object Lambda ajoute toujours un champ d’en-tête `"AllowedOrigins":"*"`.

Pour plus d’informations, consultez [Utilisation du partage des ressources entre origines multiples (CORS)](cors.md).

# Écriture de fonctions Lambda pour les points d’accès S3 Object Lambda
<a name="olap-writing-lambda"></a>

**Note**  
Depuis le 7 novembre 2025, S3 Object Lambda n'est disponible que pour les clients existants qui utilisent actuellement le service, ainsi que pour certains AWS partenaires du réseau de partenaires (APN). Pour des fonctionnalités semblables à celles de S3 Object Lambda, cliquez ici : [Modification de la disponibilité d’Amazon S3 Object Lambda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Cette section explique comment écrire des AWS Lambda fonctions à utiliser avec les points d'accès Amazon S3 Object Lambda.

Pour en savoir plus sur end-to-end les procédures complètes relatives à certaines tâches S3 Object Lambda, consultez les rubriques suivantes :
+ [Didacticiel : Transformation de données pour votre application avec S3 Object Lambda](tutorial-s3-object-lambda-uppercase.md)
+ [Didacticiel : Détecter et expurger des PII avec S3 Object Lambda et Amazon Comprehend](tutorial-s3-object-lambda-redact-pii.md)
+ [Tutoriel : Utilisation de S3 Object Lambda pour filigraner dynamiquement des images au fur et à mesure de leur récupération](https://aws.amazon.com/getting-started/hands-on/amazon-s3-object-lambda-to-dynamically-watermark-images/?ref=docs_gateway/amazons3/olap-writing-lambda.html)

**Topics**
+ [Utilisation de requêtes `GetObject` dans Lambda](#olap-getobject-response)
+ [Utilisation de requêtes `HeadObject` dans Lambda](#olap-headobject)
+ [Utilisation de requêtes `ListObjects` dans Lambda](#olap-listobjects)
+ [Utilisation de requêtes `ListObjectsV2` dans Lambda](#olap-listobjectsv2)
+ [Format et utilisation du contexte d’événement](olap-event-context.md)
+ [Utilisation des en-têtes Range et partNumber](range-get-olap.md)

## Utilisation de requêtes `GetObject` dans Lambda
<a name="olap-getobject-response"></a>

Cette section suppose que votre point d’accès Object Lambda est configuré pour appeler la fonction Lambda pour `GetObject`. S3 Object Lambda inclut l’opération d’API Amazon S3, `WriteGetObjectResponse`, qui permet à la fonction Lambda de fournir des données personnalisées et des en-têtes de réponse à l’appelant `GetObject`. 

`WriteGetObjectResponse` vous offre un contrôle étendu sur le code de statut, les en-têtes de réponse et le corps de réponse, en fonction de vos besoins de traitement. Vous pouvez utiliser `WriteGetObjectResponse` pour répondre avec l’ensemble de l’objet transformé, des parties de l’objet transformé ou d’autres réponses basées sur le contexte de votre application. La section suivante présente des exemples uniques d’utilisation de l’opération d’API `WriteGetObjectResponse`.
+ **Exemple 1 :** répondre avec un code de statut HTTP 403 (Interdit) 
+ **Exemple 2 :** répondre avec une image transformée
+ **Exemple 3 :** diffuser du contenu compressé

**Exemple 1 : répondre avec un code de statut HTTP 403 (Interdit) **

Vous pouvez utiliser `WriteGetObjectResponse` pour répondre avec le code d’état HTTP 403 (Interdit) en fonction du contenu de l’objet.

------
#### [ Java ]



```
package com.amazon.s3.objectlambda;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent;
import software.amazon.awssdk.core.sync.RequestBody;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.WriteGetObjectResponseRequest;

import java.io.ByteArrayInputStream;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example1 {

    public void handleRequest(S3ObjectLambdaEvent event, Context context) throws Exception {
        S3Client s3Client = S3Client.builder().build();

        // Check to see if the request contains all of the necessary information.
        // If it does not, send a 4XX response and a custom error code and message.
        // Otherwise, retrieve the object from S3 and stream it
        // to the client unchanged.
        var tokenIsNotPresent = !event.getUserRequest().getHeaders().containsKey("requiredToken");
        if (tokenIsNotPresent) {
            s3Client.writeGetObjectResponse(WriteGetObjectResponseRequest.builder()
                    .requestRoute(event.outputRoute())
                    .requestToken(event.outputToken())
                    .statusCode(403)
                    .contentLength(0L)
                    .errorCode("MissingRequiredToken")
                    .errorMessage("The required token was not present in the request.")
                    .build(),
                    RequestBody.fromInputStream(new ByteArrayInputStream(new byte[0]), 0L));
            return;
        }

        // Prepare the presigned URL for use and make the request to S3.
        HttpClient httpClient = HttpClient.newBuilder().build();
        var presignedResponse = httpClient.send(
                HttpRequest.newBuilder(new URI(event.inputS3Url())).GET().build(),
                HttpResponse.BodyHandlers.ofInputStream());

        // Stream the original bytes back to the caller.
        s3Client.writeGetObjectResponse(WriteGetObjectResponseRequest.builder()
                .requestRoute(event.outputRoute())
                .requestToken(event.outputToken())
                .build(),
                RequestBody.fromInputStream(presignedResponse.body(),
                    presignedResponse.headers().firstValueAsLong("content-length").orElse(-1L)));
    }
}
```

------
#### [ Python ]



```
import boto3
import requests 

def handler(event, context):
    s3 = boto3.client('s3')

    """
    Retrieve the operation context object from the event. This object indicates where the WriteGetObjectResponse request
    should be delivered and contains a presigned URL in 'inputS3Url' where we can download the requested object from.
    The 'userRequest' object has information related to the user who made this 'GetObject' request to 
    S3 Object Lambda.
    """
    get_context = event["getObjectContext"]
    user_request_headers = event["userRequest"]["headers"]

    route = get_context["outputRoute"]
    token = get_context["outputToken"]
    s3_url = get_context["inputS3Url"]

    # Check for the presence of a 'CustomHeader' header and deny or allow based on that header.
    is_token_present = "SuperSecretToken" in user_request_headers

    if is_token_present:
        # If the user presented our custom 'SuperSecretToken' header, we send the requested object back to the user.
        response = requests.get(s3_url)
        s3.write_get_object_response(RequestRoute=route, RequestToken=token, Body=response.content)
    else:
        # If the token is not present, we send an error back to the user. 
        s3.write_get_object_response(RequestRoute=route, RequestToken=token, StatusCode=403,
        ErrorCode="NoSuperSecretTokenFound", ErrorMessage="The request was not secret enough.")

    # Gracefully exit the Lambda function.
    return { 'status_code': 200 }
```

------
#### [ Node.js ]



```
const { S3 } = require('aws-sdk');
const axios = require('axios').default;

exports.handler = async (event) => {
    const s3 = new S3();

    // Retrieve the operation context object from the event. This object indicates where the WriteGetObjectResponse request
    // should be delivered and contains a presigned URL in 'inputS3Url' where we can download the requested object from.
    // The 'userRequest' object has information related to the user who made this 'GetObject' request to S3 Object Lambda.
    const { userRequest, getObjectContext } = event;
    const { outputRoute, outputToken, inputS3Url } = getObjectContext;

    // Check for the presence of a 'CustomHeader' header and deny or allow based on that header.
    const isTokenPresent = Object
        .keys(userRequest.headers)
        .includes("SuperSecretToken");

    if (!isTokenPresent) {
        // If the token is not present, we send an error back to the user. The 'await' in front of the request
        // indicates that we want to wait for this request to finish sending before moving on. 
        await s3.writeGetObjectResponse({
            RequestRoute: outputRoute,
            RequestToken: outputToken,
            StatusCode: 403,
            ErrorCode: "NoSuperSecretTokenFound",
            ErrorMessage: "The request was not secret enough.",
        }).promise();
    } else {
        // If the user presented our custom 'SuperSecretToken' header, we send the requested object back to the user.
        // Again, note the presence of 'await'.
        const presignedResponse = await axios.get(inputS3Url);
        await s3.writeGetObjectResponse({
            RequestRoute: outputRoute,
            RequestToken: outputToken,
            Body: presignedResponse.data,
        }).promise();
    }

    // Gracefully exit the Lambda function.
    return { statusCode: 200 };
}
```

------

**Exemple 2 :** répondre avec une image transformée

Lorsque vous effectuez une transformation d’image, vous pouvez constater que vous avez besoin de tous les octets de l’objet source avant de pouvoir commencer à les traiter. Dans ce cas, votre demande `WriteGetObjectResponse` renvoie l’objet entier à l’application requérante en un seul appel.

------
#### [ Java ]



```
package com.amazon.s3.objectlambda;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent;
import software.amazon.awssdk.core.sync.RequestBody;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.WriteGetObjectResponseRequest;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.awt.Image;
import java.io.ByteArrayOutputStream;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example2V2 {

    private static final int HEIGHT = 250;
    private static final int WIDTH = 250;

    public void handleRequest(S3ObjectLambdaEvent event, Context context) throws Exception {
        S3Client s3Client = S3Client.builder().build();
        HttpClient httpClient = HttpClient.newBuilder().build();

        // Prepare the presigned URL for use and make the request to S3.
        var presignedResponse = httpClient.send(
                HttpRequest.newBuilder(new URI(event.inputS3Url())).GET().build(),
                HttpResponse.BodyHandlers.ofInputStream());

        // The entire image is loaded into memory here so that we can resize it.
        // Once the resizing is completed, we write the bytes into the body
        // of the WriteGetObjectResponse request.
        var originalImage = ImageIO.read(presignedResponse.body());
        var resizingImage = originalImage.getScaledInstance(WIDTH, HEIGHT, Image.SCALE_DEFAULT);
        var resizedImage = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
        resizedImage.createGraphics().drawImage(resizingImage, 0, 0, WIDTH, HEIGHT, null);

        var baos = new ByteArrayOutputStream();
        ImageIO.write(resizedImage, "png", baos);

        // Stream the bytes back to the caller.
        s3Client.writeGetObjectResponse(WriteGetObjectResponseRequest.builder()
                .requestRoute(event.outputRoute())
                .requestToken(event.outputToken())
                .build(), RequestBody.fromBytes(baos.toByteArray()));
    }
}
```

------
#### [ Python ]



```
import boto3
import requests 
import io
from PIL import Image

def handler(event, context):
    """
    Retrieve the operation context object from the event. This object indicates where the WriteGetObjectResponse request
    should be delivered and has a presigned URL in 'inputS3Url' where we can download the requested object from.
    The 'userRequest' object has information related to the user who made this 'GetObject' request to 
    S3 Object Lambda.
    """
    get_context = event["getObjectContext"]
    route = get_context["outputRoute"]
    token = get_context["outputToken"]
    s3_url = get_context["inputS3Url"]

    """
    In this case, we're resizing .png images that are stored in S3 and are accessible through the presigned URL
    'inputS3Url'.
    """
    image_request = requests.get(s3_url)
    image = Image.open(io.BytesIO(image_request.content))
    image.thumbnail((256,256), Image.ANTIALIAS)

    transformed = io.BytesIO()
    image.save(transformed, "png")

    # Send the resized image back to the client.
    s3 = boto3.client('s3')
    s3.write_get_object_response(Body=transformed.getvalue(), RequestRoute=route, RequestToken=token)

    # Gracefully exit the Lambda function.
    return { 'status_code': 200 }
```

------
#### [ Node.js ]



```
const { S3 } = require('aws-sdk');
const axios = require('axios').default;
const sharp = require('sharp');

exports.handler = async (event) => {
    const s3 = new S3();

    // Retrieve the operation context object from the event. This object indicates where the WriteGetObjectResponse request
    // should be delivered and has a presigned URL in 'inputS3Url' where we can download the requested object from.
    const { getObjectContext } = event;
    const { outputRoute, outputToken, inputS3Url } = getObjectContext;

    // In this case, we're resizing .png images that are stored in S3 and are accessible through the presigned URL
    // 'inputS3Url'.
    const { data } = await axios.get(inputS3Url, { responseType: 'arraybuffer' });

    // Resize the image.
    const resized = await sharp(data)
        .resize({ width: 256, height: 256 })
        .toBuffer();

    // Send the resized image back to the client.
    await s3.writeGetObjectResponse({
        RequestRoute: outputRoute,
        RequestToken: outputToken,
        Body: resized,
    }).promise();

    // Gracefully exit the Lambda function.
    return { statusCode: 200 };
}
```

------

**Exemple 3 :** diffuser du contenu compressé

Lorsque vous compressez des objets, les données compressées sont produites de manière incrémentielle. Par conséquent, vous pouvez utiliser votre demande `WriteGetObjectResponse` pour renvoyer les données compressées dès qu’elles sont prêtes. Comme le montre cet exemple, vous n’avez pas besoin de connaître la longueur de la transformation terminée.

------
#### [ Java ]



```
package com.amazon.s3.objectlambda;

import com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent;
import com.amazonaws.services.lambda.runtime.Context;
import software.amazon.awssdk.core.sync.RequestBody;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.WriteGetObjectResponseRequest;

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example3 {

    public void handleRequest(S3ObjectLambdaEvent event, Context context) throws Exception {
        S3Client s3Client = S3Client.builder().build();
        HttpClient httpClient = HttpClient.newBuilder().build();

        // Request the original object from S3.
        var presignedResponse = httpClient.send(
                HttpRequest.newBuilder(new URI(event.inputS3Url())).GET().build(),
                HttpResponse.BodyHandlers.ofInputStream());

        // Consume the incoming response body from the presigned request,
        // apply our transformation on that data, and emit the transformed bytes
        // into the body of the WriteGetObjectResponse request as soon as they're ready.
        // This example compresses the data from S3, but any processing pertinent
        // to your application can be performed here.
        var bodyStream = new GZIPCompressingInputStream(presignedResponse.body());

        // Stream the bytes back to the caller.
        s3Client.writeGetObjectResponse(WriteGetObjectResponseRequest.builder()
                .requestRoute(event.outputRoute())
                .requestToken(event.outputToken())
                .build(),
                RequestBody.fromInputStream(bodyStream,
                    presignedResponse.headers().firstValueAsLong("content-length").orElse(-1L)));
    }
}
```

------
#### [ Python ]



```
import boto3
import requests
import zlib
from botocore.config import Config


"""
A helper class to work with content iterators. Takes an interator and compresses the bytes that come from it. It
implements 'read' and '__iter__' so that the SDK can stream the response. 
"""
class Compress:
    def __init__(self, content_iter):
        self.content = content_iter
        self.compressed_obj = zlib.compressobj()

    def read(self, _size):
        for data in self.__iter__()
            return data

    def __iter__(self):
        while True:
            data = next(self.content)
            chunk = self.compressed_obj.compress(data)
            if not chunk:
                break

            yield chunk

        yield self.compressed_obj.flush()


def handler(event, context):
    """
    Setting the 'payload_signing_enabled' property to False allows us to send a streamed response back to the client.
    in this scenario, a streamed response means that the bytes are not buffered into memory as we're compressing them,
    but instead are sent straight to the user.
    """
    my_config = Config(
        region_name='eu-west-1',
        signature_version='s3v4',
        s3={
            "payload_signing_enabled": False
        }
    )
    s3 = boto3.client('s3', config=my_config)

    """
    Retrieve the operation context object from the event. This object indicates where the WriteGetObjectResponse request
    should be delivered and has a presigned URL in 'inputS3Url' where we can download the requested object from.
    The 'userRequest' object has information related to the user who made this 'GetObject' request to S3 Object Lambda.
    """
    get_context = event["getObjectContext"]
    route = get_context["outputRoute"]
    token = get_context["outputToken"]
    s3_url = get_context["inputS3Url"]

    # Compress the 'get' request stream.
    with requests.get(s3_url, stream=True) as r:
        compressed = Compress(r.iter_content())

        # Send the stream back to the client.
        s3.write_get_object_response(Body=compressed, RequestRoute=route, RequestToken=token, ContentType="text/plain",
                                     ContentEncoding="gzip")

    # Gracefully exit the Lambda function.
    return {'status_code': 200}
```

------
#### [ Node.js ]



```
const { S3 } = require('aws-sdk');
const axios = require('axios').default;
const zlib = require('zlib');

exports.handler = async (event) => {
    const s3 = new S3();

    // Retrieve the operation context object from the event. This object indicates where the WriteGetObjectResponse request
    // should be delivered and has a presigned URL in 'inputS3Url' where we can download the requested object from.
    const { getObjectContext } = event;
    const { outputRoute, outputToken, inputS3Url } = getObjectContext;

    // Download the object from S3 and process it as a stream, because it might be a huge object and we don't want to
    // buffer it in memory. Note the use of 'await' because we want to wait for 'writeGetObjectResponse' to finish 
    // before we can exit the Lambda function. 
    await axios({
        method: 'GET',
        url: inputS3Url,
        responseType: 'stream',
    }).then(
        // Gzip the stream.
        response => response.data.pipe(zlib.createGzip())
    ).then(
        // Finally send the gzip-ed stream back to the client.
        stream => s3.writeGetObjectResponse({
            RequestRoute: outputRoute,
            RequestToken: outputToken,
            Body: stream,
            ContentType: "text/plain",
            ContentEncoding: "gzip",
        }).promise()
    );

    // Gracefully exit the Lambda function.
    return { statusCode: 200 };
}
```

------

**Note**  
Bien que S3 Object Lambda laisse jusqu’à 60 secondes pour envoyer une réponse complète à l’appelant via la demande `WriteGetObjectResponse`, le temps réel disponible peut être inférieur. Par exemple, le délai d’expiration de votre fonction Lambda peut être inférieur à 60 secondes. Dans d’autres cas, l’appelant peut avoir des délais d’attente plus stricts. 

Pour que l’appelant d’origine reçoive une réponse autre que le code de statut HTTP 500 (Erreur de serveur interne), l’appel `WriteGetObjectResponse` doit être terminé. Si la fonction Lambda renvoie une réponse, avec une exception ou autrement, avant que l’opération d’API `WriteGetObjectResponse` soit appelée, l’appelant d’origine reçoit une réponse 500 (Erreur de serveur interne). Les exceptions lancées pendant le temps nécessaire pour compléter la réponse entraînent des réponses tronquées à l’appelant. Si la fonction Lambda reçoit une réponse avec code de statut HTTP 200 (OK) de l’appel d’API `WriteGetObjectResponse`, l’appelant d’origine a envoyé la demande complète. La réponse de la fonction Lambda, qu’une exception soit déclenchée ou non, est ignorée par S3 Object Lambda.

Au moment d’appeler l’opération d’API `WriteGetObjectResponse`, Amazon S3 exige la route et le jeton de demande du contexte d’événement. Pour plus d’informations, consultez [Format et utilisation du contexte d’événement](olap-event-context.md).

Les paramètres de route et de jeton de demande sont nécessaires pour connecter la réponse `WriteGetObjectResult` à l’appelant d’origine. Bien qu’il soit toujours approprié de réessayer les réponses 500 (Erreur de serveur interne), car le jeton de demande est un jeton à usage unique, les tentatives ultérieures de l’utiliser peuvent entraîner des réponses avec code de statut HTTP 400 (Demande incorrecte). Bien que l’appel à `WriteGetObjectResponse` avec la route et les jetons de demande n’ait pas besoin d’être réalisé à partir de la fonction Lambda invoquée, il doit être réalisé par une identité figurant dans le même compte. L’appel doit également être terminé avant que la fonction Lambda ne termine l’exécution.

## Utilisation de requêtes `HeadObject` dans Lambda
<a name="olap-headobject"></a>

Cette section suppose que votre point d'accès Object Lambda est configuré pour appeler la fonction Lambda pour `HeadObject`. Lambda recevra une charge utile JSON contenant une clé appelée `headObjectContext`. Dans le contexte, il existe une propriété unique appelée `inputS3Url`, qui est une URL présignée pour le point d’accès de prise en charge pour `HeadObject`.

L’URL présignée inclura les propriétés suivantes si elles sont spécifiées : 
+ `versionId` (dans les paramètres de la requête)
+ `requestPayer` (dans l’en-tête `x-amz-request-payer`)
+ `expectedBucketOwner` (dans l'en-tête `x-amz-expected-bucket-owner`)

Les autres propriétés ne seront pas présignées et ne seront donc pas incluses. Les options non signées envoyées sous forme d’en-têtes peuvent être ajoutées manuellement à la demande lors de l’appel de l’URL présignée qui se trouve dans les en-têtes `userRequest`. Les options de chiffrement côté serveur ne sont pas prises en charge pour `HeadObject`.

Pour les paramètres d’URI de la syntaxe de la demande, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html) dans la *Référence des API Amazon Simple Storage Service*.

L’exemple suivant illustre une charge utile d’entrée JSON de Lambda pour `HeadObject`.

```
{
  "xAmzRequestId": "requestId",
  "**headObjectContext**": {
    "**inputS3Url**": "https://my-s3-ap-111122223333.s3-accesspoint.us-east-1.amazonaws.com/example?X-Amz-Security-Token=<snip>"
  },
  "configuration": {
       "accessPointArn": "arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/example-object-lambda-ap",
       "supportingAccessPointArn": "arn:aws:s3:us-east-1:111122223333:accesspoint/example-ap",
       "payload": "{}"
  },
  "userRequest": {
       "url": "https://object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com/example",
       "headers": {
           "Host": "object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com",
           "Accept-Encoding": "identity",
           "X-Amz-Content-SHA256": "e3b0c44298fc1example"
       }
   },
   "userIdentity": {
       "type": "AssumedRole",
       "principalId": "principalId",
       "arn": "arn:aws:sts::111122223333:assumed-role/Admin/example",       
       "accountId": "111122223333",
       "accessKeyId": "accessKeyId",
       "sessionContext": {
            "attributes": {
            "mfaAuthenticated": "false",
            "creationDate": "Wed Mar 10 23:41:52 UTC 2021"
       },
       "sessionIssuer": {
            "type": "Role",
            "principalId": "principalId",
            "arn": "arn:aws:iam::111122223333:role/Admin",
            "accountId": "111122223333",
            "userName": "Admin"
            }
       }
    },
  "protocolVersion": "1.00"
}
```

Votre fonction Lambda doit renvoyer un objet JSON contenant les en-têtes et les valeurs qui seront renvoyés pour l’appel `HeadObject`.

L’exemple suivant illustre la structure du code JSON de réponse de Lambda pour `HeadObject`.

```
{
    "statusCode": <number>; // Required
    "errorCode": <string>;
    "errorMessage": <string>;
    "headers": {
        "Accept-Ranges": <string>,
        "x-amz-archive-status": <string>,
        "x-amz-server-side-encryption-bucket-key-enabled": <boolean>,
        "Cache-Control": <string>,
        "Content-Disposition": <string>,
        "Content-Encoding": <string>,
        "Content-Language": <string>,
        "Content-Length": <number>, // Required
        "Content-Type": <string>,
        "x-amz-delete-marker": <boolean>,
        "ETag": <string>,
        "Expires": <string>,
        "x-amz-expiration": <string>,
        "Last-Modified": <string>,
        "x-amz-missing-meta": <number>,
        "x-amz-object-lock-mode": <string>,
        "x-amz-object-lock-legal-hold": <string>,
        "x-amz-object-lock-retain-until-date": <string>,
        "x-amz-mp-parts-count": <number>,
        "x-amz-replication-status": <string>,
        "x-amz-request-charged": <string>,
        "x-amz-restore": <string>,
        "x-amz-server-side-encryption": <string>,
        "x-amz-server-side-encryption-customer-algorithm": <string>,
        "x-amz-server-side-encryption-aws-kms-key-id": <string>,
        "x-amz-server-side-encryption-customer-key-MD5": <string>,
        "x-amz-storage-class": <string>,
        "x-amz-tagging-count": <number>,
        "x-amz-version-id": <string>,
        <x-amz-meta-headers>: <string>, // user-defined metadata 
        "x-amz-meta-meta1": <string>, // example of the user-defined metadata header, it will need the x-amz-meta prefix
        "x-amz-meta-meta2": <string>
        ...
    };
}
```

L’exemple suivant montre comment utiliser l’URL pré-signée pour renseigner votre réponse en modifiant les valeurs d’en-tête selon les besoins avant de renvoyer le code JSON.

------
#### [ Python ]



```
import requests

def lambda_handler(event, context):
    print(event)
    
    # Extract the presigned URL from the input.
    s3_url = event["headObjectContext"]["inputS3Url"]

    # Get the head of the object from S3.     
    response = requests.head(s3_url)
    
    # Return the error to S3 Object Lambda (if applicable).           
    if (response.status_code >= 400):
        return {
            "statusCode": response.status_code,
            "errorCode": "RequestFailure",                         
            "errorMessage": "Request to S3 failed"    
    }
    
    # Store the headers in a dictionary.
    response_headers = dict(response.headers)

    # This obscures Content-Type in a transformation, it is optional to add
    response_headers["Content-Type"] = "" 

    # Return the headers to S3 Object Lambda.     
    return {
        "statusCode": response.status_code,
        "headers": response_headers     
        }
```

------

## Utilisation de requêtes `ListObjects` dans Lambda
<a name="olap-listobjects"></a>

Cette section suppose que votre point d'accès Object Lambda est configuré pour appeler la fonction Lambda pour `ListObjects`. Lambda recevra la charge utile JSON avec un nouvel objet nommé `listObjectsContext`. `listObjectsContext` contient une propriété unique, `inputS3Url`, qui est une URL pré-signée pour le point d’accès de prise en charge pour `ListObjects`.

Contrairement à `GetObject` et `HeadObject`, l’URL pré-signée inclura les propriétés suivantes si elles sont spécifiées :
+ Tous les paramètres de la requête
+ `requestPayer` (dans l'en-tête `x-amz-request-payer`) 
+ `expectedBucketOwner` (dans l'en-tête `x-amz-expected-bucket-owner`)

Pour les paramètres d'URI de la syntaxe de la demande, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html) dans la *Référence des API Amazon Simple Storage Service*.

**Important**  
Nous vous recommandons d'utiliser la version la plus récente, [ListObjectsV2](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html), lorsque vous développez des applications. Pour assurer la compatibilité descendante, Amazon S3 continue de prendre en charge `ListObjects`.

L’exemple suivant illustre la charge utile d’entrée JSON de Lambda pour `ListObjects`.

```
{
    "xAmzRequestId": "requestId",
     "**listObjectsContext**": {
     "**inputS3Url**": "https://my-s3-ap-111122223333.s3-accesspoint.us-east-1.amazonaws.com/?X-Amz-Security-Token=<snip>",
     },
    "configuration": {
        "accessPointArn": "arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/example-object-lambda-ap",
        "supportingAccessPointArn": "arn:aws:s3:us-east-1:111122223333:accesspoint/example-ap",
        "payload": "{}"
    },
    "userRequest": {
        "url": "https://object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com/example",
        "headers": {
            "Host": "object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com",
            "Accept-Encoding": "identity",
            "X-Amz-Content-SHA256": "e3b0c44298fc1example"
        }
    },
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "principalId",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/example",
        "accountId": "111122223333",
        "accessKeyId": "accessKeyId",
        "sessionContext": {
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "Wed Mar 10 23:41:52 UTC 2021"
            },
            "sessionIssuer": {
                "type": "Role",
                "principalId": "principalId",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            }
        }
    },
  "protocolVersion": "1.00"
}
```

Votre fonction Lambda devrait renvoyer un objet JSON contenant le code de statut, le résultat XML de liste ou les informations d’erreur qui seront renvoyées de S3 Object Lambda.

S3 Object Lambda ne traite ni ne valide `listResultXml`, mais les transmet à l’appelant `ListObjects`. Pour `listBucketResult`, S3 Object Lambda s’attend à ce que certaines propriétés soient d’un type spécifique et lèvera des exceptions s’il ne peut pas les analyser. `listResultXml` et `listBucketResult` ne peuvent pas être fournies en même temps.

L’exemple suivant montre comment utiliser l’URL pré-signée pour appeler Amazon S3 et comment utiliser le résultat pour renseigner une réponse ainsi que vérifier les erreurs.

------
#### [ Python ]

```
import requests 
import xmltodict

def lambda_handler(event, context):
    # Extract the presigned URL from the input.
    s3_url = event["listObjectsContext"]["inputS3Url"]


    # Get the head of the object from Amazon S3.
    response = requests.get(s3_url)

    # Return the error to S3 Object Lambda (if applicable).
    if (response.status_code >= 400):
        error = xmltodict.parse(response.content)
        return {
            "statusCode": response.status_code,
            "errorCode": error["Error"]["Code"],
            "errorMessage": error["Error"]["Message"]
        }

    # Store the XML result in a dict.
    response_dict = xmltodict.parse(response.content)

    # This obscures StorageClass in a transformation, it is optional to add
    for item in response_dict['ListBucketResult']['Contents']:
        item['StorageClass'] = ""

    # Convert back to XML.
    listResultXml = xmltodict.unparse(response_dict)
    
    # Create response with listResultXml.
    response_with_list_result_xml = {
        'statusCode': 200,
        'listResultXml': listResultXml
    }

    # Create response with listBucketResult.
    response_dict['ListBucketResult'] = sanitize_response_dict(response_dict['ListBucketResult'])
    response_with_list_bucket_result = {
        'statusCode': 200,
        'listBucketResult': response_dict['ListBucketResult']
    }

    # Return the list to S3 Object Lambda.
    # Can return response_with_list_result_xml or response_with_list_bucket_result
    return response_with_list_result_xml

# Converting the response_dict's key to correct casing
def sanitize_response_dict(response_dict: dict):
    new_response_dict = dict()
    for key, value in response_dict.items():
        new_key = key[0].lower() + key[1:] if key != "ID" else 'id'
        if type(value) == list:
            newlist = []
            for element in value:
                if type(element) == type(dict()):
                    element = sanitize_response_dict(element)
                newlist.append(element)
            value = newlist
        elif type(value) == dict:
            value = sanitize_response_dict(value)
        new_response_dict[new_key] = value
    return new_response_dict
```

------

L'exemple suivant illustre la structure du code JSON de réponse de Lambda pour `ListObjects`.

```
{ 
  "statusCode": <number>; // Required
  "errorCode": <string>;
  "errorMessage": <string>;
  "listResultXml": <string>; // This can also be Error XML string in case S3 returned error response when calling the pre-signed URL

  "listBucketResult": {  // listBucketResult can be provided instead of listResultXml, however they can not both be provided in the JSON response  
        "name": <string>,  // Required for 'listBucketResult'
        "prefix": <string>,  
        "marker": <string>, 
        "nextMarker": <string>, 
        "maxKeys": <int>,   // Required for 'listBucketResult'
        "delimiter": <string>, 
        "encodingType": <string>  
        "isTruncated": <boolean>,  // Required for 'listBucketResult'
        "contents": [  { 
            "key": <string>,  // Required for 'content'
            "lastModified": <string>,  
            "eTag": <string>,  
            "checksumAlgorithm": <string>,   // CRC32,  CRC32C,  SHA1,  SHA256
            "size": <int>,   // Required for 'content'
            "owner": {  
                "displayName": <string>,  // Required for 'owner'
                "id": <string>,  // Required for 'owner'
            },  
            "storageClass": <string>  
            },  
        ...  
        ],  
        "commonPrefixes": [  {  
            "prefix": <string>   // Required for 'commonPrefix'
        },  
        ...  
        ],  
    }
}
```

## Utilisation de requêtes `ListObjectsV2` dans Lambda
<a name="olap-listobjectsv2"></a>

Cette section suppose que votre point d'accès Object Lambda est configuré pour appeler la fonction Lambda pour `ListObjectsV2`. Lambda recevra la charge utile JSON avec un nouvel objet nommé `listObjectsV2Context`. `listObjectsV2Context` contient une propriété unique, `inputS3Url`, qui est une URL pré-signée pour le point d’accès de prise en charge pour `ListObjectsV2`.

Contrairement à `GetObject` et `HeadObject`, l’URL pré-signée inclura les propriétés suivantes, si elles sont spécifiées : 
+ Tous les paramètres de la requête
+ `requestPayer` (dans l'en-tête `x-amz-request-payer`) 
+ `expectedBucketOwner` (dans l'en-tête `x-amz-expected-bucket-owner`)

Pour les paramètres d'URI de la syntaxe de la demande, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) dans la *Référence des API Amazon Simple Storage Service*.

L'exemple suivant illustre la charge utile d'entrée JSON de Lambda pour `ListObjectsV2`.

```
{
    "xAmzRequestId": "requestId",
     "**listObjectsV2Context**": {
     "**inputS3Url**": "https://my-s3-ap-111122223333.s3-accesspoint.us-east-1.amazonaws.com/?list-type=2&X-Amz-Security-Token=<snip>",
     },
    "configuration": {
        "accessPointArn": "arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/example-object-lambda-ap",
        "supportingAccessPointArn": "arn:aws:s3:us-east-1:111122223333:accesspoint/example-ap",
        "payload": "{}"
    },
    "userRequest": {
        "url": "https://object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com/example",
        "headers": {
            "Host": "object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com",
            "Accept-Encoding": "identity",
            "X-Amz-Content-SHA256": "e3b0c44298fc1example"
        }
    },
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "principalId",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/example",
        "accountId": "111122223333",
        "accessKeyId": "accessKeyId",
        "sessionContext": {
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "Wed Mar 10 23:41:52 UTC 2021"
            },
            "sessionIssuer": {
                "type": "Role",
                "principalId": "principalId",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            }
        }
    },
  "protocolVersion": "1.00" 
}
```

Votre fonction Lambda devrait renvoyer un objet JSON contenant le code de statut, le résultat XML de liste ou les informations d’erreur qui seront renvoyées de S3 Object Lambda.

S3 Object Lambda ne traite ni ne valide `listResultXml`, mais les transmet à l’appelant `ListObjectsV2`. Pour `listBucketResult`, S3 Object Lambda s’attend à ce que certaines propriétés soient d’un type spécifique et lèvera des exceptions s’il ne peut pas les analyser. `listResultXml` et `listBucketResult` ne peuvent pas être fournies en même temps.

L’exemple suivant montre comment utiliser l’URL pré-signée pour appeler Amazon S3 et comment utiliser le résultat pour renseigner une réponse ainsi que vérifier les erreurs.

------
#### [ Python ]

```
import requests 
import xmltodict

def lambda_handler(event, context):
    # Extract the presigned URL from the input.
    s3_url = event["listObjectsV2Context"]["inputS3Url"]


    # Get the head of the object from Amazon S3.
    response = requests.get(s3_url)

    # Return the error to S3 Object Lambda (if applicable).
    if (response.status_code >= 400):
        error = xmltodict.parse(response.content)
        return {
            "statusCode": response.status_code,
            "errorCode": error["Error"]["Code"],
            "errorMessage": error["Error"]["Message"]
        }

    # Store the XML result in a dict.
    response_dict = xmltodict.parse(response.content)

    # This obscures StorageClass in a transformation, it is optional to add
    for item in response_dict['ListBucketResult']['Contents']:
        item['StorageClass'] = ""

    # Convert back to XML.
    listResultXml = xmltodict.unparse(response_dict)
    
    # Create response with listResultXml.
    response_with_list_result_xml = {
        'statusCode': 200,
        'listResultXml': listResultXml
    }

    # Create response with listBucketResult.
    response_dict['ListBucketResult'] = sanitize_response_dict(response_dict['ListBucketResult'])
    response_with_list_bucket_result = {
        'statusCode': 200,
        'listBucketResult': response_dict['ListBucketResult']
    }

    # Return the list to S3 Object Lambda.
    # Can return response_with_list_result_xml or response_with_list_bucket_result
    return response_with_list_result_xml

# Converting the response_dict's key to correct casing
def sanitize_response_dict(response_dict: dict):
    new_response_dict = dict()
    for key, value in response_dict.items():
        new_key = key[0].lower() + key[1:] if key != "ID" else 'id'
        if type(value) == list:
            newlist = []
            for element in value:
                if type(element) == type(dict()):
                    element = sanitize_response_dict(element)
                newlist.append(element)
            value = newlist
        elif type(value) == dict:
            value = sanitize_response_dict(value)
        new_response_dict[new_key] = value
    return new_response_dict
```

------

L'exemple suivant illustre la structure du code JSON de réponse de Lambda pour `ListObjectsV2`.

```
{  
    "statusCode": <number>; // Required  
    "errorCode": <string>;  
    "errorMessage": <string>;  
    "listResultXml": <string>; // This can also be Error XML string in case S3 returned error response when calling the pre-signed URL  
  
    "listBucketResult": {  // listBucketResult can be provided instead of listResultXml, however they can not both be provided in the JSON response 
        "name": <string>, // Required for 'listBucketResult'  
        "prefix": <string>,  
        "startAfter": <string>,  
        "continuationToken": <string>,  
        "nextContinuationToken": <string>,
        "keyCount": <int>, // Required for 'listBucketResult'  
        "maxKeys": <int>, // Required for 'listBucketResult'  
        "delimiter": <string>,  
        "encodingType": <string>  
        "isTruncated": <boolean>, // Required for 'listBucketResult'  
        "contents": [ {  
            "key": <string>, // Required for 'content'  
            "lastModified": <string>,  
            "eTag": <string>,  
            "checksumAlgorithm": <string>, // CRC32, CRC32C, SHA1, SHA256  
            "size": <int>, // Required for 'content'  
            "owner": {  
                "displayName": <string>, // Required for 'owner'  
                "id": <string>, // Required for 'owner'  
            },  
            "storageClass": <string>  
            },  
            ...  
        ],  
        "commonPrefixes": [ {  
            "prefix": <string> // Required for 'commonPrefix'  
            },  
        ...  
        ],  
    }  
}
```

# Format et utilisation du contexte d’événement
<a name="olap-event-context"></a>

**Note**  
Depuis le 7 novembre 2025, S3 Object Lambda n'est disponible que pour les clients existants qui utilisent actuellement le service, ainsi que pour certains AWS partenaires du réseau de partenaires (APN). Pour des fonctionnalités semblables à celles de S3 Object Lambda, cliquez ici : [Modification de la disponibilité d’Amazon S3 Object Lambda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Amazon S3 Object Lambda fournit le contexte de la demande effectuée lors de l'événement transmis à votre AWS Lambda fonction. Voici un exemple de demande. Les descriptions des champs sont incluses après l’exemple.

```
{
    "xAmzRequestId": "requestId",
    "getObjectContext": {
        "inputS3Url": "https://my-s3-ap-111122223333.s3-accesspoint.us-east-1.amazonaws.com/example?X-Amz-Security-Token=<snip>",
        "outputRoute": "io-use1-001",
        "outputToken": "OutputToken"
    },
    "configuration": {
        "accessPointArn": "arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/example-object-lambda-ap",
        "supportingAccessPointArn": "arn:aws:s3:us-east-1:111122223333:accesspoint/example-ap",
        "payload": "{}"
    },
    "userRequest": {
        "url": "https://object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com/example",
        "headers": {
            "Host": "object-lambda-111122223333.s3-object-lambda.us-east-1.amazonaws.com",
            "Accept-Encoding": "identity",
            "X-Amz-Content-SHA256": "e3b0c44298fc1example"
        }
    },
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "principalId",
        "arn": "arn:aws:sts::111122223333:assumed-role/Admin/example",
        "accountId": "111122223333",
        "accessKeyId": "accessKeyId",
        "sessionContext": {
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "Wed Mar 10 23:41:52 UTC 2021"
            },
            "sessionIssuer": {
                "type": "Role",
                "principalId": "principalId",
                "arn": "arn:aws:iam::111122223333:role/Admin",
                "accountId": "111122223333",
                "userName": "Admin"
            }
        }
    },
    "protocolVersion": "1.00"
}
```

Les champs suivants sont inclus dans la demande :
+ `xAmzRequestId` – ID de demande Amazon S3 pour cette demande. Nous vous recommandons de consigner cette valeur pour faciliter le débogage.
+ `getObjectContext` – Détails d’entrée et de sortie pour les connexions à Amazon S3 et S3 Object Lambda.
  + `inputS3Url` – URL présignée qui peut être utilisée pour récupérer l’objet d’origine depuis Amazon S3. L’URL est signée avec l’identité de l’appelant d’origine et les autorisations de cet utilisateur s’appliquent quand l’URL est utilisée. S’il y a des en-têtes signés dans cette URL, la fonction Lambda doit les inclure dans l’appel à Amazon S3, à l’exception de l’en-tête `Host`.
  + `outputRoute` – Un jeton de routage qui est ajouté à l’URL S3 Object Lambda lorsque la fonction Lambda appelle `WriteGetObjectResponse`.
  + `outputToken` – Jeton opaque utilisé par S3 Object Lambda pour mettre en correspondance l’appel `WriteGetObjectResponse` avec l’appelant d’origine.
+ `configuration` : informations de configuration sur le point d’accès Object Lambda.
  + `accessPointArn` : Amazon Resource Name (ARN) du point d’accès Object Lambda qui a reçu cette demande.
  + `supportingAccessPointArn` : ARN du point d’accès de prise en charge spécifié dans la configuration du point d’accès Object Lambda.
  + `payload` : données personnalisées qui sont appliquées à la configuration du point d’accès Object Lambda. S3 Object Lambda considère ces données comme une chaîne opaque. Dès lors, elles devront peut-être être décodées avant utilisation.
+ `userRequest` – Informations sur l’appel d’origine à S3 Object Lambda.
  + `url` – URL décodée de la demande telle qu’elle a été reçue par S3 Object Lambda, à l’exclusion des paramètres de requête liés à l’autorisation.
  + `headers` – Carte de chaîne aux chaînes contenant les en-têtes HTTP et leurs valeurs de l’appel d’origine, à l’exclusion de tous les en-têtes liés à l’autorisation. Si le même en-tête apparaît plusieurs fois, les valeurs de chaque instance du même en-tête sont combinées dans une liste délimitée par des virgules. Le cas des en-têtes d’origine est conservé dans cette carte.
+ `userIdentity` – Détails sur l’identité qui a adressé l’appel à S3 Object Lambda. Pour plus d’informations, consultez [Consignation d’événements de données pour les journaux d’activité](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html) dans le *Guide de l’utilisateur AWS CloudTrail *.
  + `type` – Type d’identité.
  + `accountId`— Compte AWS À laquelle appartient l'identité.
  + `userName` – Nom descriptif de l’identité qui a réalisé l’appel.
  + `principalId` – Identifiant unique de l’entité qui a effectué l’appel.
  + `arn` – ARN du principal qui a effectué l’appel. La dernière partie de l’ARN contient l’utilisateur ou le rôle qui a réalisé l’appel.
  + `sessionContext` – Si la demande a été effectuée avec les autorisations de sécurité temporaires, cet élément fournit des informations sur la session qui a été créée pour ces autorisations.
  + `invokedBy`— Le nom de la personne à Service AWS l'origine de la demande, par exemple Amazon EC2 Auto Scaling AWS Elastic Beanstalk ou.
  + `sessionIssuer` – Si la demande a été effectuée avec des informations d’identification de sécurité temporaires, cet élément fournit des informations sur la façon dont les autorisations ont été obtenues.
+ `protocolVersion` – ID de version du contexte fourni. Le format de ce champ est `{Major Version}.{Minor Version}`. Les numéros de version mineure sont toujours des nombres à deux chiffres. Toute suppression ou modification de la sémantique d’un champ nécessite un changement de version majeur et une participation active. Simple Storage Service (Amazon S3) peut ajouter de nouveaux champs à tout moment, auquel cas vous risquez de rencontrer un changement de version mineure. En raison de la nature des déploiements logiciels, il est possible que plusieurs versions mineures soient utilisées simultanément.

# Utilisation des en-têtes Range et partNumber
<a name="range-get-olap"></a>

**Note**  
Depuis le 7 novembre 2025, S3 Object Lambda n'est disponible que pour les clients existants qui utilisent actuellement le service, ainsi que pour certains AWS partenaires du réseau de partenaires (APN). Pour des fonctionnalités semblables à celles de S3 Object Lambda, cliquez ici : [Modification de la disponibilité d’Amazon S3 Object Lambda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Lorsque vous travaillez avec des objets volumineux dans Amazon S3 Object Lambda, vous pouvez utiliser l’en-tête HTTP `Range` pour télécharger une plage d’octets spécifiée à partir d’un objet. Pour extraire différentes plages d’octets à partir d’un même objet, utilisez des connexions simultanées à Amazon S3. Spécifiez également le paramètre `partNumber` (entier compris entre 1 et 10 000) pour exécuter une demande « par plage » pour la partie spécifiée de l’objet.

Étant donné qu’il existe plusieurs façons de gérer une demande qui inclut le paramètre `Range` ou `partNumber`, S3 Object Lambda n’applique pas ces paramètres à l’objet transformé. Votre AWS Lambda fonction doit plutôt implémenter cette fonctionnalité selon les besoins de votre application.

Pour utiliser les paramètres `Range` et `partNumber` avec S3 Object Lambda, procédez comme suit : 
+ Activez ces paramètres dans la configuration de vos points d’accès Object Lambda.
+ Écrivez une fonction Lambda capable de gérer les demandes qui incluent ces paramètres.

Les étapes suivantes expliquent comment procéder.

## Étape 1 : configurer votre point d’accès Object Lambda
<a name="range-get-olap-step-1"></a>

Par défaut, les points d’accès Object Lambda répondent avec une erreur de code de statut HTTP 501 (Non implémenté) à toute requête `GetObject` ou `HeadObject` contenant un paramètre `Range` ou `partNumber`, que ce soit dans les en-têtes ou les paramètres de requête. 

Pour permettre à un point d’accès Object Lambda d’accepter ces demandes, vous devez inclure `GetObject-Range`, `GetObject-PartNumber`, `HeadObject-Range` ou `HeadObject-PartNumber` dans la section `AllowedFeatures` de la configuration de votre point d’accès Object Lambda. Pour plus d’informations sur la mise à jour de votre configuration de point d’accès Object Lambda, consultez [Création de points d’accès Object Lambda](olap-create.md). 

## Étape 2 : implémenter la gestion de `Range` ou `partNumber` dans votre fonction Lambda
<a name="range-get-olap-step-2"></a>

Lorsque votre point d’accès Object Lambda invoque votre fonction Lambda avec une demande `GetObject` ou `HeadObject` par plage, le paramètre `Range` ou `partNumber` est inclus dans le contexte de l’événement. L’emplacement du paramètre dans le contexte d’événement dépend du paramètre utilisé et de la façon dont il a été inclus dans la demande d’origine au point d’accès Object Lambda, comme expliqué dans le tableau suivant. 


| Paramètre | Emplacement du contexte d’événement | 
| --- | --- | 
|  `Range` (en-tête)   |  `userRequest.headers.Range`  | 
|  `Range` (paramètre de la demande)  |  `userRequest.url` (paramètre `Range` de la demande)  | 
|  `partNumber`  |  `userRequest.url` (paramètre `partNumber` de la demande)  | 

**Important**  
L’URL pré-signée fournie pour votre point d’accès Object Lambda ne contient pas le paramètre `Range` ou `partNumber` de la demande d’origine. Consultez les options suivantes pour savoir comment gérer ces paramètres dans votre AWS Lambda fonction.

Après avoir extrait la valeur `Range` ou `partNumber`, vous pouvez adopter l’une des approches suivantes en fonction des besoins de votre application :

1. **Mapper le paramètre `Range` ou `partNumber` demandé à l’objet transformé (recommandé)** 

   La méthode la plus fiable pour traiter les requêtes `Range` et `partNumber` consiste à effectuer les opérations suivantes : 
   + Récupérez l’objet complet à partir d’Amazon S3.
   + Transformez l’objet.
   + Appliquez le paramètre `Range` ou `partNumber` demandé à l’objet transformé.

   Pour ce faire, utilisez l’URL pré-signée fournie afin de récupérer l’objet entier d’Amazon S3, puis traitez l’objet au besoin. Pour un exemple de fonction Lambda qui traite un `Range` paramètre de cette manière, consultez [cet exemple](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration/blob/main/function/nodejs_20_x/src/response/range_mapper.ts) dans le référentiel AWS Samples GitHub .

1. **Mappez l’élément `Range` demandé sur l’URL pré-signée.**

   Dans certains cas, votre fonction Lambda peut mapper l’élément `Range` demandé directement sur l’URL pré-signée pour récupérer uniquement une partie de l’objet à partir d’Amazon S3. Cette approche n’est appropriée que si votre transformation répond aux deux critères suivants :

   1. Votre fonction de transformation peut être appliquée à des plages d’objets partielles.

   1. L’application du paramètre `Range` avant ou après la fonction de transformation aboutit au même objet transformé.

   Par exemple, une fonction de transformation qui convertit tous les caractères d’un objet codé en ASCII en majuscules répond aux deux critères précédents. La transformation peut être appliquée à une partie d’un objet, et l’application du paramètre `Range` avant la transformation donne le même résultat que son application après la transformation.

   En revanche, une fonction qui rétablit les caractères d’un objet codé en ASCII ne répond pas à ces critères. Cette fonction répond au critère 1, car elle peut être appliquée à des plages d’objets partielles. Cependant, elle ne répond pas au critère 2, car le paramètre `Range` appliqué avant la transformation ne donne pas le même résultat que lorsqu’il est appliqué après la transformation. 

   Prenons une demande d’application de la fonction aux trois premiers caractères d’un objet avec le contenu `abcdefg`. Si le paramètre `Range` est appliqué avant la transformation, il récupère uniquement `abc`, puis rétablit les données et renvoie `cba`. Mais si le paramètre est appliqué après la transformation, la fonction récupère l’objet entier, le rétablit, puis applique le paramètre `Range` et renvoie `gfe`. Étant donné que ces résultats sont différents, cette fonction ne doit pas appliquer le paramètre `Range` lors de la récupération de l’objet à partir d’Amazon S3. À la place, elle doit récupérer l’objet entier, effectuer la transformation, et seulement alors appliquer le paramètre `Range`. 
**Avertissement**  
Dans de nombreux cas, l’application du paramètre `Range` à l’URL pré-signée entraîne un comportement inattendu de la fonction Lambda ou du client demandeur. À moins que vous ne soyez sûr que votre application fonctionne correctement lorsque vous récupérez uniquement un objet partiel d’Amazon S3, nous vous recommandons de récupérer et de transformer des objets complets comme décrit précédemment dans l’approche A. 

   Si votre application répond aux critères décrits précédemment dans l'approche B, vous pouvez simplifier votre AWS Lambda fonction en récupérant uniquement la plage d'objets demandée, puis en exécutant votre transformation sur cette plage. 

   L’exemple de code Java suivant montre comment effectuer les opérations suivantes : 
   + Récupérer l’en-tête `Range` de la requête `GetObject`.
   + Ajouter l’en-tête `Range` à l’URL pré-signée que Lambda peut utiliser pour récupérer la plage demandée à partir d’Amazon S3.

   ```
   private HttpRequest.Builder applyRangeHeader(ObjectLambdaEvent event, HttpRequest.Builder presignedRequest) {
       var header = event.getUserRequest().getHeaders().entrySet().stream()
               .filter(e -> e.getKey().toLowerCase(Locale.ROOT).equals("range"))
               .findFirst();
   
       // Add check in the query string itself.
       header.ifPresent(entry -> presignedRequest.header(entry.getKey(), entry.getValue()));
       return presignedRequest;
   }
   ```

# Utilisation de AWS fonctions Lambda intégrées
<a name="olap-examples"></a>

**Note**  
Depuis le 7 novembre 2025, S3 Object Lambda n'est disponible que pour les clients existants qui utilisent actuellement le service, ainsi que pour certains AWS partenaires du réseau de partenaires (APN). Pour des fonctionnalités semblables à celles de S3 Object Lambda, cliquez ici : [Modification de la disponibilité d’Amazon S3 Object Lambda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

AWS fournit des AWS Lambda fonctions prédéfinies que vous pouvez utiliser avec Amazon S3 Object Lambda pour détecter et supprimer les informations personnelles identifiables (PII) et décompresser les objets S3. Ces fonctions Lambda sont disponibles dans AWS Serverless Application Repository. Vous pouvez sélectionner ces fonctions via la AWS Management Console lorsque vous créez votre point d’accès Object Lambda. 

Pour plus d'informations sur le déploiement d'applications sans serveur depuis le AWS Serverless Application Repository, consultez la section [Déploiement d'applications](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-consuming-applications.html) dans le *guide du AWS Serverless Application Repository développeur*.

**Note**  
Les exemples suivants peuvent être utilisés uniquement avec des requêtes `GetObject`.

## Exemple 1 : contrôle d’accès aux données d’identification personnelle (PII)
<a name="olap-examples-1"></a>

Cette fonction Lambda utilise Amazon Comprehend, un service de traitement du langage naturel (NLP) qui a recours au machine learning pour identifier des informations et des relations dans un texte. Elle détecte automatiquement les données d’identification personnelle (PII), telles que les noms, adresses, dates, numéros de carte de crédit et numéros de sécurité sociale, dans les documents figurant dans votre compartiment Amazon S3. Si vous avez des documents dans votre compartiment qui incluent des données PII, vous pouvez configurer la fonction PII Access Control pour détecter ces types d’entités PII et en bloquer l’accès aux utilisateurs non autorisés.

Pour commencer, déployez la fonction Lambda suivante dans votre compte et ajoutez l’Amazon Resource Name (ARN) de cette fonction dans la configuration de votre point d’accès Object Lambda.

Voici un exemple d’ARN pour cette fonction :

```
arn:aws:serverlessrepo:us-east-1:111122223333:applications/ComprehendPiiAccessControlS3ObjectLambda
```

Vous pouvez ajouter ou consulter cette fonction sur AWS Management Console le AWS Serverless Application Repository lien suivant : [ComprehendPiiAccessControlS3 ObjectLambda](https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:839782855223:applications/ComprehendPiiAccessControlS3ObjectLambda).

Pour afficher cette fonction GitHub, consultez [Amazon Comprehend S3 Object Lambda](https://github.com/aws-samples/amazon-comprehend-s3-object-lambdas).

## Exemple 2 : rédaction de données d’identification personnelle (PII)
<a name="olap-examples-2"></a>

Cette fonction Lambda utilise Amazon Comprehend, un service de traitement du langage naturel (NLP) qui a recours au machine learning pour identifier des informations et des relations dans un texte. Elle supprime automatiquement les données d’identification personnelle (PII), telles que les noms, adresses, dates, numéros de carte de crédit et numéros de sécurité sociale, dans les documents figurant dans votre compartiment Amazon S3. 

Si vous avez des documents dans votre compartiment qui incluent des informations telles que des numéros de carte de crédit ou des informations de compte bancaire, vous pouvez configurer la fonction S3 Object Lambda Rédaction de PII pour détecter les PII, puis renvoyer une copie de ces documents dans lesquels les types d’entités PII sont expurgés.

Pour commencer, déployez la fonction Lambda suivante dans votre compte et ajoutez l’ARN de cette fonction dans la configuration de votre point d’accès Object Lambda.

Voici un exemple d'ARN pour cette fonction :

```
arn:aws:serverlessrepo:us-east-1:111122223333::applications/ComprehendPiiRedactionS3ObjectLambda
```

Vous pouvez ajouter ou consulter cette fonction sur AWS Management Console le AWS Serverless Application Repository lien suivant : [ComprehendPiiRedactionS3 ObjectLambda](https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:839782855223:applications/ComprehendPiiRedactionS3ObjectLambda).

Pour afficher cette fonction GitHub, consultez [Amazon Comprehend S3 Object Lambda](https://github.com/aws-samples/amazon-comprehend-s3-object-lambdas).

Pour en savoir plus sur end-to-end les procédures complètes relatives à certaines tâches Lambda d'objets S3 dans la rédaction d'informations personnelles, consultez. [Didacticiel : Détecter et expurger des PII avec S3 Object Lambda et Amazon Comprehend](tutorial-s3-object-lambda-redact-pii.md)

## Exemple 3 : Décompression
<a name="olap-examples-3"></a>

La fonction Lambda `S3ObjectLambdaDecompression` peut décompresser les objets stockés dans Amazon S3 dans l’un des six formats de fichiers compressés suivants : `bzip2`, `gzip`, `snappy`, `zlib`, `zstandard` ou `ZIP`. 

Pour commencer, déployez la fonction Lambda suivante dans votre compte et ajoutez l'ARN de cette fonction dans la configuration de votre point d'accès Object Lambda.

Voici un exemple d'ARN pour cette fonction :

```
arn:aws:serverlessrepo:us-east-1:111122223333::applications/S3ObjectLambdaDecompression
```

Vous pouvez ajouter ou consulter cette fonction sur AWS Management Console le AWS Serverless Application Repository lien suivant : [S3 ObjectLambdaDecompression](https://eu-west-1.console.aws.amazon.com/lambda/home?region=eu-west-1#/create/app?applicationId=arn:aws:serverlessrepo:eu-west-1:123065155563:applications/S3ObjectLambdaDecompression).

Pour afficher cette fonction GitHub, consultez la section Décompression [Lambda d'objets S3](https://github.com/aws-samples/amazon-s3-object-lambda-decompression).

# Bonnes pratiques et directives pour S3 Object Lambda
<a name="olap-best-practices"></a>

**Note**  
Depuis le 7 novembre 2025, S3 Object Lambda n'est disponible que pour les clients existants qui utilisent actuellement le service, ainsi que pour certains AWS partenaires du réseau de partenaires (APN). Pour des fonctionnalités semblables à celles de S3 Object Lambda, cliquez ici : [Modification de la disponibilité d’Amazon S3 Object Lambda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Lorsque vous utilisez S3 Object Lambda, suivez ces bonnes pratiques et directives pour optimiser les opérations et les performances.

**Topics**
+ [Utilisation de S3 Object Lambda](#olap-working-with)
+ [Services AWS utilisé en relation avec S3 Object Lambda](#olap-services)
+ [En-têtes `Range` et `partNumber`](#olap-managing-range-part)
+ [Transformation de la date `expiry-date`](#olap-console-download)
+ [Travailler avec le AWS CLI et AWS SDKs](#olap-cli-sdk)

## Utilisation de S3 Object Lambda
<a name="olap-working-with"></a>

S3 Object Lambda prend en charge uniquement le traitement des requêtes `GET`, `LIST` et `HEAD`. Aucune autre demande n'invoque mais renvoie AWS Lambda des réponses d'API standard non transformées. Vous pouvez créer un maximum de 1 000 points d'accès Object Lambda Compte AWS par région. La AWS Lambda fonction que vous utilisez doit se trouver dans la même Compte AWS région que le point d'accès Object Lambda.

S3 Object Lambda accorde jusqu’à 60 secondes pour diffuser une réponse complète à son mandataire. Votre fonction est également soumise à des quotas AWS Lambda par défaut. Pour plus d’informations, consultez [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) dans le *Guide du développeur AWS Lambda *. 

Quand S3 Object Lambda invoque votre fonction Lambda spécifiée, il vous incombe de veiller à ce que toutes les données écrasées ou supprimées d’Amazon S3 par votre fonction ou application Lambda spécifiée sont volontaires et correctes.

Vous pouvez utiliser S3 Object Lambda uniquement pour effectuer des opérations sur des objets. Vous ne pouvez pas utiliser S3 Object Lambda pour effectuer d’autres opérations Amazon S3, comme modifier ou supprimer des compartiments. Pour obtenir la liste complète des opérations S3 qui prennent en charge les points d’accès, consultez [Compatibilité des points d’accès avec les opérations S3](access-points-service-api-support.md#access-points-operations-support).

Outre cette liste, les points d’accès Object Lambda ne prennent pas en charge les opérations d’API [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html), [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) (en tant que source) ni [https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html).

## Services AWS utilisé en relation avec S3 Object Lambda
<a name="olap-services"></a>

S3 Object Lambda connecte Amazon S3 et, éventuellement AWS Lambda, les autres appareils Services AWS de votre choix pour fournir des objets adaptés aux applications demandeuses. Toutes les Services AWS applications utilisées avec S3 Object Lambda sont régies par leurs accords de niveau de service respectifs ()SLAs. Par exemple, si l'un d'entre eux Service AWS ne respecte pas son engagement de service, vous pouvez bénéficier d'un crédit de service, comme indiqué dans le SLA du service.

## En-têtes `Range` et `partNumber`
<a name="olap-managing-range-part"></a>

Lorsque vous utilisez des objets volumineux, vous pouvez avoir recours à l’en-tête HTTP `Range` pour télécharger une plage d’octets donnée à partir d’un objet. Lorsque vous utilisez l’en-tête `Range`, votre demande extrait uniquement la partie spécifiée de l’objet. Vous pouvez également utiliser l’en-tête `partNumber` pour effectuer une requête par plage pour la partie spécifiée de l’objet.

Pour de plus amples informations, veuillez consulter [Utilisation des en-têtes Range et partNumber](range-get-olap.md).

## Transformation de la date `expiry-date`
<a name="olap-console-download"></a>

Vous pouvez ouvrir ou télécharger des objets transformés depuis votre point d'accès Object Lambda sur le. AWS Management Console Ces objets ne doivent pas avoir expiré. Si votre fonction Lambda transforme la date `expiry-date` de vos objets, vous pouvez voir des objets expirés qui ne peuvent pas être ouverts ou téléchargés. Ce comportement s’applique uniquement aux objets restaurés S3 Glacier Flexible Retrieval et S3 Glacier Deep Archive.

## Travailler avec le AWS CLI et AWS SDKs
<a name="olap-cli-sdk"></a>

AWS Command Line Interface (AWS CLI) Les sous-commandes S3 (`cp`,`mv`, et`sync`) et l'utilisation de la AWS SDK pour Java `TransferManager` classe ne sont pas prises en charge pour une utilisation avec S3 Object Lambda.

# Didacticiels S3 Object Lambda
<a name="olap-tutorials"></a>

**Note**  
Depuis le 7 novembre 2025, S3 Object Lambda n'est disponible que pour les clients existants qui utilisent actuellement le service, ainsi que pour certains AWS partenaires du réseau de partenaires (APN). Pour des fonctionnalités semblables à celles de S3 Object Lambda, cliquez ici : [Modification de la disponibilité d’Amazon S3 Object Lambda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Les didacticiels suivants présentent end-to-end des procédures complètes pour certaines tâches S3 Object Lambda.

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. Chacun des didacticiels suivants modifie les données au fur et à mesure qu’elles sont extraites d’Amazon S3, sans modifier l’objet existant ni conserver plusieurs copies des données. Le premier didacticiel expliquera comment ajouter une AWS Lambda fonction à une requête GET S3 pour modifier un objet extrait de S3. Le deuxième didacticiel montre comment utiliser une fonction Lambda prédéfinie basée sur Amazon Comprehend pour protéger les données d’identification personnelle (PII) récupérées à partir de S3 avant de les renvoyer à une application. Le troisième didacticiel utilise S3 Object Lambda pour ajouter un filigrane à une image telle qu’elle est extraite d’Amazon S3.
+ [Didacticiel : Transformation de données pour votre application avec S3 Object Lambda](tutorial-s3-object-lambda-uppercase.md)
+ [Didacticiel : Détecter et expurger des PII avec S3 Object Lambda et Amazon Comprehend](tutorial-s3-object-lambda-redact-pii.md)
+ [Tutoriel : Utilisation de S3 Object Lambda pour filigraner dynamiquement des images au fur et à mesure de leur récupération](https://aws.amazon.com/getting-started/hands-on/amazon-s3-object-lambda-to-dynamically-watermark-images/?ref=docs_gateway/amazons3/olap-tutorials.html)

# Didacticiel : Transformation de données pour votre application avec S3 Object Lambda
<a name="tutorial-s3-object-lambda-uppercase"></a>

**Note**  
Depuis le 7 novembre 2025, S3 Object Lambda n'est disponible que pour les clients existants qui utilisent actuellement le service, ainsi que pour certains AWS partenaires du réseau de partenaires (APN). Pour des fonctionnalités semblables à celles de S3 Object Lambda, cliquez ici : [Modification de la disponibilité d’Amazon S3 Object Lambda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

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](https://aws.amazon.com/s3/features/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 S3 GET standard](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) via le point d’accès S3 Object Lambda, la fonction Lambda spécifiée est invoquée pour traiter toutes les données extraites de la source de données sous-jacente du 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.\]](http://docs.aws.amazon.com/fr_fr/AmazonS3/latest/userguide/images/ol-example-image-global.png)


**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 un compartiment 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](https://docs.aws.amazon.com/code-library/latest/ug/lambda_example_cross_ServerlessS3DataTransformation_section.html) dans la bibliothèque d'exemples de code du AWS SDK. 

**Topics**
+ [Conditions préalables](#ol-upper-prerequisites)
+ [Étape 1 : créer un compartiment S3](#ol-upper-step1)
+ [Étape 2 : charger un fichier dans le compartiment S3](#ol-upper-step2)
+ [Étape 3 : créer un point d’accès S3](#ol-upper-step3)
+ [Étape 4 : créer une fonction Lambda](#ol-upper-step4)
+ [Étape 5 : configurer une politique IAM pour le rôle d’exécution de votre fonction Lambda](#ol-upper-step5)
+ [Étape 6 : créer un point d’accès S3 Object Lambda](#ol-upper-step6)
+ [Étape 7 : afficher les données transformées](#ol-upper-step7)
+ [Étape 8 : nettoyer](#ol-upper-step8)
+ [Étapes suivantes](#ol-upper-next-steps)

## Conditions préalables
<a name="ol-upper-prerequisites"></a>

Avant de commencer ce didacticiel, vous devez disposer d'un utilisateur Compte AWS auquel vous pouvez vous connecter en tant qu'utilisateur Gestion des identités et des accès AWS (IAM) avec les autorisations appropriées. Vous devez également installer Python 3.8 ou version ultérieure.

**Topics**
+ [Créez un utilisateur IAM avec des autorisations dans votre Compte AWS (console)](#ol-upper-prerequisites-account)
+ [Installez Python 3.8 ou version ultérieure sur votre machine locale](#ol-upper-prerequisites-python)

### Créez un utilisateur IAM avec des autorisations dans votre Compte AWS (console)
<a name="ol-upper-prerequisites-account"></a>

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)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) dans le *guide de l’utilisateur IAM*.

Votre utilisateur IAM requiert les politiques suivantes :
+ [AmazonS3 FullAccess — Accorde](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonS3FullAccess$jsonEditor) des autorisations pour toutes les actions Amazon S3, y compris les autorisations pour créer et utiliser un point d'accès Object Lambda. 
+ [AWSLambda\$1FullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSLambda_FullAccess$jsonEditor)— Accorde des autorisations à toutes les actions Lambda. 
+ [IAMFullAccès](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/IAMFullAccess$jsonEditor) : accorde des autorisations à toutes les actions IAM. 
+ [IAMAccessAnalyzerReadOnlyAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/IAMAccessAnalyzerReadOnlyAccess$jsonEditor)— Accorde l'autorisation de lire toutes les informations d'accès fournies par IAM Access Analyzer. 
+ [CloudWatchLogsFullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/CloudWatchLogsFullAccess$jsonEditor)— Accorde un accès complet aux CloudWatch journaux. 

**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](#ol-upper-step8-delete-user). Pour une utilisation en production, nous vous recommandons de suivre les [Bonnes pratiques de sécurité dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) 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](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) 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é](security-best-practices.md#security-best-practices-prevent).

### Installez Python 3.8 ou version ultérieure sur votre machine locale
<a name="ol-upper-prerequisites-python"></a>

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](https://wiki.python.org/moin/BeginnersGuide/Download) 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
   ```

1. Si Python 3.8 ou version ultérieure n’est pas installé, téléchargez le [programme d’installation officiel](https://www.python.org/downloads/) de Python 3.8 ou version ultérieure qui convient à votre machine locale. 

1. 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**. 

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

1. 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
   ```

1. 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
<a name="ol-upper-step1"></a>

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

**Note**  
Des points d'accès peuvent être attachés à une autre source de données, telle qu'un volume Amazon FSx pour OpenZFS, mais ce didacticiel utilise un point d'accès auxiliaire attaché à un compartiment S3.

**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/](https://console.aws.amazon.com/s3/).

1. Dans le panneau de navigation de gauche, choisissez **Compartiments**.

1. Choisissez **Créer un compartiment**. 

   La page **Créer un compartiment** s'ouvre.

1. 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](bucketnamingrules.md).

1. 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 à usage général](UsingBucket.md).

1. 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](access-control-block-public-access.md).

1. 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éation d’un compartiment à usage général](create-bucket-overview.md).

1. Choisissez **Créer un compartiment**.

## Étape 2 : charger un fichier dans le compartiment S3
<a name="ol-upper-step2"></a>

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/](https://console.aws.amazon.com/s3/).

1. Dans le panneau de navigation de gauche, choisissez **Compartiments**.

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

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

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

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

1. Choisissez **Charger**.

## Étape 3 : créer un point d’accès S3
<a name="ol-upper-step3"></a>

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](#ol-upper-step1). 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/](https://console.aws.amazon.com/s3/).

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

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

1. 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 des points d’accès](access-points-restrictions-limitations-naming-rules.md#access-points-names).

1. Dans le champ **Source de données**, saisissez le nom du compartiment que vous avez créé à l’[étape 1](#ol-upper-step1) (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.

1. 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](access-points-vpc.md).

1. 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 de compartiments à usage général](access-points-bpa-settings.md).

1. 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égies de points d’accès](access-points-policies.md#access-points-policy-examples). 

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

## Étape 4 : créer une fonction Lambda
<a name="ol-upper-step4"></a>

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

**Topics**
+ [Écrire le code d’une fonction Lambda et créer un package de déploiement avec un environnement virtuel](#ol-upper-step4-write-lambda)
+ [Créer une fonction Lambda à l’aide d’un rôle d’exécution (console)](#ol-upper-step4-create-function)
+ [Déployez le code de votre fonction Lambda avec les archives du fichier .zip et configurez la fonction Lambda (console)](#ol-upper-step4-deploy-function)

### Écrire le code d’une fonction Lambda et créer un package de déploiement avec un environnement virtuel
<a name="ol-upper-step4-write-lambda"></a>

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.

1. 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](olap-writing-lambda.md#olap-getobject-response).

   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](olap-event-context.md) et [Écriture de fonctions Lambda pour les points d’accès S3 Object Lambda](olap-writing-lambda.md).

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

   ```
   python -m pip install virtualenv
   ```

1. 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
   ```

1. 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.

1. Pour installer les bibliothèques requises, exécutez les commandes suivantes ligne par ligne dans l’`venv`environnement virtuel.

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

   ```
   pip3 install boto3
   ```

   ```
   pip3 install requests
   ```

1. Pour désactiver l’environnement virtuel, exécutez la commande suivante :

   ```
   deactivate
   ```

1. 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`.

1. 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)
<a name="ol-upper-step4-create-function"></a>

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

   

1. Dans le volet de navigation de gauche, choisissez **Fonctions**.

1. Choisissez **Créer une fonction**.

1. Choisissez **Créer à partir de zéro**.

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

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

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

1. 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](#ol-upper-step5) plus loin dans ce didacticiel, vous associerez **AmazonS3 ObjectLambdaExecutionRolePolicy** au rôle d'exécution de cette fonction Lambda. 

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

1. 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)
<a name="ol-upper-step4-deploy-function"></a>

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

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

1. 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**.

1. Choisissez **Charger** pour sélectionner votre fichier `.zip` local.

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

1. Choisissez **Enregistrer**.

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

1. 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. 

1. Pour indiquer à l’exécution Lambda la méthode de gestionnaire dans votre code de fonction Lambda à invoquer, saisissez **transform.lambda\$1handler** 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`.

1. Choisissez **Enregistrer**.

1. (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
<a name="ol-upper-step5"></a>

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/](https://console.aws.amazon.com/lambda/), sélectionnez **Functions** dans le volet de navigation de gauche. 

1. Choisissez la fonction que vous avez créée à l’[étape 4](#ol-upper-step4) (par exemple, **tutorial-object-lambda-function**).

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

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

1. 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).

1. 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**. 

1. Choisissez **Attacher des politiques**. 

## Étape 6 : créer un point d’accès S3 Object Lambda
<a name="ol-upper-step6"></a>

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/](https://console.aws.amazon.com/s3/).

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

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

1. 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**). 

1. 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](#ol-upper-step3) (par exemple, **tutorial-access-point**), puis choisissez **Choisir un point d’accès de prise en charge**. 

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

1. Pour **invoquer une fonction Lambda**, vous pouvez choisir l’une des deux options suivantes de ce didacticiel. 
   + Sélectionnez **Choisir parmi les fonctions de votre compte**, puis choisissez la fonction Lambda que vous avez créée à l’[étape 4](#ol-upper-step4) (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](#ol-upper-step4).

1. Pour **Version de la fonction Lambda**, choisissez **\$1LATEST** (la dernière version de la fonction Lambda que vous avez créée à l’[étape 4](#ol-upper-step4)).

1. (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 [Utilisation des en-têtes Range et partNumber](range-get-olap.md).

1. (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](olap-event-context.md).

1. (Facultatif) Pour **Métriques de demande – *facultatif***, choisissez **Activer** ou **Désactiver** pour ajouter une 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](https://aws.amazon.com/cloudwatch/pricing/) (Tarification).

1. 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é.

1. 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
<a name="ol-upper-step7"></a>

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.

**Topics**
+ [Afficher les données transformées dans votre point d’accès S3 Object Lambda](#ol-upper-step7-check-data)
+ [Exécuter un script Python pour imprimer les données originales et transformées](#ol-upper-step7-python-print)

### Afficher les données transformées dans votre point d’accès S3 Object Lambda
<a name="ol-upper-step7-check-data"></a>

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/](https://console.aws.amazon.com/s3/).

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

1. 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](#ol-upper-step6) (par exemple, **tutorial-object-lambda-accesspoint**).

1. 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](#ol-upper-step2). 

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

1. 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
<a name="ol-upper-step7-python-print"></a>

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](#ol-upper-step6) 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/](https://console.aws.amazon.com/s3/).

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

1. 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](#ol-upper-step6) (par exemple, **tutorial-object-lambda-accesspoint**).

1. Choisissez **Copier l'ARN**.

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

1. É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")
   ```

1. 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](#ol-upper-step4) sur votre machine locale.

1. 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](#ol-upper-step4).

   ```
   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
<a name="ol-upper-step8"></a>

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. 

**Topics**
+ [Supprimer le point d’accès Object Lambda](#ol-upper-step8-delete-olap)
+ [Supprimer le point d’accès S3](#ol-upper-step8-delete-ap)
+ [Supprimer le rôle d’exécution de votre fonction Lambda.](#ol-upper-step8-delete-lambda-role)
+ [Supprimer la fonction Lambda](#ol-upper-step8-delete-lambda-function)
+ [Supprimer le groupe de CloudWatch journaux](#ol-upper-step8-delete-cloudwatch)
+ [Supprimer le fichier original dans le compartiment source S3](#ol-upper-step8-delete-file)
+ [Supprimer le compartiment source S3](#ol-upper-step8-delete-bucket)
+ [Supprimer l’utilisateur IAM](#ol-upper-step8-delete-user)

### Supprimer le point d’accès Object Lambda
<a name="ol-upper-step8-delete-olap"></a>

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

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

1. 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](#ol-upper-step6) (par exemple, **tutorial-object-lambda-accesspoint**).

1. Choisissez **Supprimer**.

1. 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
<a name="ol-upper-step8-delete-ap"></a>

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

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

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

1. Choisissez **Supprimer**.

1. 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.
<a name="ol-upper-step8-delete-lambda-role"></a>

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

1. Dans le panneau de navigation de gauche, choisissez **Fonctions**.

1. Choisissez la fonction que vous avez créée à l'[étape 4](#ol-upper-step4) (par exemple, **tutorial-object-lambda-function**).

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

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

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

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

### Supprimer la fonction Lambda
<a name="ol-upper-step8-delete-lambda-function"></a>

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

1. Cochez la case à gauche du nom de la fonction que vous avez créée à l’[étape 4](#ol-upper-step4) (par exemple, **tutorial-object-lambda-function**).

1. Choisissez **Actions**, puis **Supprimer**.

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

### Supprimer le groupe de CloudWatch journaux
<a name="ol-upper-step8-delete-cloudwatch"></a>

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

1. Dans le volet de navigation de gauche, choisissez **Groupes de journaux**.

1. Recherchez le groupe de journaux dont le nom se termine par la fonction Lambda que vous avez créée à l’[étape 4](#ol-upper-step4) (par exemple, **tutorial-object-lambda-function**).

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

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

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

### Supprimer le fichier original dans le compartiment source S3
<a name="ol-upper-step8-delete-file"></a>

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

1. Dans le panneau de navigation de gauche, choisissez **Compartiments**.

1. Dans la liste **Nom du compartiment**, choisissez le nom du compartiment vers lequel vous avez chargé le fichier original à l’[étape 2](#ol-upper-step2) (par exemple, **tutorial-bucket**).

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

1. Choisissez **Supprimer**.

1. 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.

1. Choisissez **Supprimer les objets**.

### Supprimer le compartiment source S3
<a name="ol-upper-step8-delete-bucket"></a>

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

1. Dans le panneau de navigation de gauche, choisissez **Compartiments**.

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

1. Choisissez **Supprimer**.

1. 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
<a name="ol-upper-step8-delete-user"></a>

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

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

1. En haut de la page, choisissez **Supprimer**.

1. 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. Choisissez **Supprimer**.

## Étapes suivantes
<a name="ol-upper-next-steps"></a>

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 :
+ Masquer les données sensibles à des fins de sécurité et de conformité.

  Pour plus d’informations, consultez [Didacticiel : Détecter et expurger des PII avec S3 Object Lambda et Amazon Comprehend](tutorial-s3-object-lambda-redact-pii.md).
+ Filtrer certaines lignes de données pour fournir des informations précises.
+ Enrichir les données avec des informations provenant d’autres services ou bases de données.
+ Conversion entre les formats de données, comme la conversion XML en JSON pour la compatibilité des applications.
+ Compression ou décompression des fichiers pendant qu’ils sont téléchargés.
+ Redimensionnement des images et insertion d’un filigrane.

  Pour plus d’informations, consultez [Didacticiel : Utilisation de S3 Object Lambda pour filigraner dynamiquement des images au fur et à mesure de leur récupération](https://aws.amazon.com/getting-started/hands-on/amazon-s3-object-lambda-to-dynamically-watermark-images/?ref=docs_gateway/amazons3/tutorial-s3-object-lambda-uppercase.html).
+ Mise en œuvre de règles d’autorisation personnalisées pour accéder aux données.

Pour en savoir plus sur S3 Object Lambda, consultez [Transformation d’objets avec S3 Object Lambda](transforming-objects.md).

# Didacticiel : Détecter et expurger des PII avec S3 Object Lambda et Amazon Comprehend
<a name="tutorial-s3-object-lambda-redact-pii"></a>

**Note**  
Depuis le 7 novembre 2025, S3 Object Lambda n'est disponible que pour les clients existants qui utilisent actuellement le service, ainsi que pour certains AWS partenaires du réseau de partenaires (APN). Pour des fonctionnalités semblables à celles de S3 Object Lambda, cliquez ici : [Modification de la disponibilité d’Amazon S3 Object Lambda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Lorsque vous utilisez Amazon S3 pour des jeux de données partagés auxquels plusieurs applications et utilisateurs peuvent accéder, il est important de restreindre les informations privilégiées, telles que les données d’identification personnelle (PII), aux entités autorisées uniquement. Par exemple, lorsqu’une application marketing utilise des données contenant des PII, elle doit d’abord masquer les PII pour répondre aux exigences de confidentialité des données. En outre, lorsqu’une application d’analyse utilise un jeu de données d’inventaire d’ordre de production, elle peut devoir d’abord effacer les informations de carte de crédit du client afin d’éviter toute fuite de données involontaire.

Grâce à [S3 Object Lambda](https://aws.amazon.com/s3/features/object-lambda) et une fonction AWS Lambda optimisée par Amazon Comprehend, vous pouvez protéger les DPI récupérées à partir de S3 avant de les renvoyer à une application. Plus précisément, vous pouvez utiliser la [fonction Lambda](https://aws.amazon.com/lambda/) préconstruite en tant que fonction d’expurgation et l’attacher à un point d’accès S3 Object Lambda. Lorsqu’une application (par exemple, une application d’analytique) envoie [des demandes S3 GET standard](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html), ces demandes effectuées via le point d’accès S3 Object Lambda invoquent la fonction intégrée d’expurgation Lambda afin de détecter et d’expurger les PII extraites d’une source de données sous-jacente via un point d’accès S3 compatible. Ensuite, le point d’accès S3 Object Lambda retourne le résultat expurgé à l’application.

![\[Diagramme de flux S3 Object Lambda.\]](http://docs.aws.amazon.com/fr_fr/AmazonS3/latest/userguide/images/ol-comprehend-image-global.png)


Dans le processus, la fonction Lambda préconstruite utilise [Amazon Comprehend](https://aws.amazon.com/comprehend/), un service de traitement du langage naturel (NLP), qui permet de saisir les variations dans la façon dont les PII sont représentées, quelle que soit la façon dont les PII existent dans le texte (par exemple, numériquement ou sous forme de combinaison de mots et de chiffres). Amazon Comprehend peut même utiliser le contexte dans le texte pour comprendre si un numéro à 4 chiffres est un code PIN, les quatre derniers numéros d’un numéro de sécurité sociale (NSS) ou une année. Amazon Comprehend traite n’importe quel fichier texte au format UTF-8 et peut protéger les PII à grande échelle sans affecter la précision. Pour plus d’informations, consultez [Qu’est-ce qu’Amazon Comprehend ?](https://docs.aws.amazon.com/comprehend/latest/dg/what-is.html) dans le *guide du développeur Amazon Comprehend*.

**Objectif**  
Dans ce didacticiel, vous apprendrez à utiliser S3 Object Lambda avec la fonction Lambda préconstruite `ComprehendPiiRedactionS3ObjectLambda`. Cette fonction utilise Amazon Comprehend pour détecter les entités PII. Elle supprime ensuite ces entités en les remplaçant par des astérisques. En expurgeant des PII, vous masquez les données sensibles, ce qui peut aider en matière de sécurité et de conformité.

Vous apprendrez également à utiliser et à configurer une AWS Lambda fonction prédéfinie dans le [AWS Serverless Application Repository](https://aws.amazon.com/serverless/serverlessrepo/)pour qu'elle fonctionne avec S3 Object Lambda afin de faciliter le déploiement. 

**Topics**
+ [Conditions préalables : Créer un utilisateur IAM avec des autorisations](#ol-pii-prerequisites)
+ [Étape 1 : Créer un compartiment S3](#ol-pii-step1)
+ [Étape 2 : charger un fichier dans le compartiment S3](#ol-pii-step2)
+ [Étape 3 : créer un point d’accès S3](#ol-pii-step3)
+ [Étape 4 : configurer et déployer une fonction Lambda préconstruite](#ol-pii-step4)
+ [Étape 5 : créer un point d’accès S3 Object Lambda](#ol-pii-step5)
+ [Étape 6 : utiliser le point d’accès S3 Object Lambda pour récupérer le fichier expurgé](#ol-pii-step6)
+ [Étape 7 : nettoyer](#ol-pii-step7)
+ [Étapes suivantes](#ol-pii-next-steps)

## Conditions préalables : Créer un utilisateur IAM avec des autorisations
<a name="ol-pii-prerequisites"></a>

Avant de commencer ce didacticiel, vous devez disposer d'un AWS compte auquel vous pouvez vous connecter en tant qu' Gestion des identités et des accès AWS utilisateur (utilisateur IAM) avec les autorisations appropriées.

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. 

**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](#ol-pii-step8-delete-user). Pour une utilisation en production, nous vous recommandons de suivre les [Bonnes pratiques de sécurité dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) 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](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) dans le *guide de AWS IAM Identity Center l'utilisateur*.   
Pour plus de simplicité, ce didacticiel utilise des stratégies d’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é](security-best-practices.md#security-best-practices-prevent).

Votre utilisateur IAM a besoin des politiques AWS gérées suivantes :
+ [AmazonS3 FullAccess — Accorde](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonS3FullAccess$jsonEditor) des autorisations pour toutes les actions Amazon S3, y compris les autorisations pour créer et utiliser un point d'accès Object Lambda. 
+ [AWSLambda\$1FullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSLambda_FullAccess$jsonEditor)— Accorde des autorisations à toutes les actions Lambda. 
+ [AWSCloudFormationFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AWSCloudFormationFullAccess$serviceLevelSummary)— Accorde des autorisations pour toutes les AWS CloudFormation actions.
+ [IAMFullAccès](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/IAMFullAccess$jsonEditor) : accorde des autorisations à toutes les actions IAM. 
+ [IAMAccessAnalyzerReadOnlyAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/IAMAccessAnalyzerReadOnlyAccess$jsonEditor)— Accorde l'autorisation de lire toutes les informations d'accès fournies par IAM Access Analyzer. 

Vous pouvez attacher directement ces politiques existantes lors de la création d’un utilisateur IAM. Pour en savoir plus sur la création d'un utilisateur IAM, consultez [Créer votre premier groupe d'utilisateurs et d'administrateurs IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) dans le *guide de l'utilisateur IAM*.

En outre, votre utilisateur IAM nécessite une politique gérée par le client. Pour accorder à l'utilisateur IAM des autorisations sur toutes les AWS Serverless Application Repository ressources et actions, vous devez créer une stratégie IAM et l'associer à l'utilisateur IAM.

**Créer et attacher une politique IAM à votre utilisateur IAM**

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

1. Dans le volet de navigation de gauche, choisissez **Politiques**.

1. Choisissez **Créer une politique**. 

1. Dans l’onglet **Éditeur visuel**, pour **Service**, choisissez **Choisir un service**. Ensuite, choisissez **Serverless Application Repository**. 

1. Pour **Actions**, sous **Actions manuelles**, sélectionnez **Toutes les actions du Serverless Application Repository (serverlessrepo :\$1)** pour ce didacticiel.

   En tant que bonne pratique de sécurité, vous devez autoriser un utilisateur à accéder uniquement aux actions et ressources qui lui sont nécessaires, selon votre cas d’utilisation. Pour plus d’informations, consultez [Bonnes pratiques de sécurité dans IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dans le *Guide de l’utilisateur IAM*.

1. Pour **Ressources**, choisissez **Toutes les ressources** pour ce didacticiel.

   La bonne pratique consiste à définir des autorisations pour des ressources spécifiques uniquement dans des comptes spécifiques. Vous pouvez autrement accorder le moindre privilège en utilisant des clés de condition. Pour plus d’informations, consultez [Accorder le moindre privilège](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) dans le *guide de l’utilisateur IAM*.

1. Choisissez **Suivant : Balises**.

1. Choisissez **Suivant : Vérification**.

1. Sur la page **Examiner une politique**, saisissez un **nom** (par exemple, **tutorial-serverless-application-repository**) et une **description** (facultatif) pour la politique que vous êtes en train de créer. Examinez le récapitulatif de la politique afin de vérifier que vous avez accordé les autorisations souhaitées, puis choisissez **Créer une politique** pour enregistrer votre nouvelle politique.

1. Dans le volet de navigation de gauche, choisissez **Utilisateurs**. Ensuite, choisissez l’utilisateur IAM pour ce didacticiel. 

1. Dans la page **Récapitulatif** de l’utilisateur sélectionné, choisissez l’onglet **Autorisations**, puis choisissez **Ajouter des autorisations**.

1. Sous **Octroyer des autorisations**, choisissez **Attacher directement les politiques existantes**.

1. Cochez la case en regard de la politique que vous avez créée (par exemple, **tutorial-serverless-application-repository**), puis choisissez **Suivant : Examiner**. 

1. Sous **Récapitulatif des autorisations**, examinez le récapitulatif de la politique afin de vérifier que vous avez attaché la politique prévue. Choisissez ensuite **Ajouter des autorisations**.

## Étape 1 : Créer un compartiment S3
<a name="ol-pii-step1"></a>

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

**Note**  
Des points d'accès peuvent être attachés à une autre source de données, telle qu'un volume Amazon FSx pour OpenZFS, mais ce didacticiel utilise un point d'accès auxiliaire attaché à un compartiment S3.

**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/](https://console.aws.amazon.com/s3/).

1. Dans le panneau de navigation de gauche, choisissez **Compartiments**.

1. Choisissez **Créer un compartiment**. 

   La page **Créer un compartiment** s'ouvre.

1. 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](bucketnamingrules.md).

1. Dans **Région**, choisissez la Région AWS dans laquelle le compartiment doit résider. 

   Pour en savoir plus sur les régions des compartiments, consultez [Présentation des compartiments à usage général](UsingBucket.md).

1. 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](access-control-block-public-access.md).

1. 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éation d’un compartiment à usage général](create-bucket-overview.md).

1. Choisissez **Créer un compartiment**.

## Étape 2 : charger un fichier dans le compartiment S3
<a name="ol-pii-step2"></a>

Téléchargez un fichier texte contenant des données personnelles connues de différents types, telles que des noms, des informations bancaires, des numéros de téléphone SSNs, et dans le compartiment S3 en tant que données d'origine dont vous supprimerez les informations personnelles ultérieurement dans ce didacticiel. 

Par exemple, vous pouvez charger le fichier `tutorial.txt` suivant. Voici un exemple de fichier d’entrée Amazon Comprehend.

```
Hello Zhang Wei, I am John. Your AnyCompany Financial Services, 
LLC credit card account 1111-0000-1111-0008 has a minimum payment 
of $24.53 that is due by July 31st. Based on your autopay settings, 
we will withdraw your payment on the due date from your 
bank account number XXXXXX1111 with the routing number XXXXX0000. 

Your latest statement was mailed to 100 Main Street, Any City, 
WA 98121. 
After your payment is received, you will receive a confirmation 
text message at 206-555-0100. 
If you have questions about your bill, AnyCompany Customer Service 
is available by phone at 206-555-0199 or 
email at support@anycompany.com.
```

**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/](https://console.aws.amazon.com/s3/).

1. Dans le panneau de navigation de gauche, choisissez **Compartiments**.

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

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

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

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

1. Choisissez **Charger**.

## Étape 3 : créer un point d’accès S3
<a name="ol-pii-step3"></a>

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](#ol-pii-step1). 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/](https://console.aws.amazon.com/s3/).

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

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

1. Dans le champ **Nom du point d’accès**, saisissez le nom (par exemple, **tutorial-pii-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 des points d’accès](access-points-restrictions-limitations-naming-rules.md#access-points-names).

1. Dans le champ **Source de données**, saisissez le nom du compartiment que vous avez créé à l’[étape 1](#ol-pii-step1) (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.

1. 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](access-points-vpc.md).

1. 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 de compartiments à usage général](access-points-bpa-settings.md).

1. 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égies de points d’accès](access-points-policies.md#access-points-policy-examples). 

1. Choisissez **Créer un point d'accès**.

## Étape 4 : configurer et déployer une fonction Lambda préconstruite
<a name="ol-pii-step4"></a>

Pour effacer les PII, configurez et déployez la fonction AWS Lambda `ComprehendPiiRedactionS3ObjectLambda` préconstruite à utiliser avec votre point d’accès S3 Object Lambda.

**Configurez et déployez la fonction Lambda**

1. Connectez-vous au AWS Management Console et visualisez la [https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:839782855223:applications/ComprehendPiiRedactionS3ObjectLambda](https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:839782855223:applications/ComprehendPiiRedactionS3ObjectLambda)fonction dans le AWS Serverless Application Repository.

1. Pour les **Paramètres de l’application**, sous **Nom de l’application**, conservez la valeur par défaut (`ComprehendPiiRedactionS3ObjectLambda`) pour ce didacticiel.

   (Facultatif) Vous pouvez saisir le nom que vous souhaitez donner à cette application. Vous pouvez faire ceci si vous prévoyez de configurer plusieurs fonctions Lambda pour différents besoins d’accès au même jeu de données partagé.

1. Pour **MaskCharacter**, conservez la valeur par défaut (`*`). Le caractère de masque remplace chaque caractère de l’entité PII expurgée. 

1. Pour **MaskMode**, conservez la valeur par défaut (**MASK**). La **MaskMode**valeur indique si l'entité PII est expurgée avec le `MASK` caractère ou la `PII_ENTITY_TYPE` valeur.

1. Pour supprimer les types de données spécifiés, pour **PiiEntityTypes**, conservez la valeur par défaut **ALL**. La **PiiEntityTypes**valeur indique les types d'entités PII à prendre en compte pour la rédaction. 

   Pour en savoir plus sur la liste des types d’entités PII pris en charge, consultez [Détecter les données d’identification personnelle (PII)](https://docs.aws.amazon.com/comprehend/latest/dg/how-pii.html) dans le *guide du développeur Amazon Comprehend*.

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

   (Facultatif) Si vous souhaitez configurer des paramètres supplémentaires pour votre cas d’utilisation spécifique, consultez la section **Fichier Readme** sur le côté gauche de la page.

1. Cochez la case en regard de **Je reconnais que cette application crée des rôles IAM personnalisés**.

1. Choisissez **Déployer**.

1. Dans la page de la nouvelle application, sous **Ressources**, choisissez l’**ID logique** de la fonction Lambda que vous avez déployée pour examiner la fonction dans la page de la fonction Lambda.

## Étape 5 : créer un point d’accès S3 Object Lambda
<a name="ol-pii-step5"></a>

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 supprimer les PII 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 d’expurgation Lambda à invoquer et fournir le contexte d’événement au format JSON en tant que paramètres personnalisés pour utilisation par Lambda. 

Le contexte d'événement fournit des informations sur la demande effectuée dans l'événement transmis de S3 Object Lambda à Lambda. Pour en savoir plus sur tous les champs du contexte d’événement, consultez [Format et utilisation du contexte d’événement](olap-event-context.md).

**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/](https://console.aws.amazon.com/s3/).

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

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

1. 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-pii-object-lambda-accesspoint**). 

1. 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](#ol-pii-step3) (par exemple, **tutorial-pii-access-point**), puis choisissez **Choisir un point d’accès de prise en charge**. 

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

1. Pour **Appeler une fonction Lambda**, vous pouvez choisir l'une des deux options suivantes pour ce didacticiel. 
   + Sélectionnez **Choisir parmi les fonctions de votre compte** et choisissez la fonction Lambda que vous avez déployée à l’[étape 4](#ol-pii-step4) (par exemple, **serverlessrepo-ComprehendPiiRedactionS3ObjectLambda**) dans la liste déroulante **Fonction Lambda**.
   + Choisissez **Saisir l'ARN**, puis saisissez l'Amazon Resource Name (ARN) de la fonction Lambda que vous avez créée à l'[étape 4](#ol-pii-step4).

1. Pour **Version de la fonction Lambda**, choisissez **\$1LATEST** (la dernière version de la fonction Lambda que vous avez déployée à l’[étape 4](#ol-pii-step4)).

1. (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 [Utilisation des en-têtes Range et partNumber](range-get-olap.md).

1. (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](olap-event-context.md).

1. (Facultatif) Pour **Métriques de demande – *facultatif***, choisissez **Activer** ou **Désactiver** pour ajouter une 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](https://aws.amazon.com/cloudwatch/pricing/) (Tarification).

1. 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é.

1. Conservez les paramètres restants définis sur les valeurs par défaut, et choisissez **Créer un point d'accès Object Lambda**.

## Étape 6 : utiliser le point d’accès S3 Object Lambda pour récupérer le fichier expurgé
<a name="ol-pii-step6"></a>

Maintenant, S3 Object Lambda est prêt à expurger les PII de votre fichier original. 

**Pour utiliser le point d’accès S3 Object Lambda pour récupérer le fichier expurgé**

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. L’objet S3 Lambda invoque la fonction Lambda pour expurger vos PII et retourne les données transformées comme 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/](https://console.aws.amazon.com/s3/).

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

1. 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 5](#ol-pii-step5) (par exemple, **tutorial-pii-object-lambda-accesspoint**).

1. 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](#ol-pii-step2). 

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

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

    Vous devriez pouvoir voir le fichier expurgé, comme illustré dans l’exemple suivant. 

   ```
   Hello *********. Your AnyCompany Financial Services, 
   LLC credit card account ******************* has a minimum payment 
   of $24.53 that is due by *********. Based on your autopay settings, 
   we will withdraw your payment on the due date from your 
   bank account ********** with the routing number *********. 
   
   Your latest statement was mailed to **********************************. 
   After your payment is received, you will receive a confirmation 
   text message at ************. 
   If you have questions about your bill, AnyCompany Customer Service 
   is available by phone at ************ or 
   email at **********************.
   ```

## Étape 7 : nettoyer
<a name="ol-pii-step7"></a>

Si vous avez expurgé vos données via S3 Object Lambda uniquement à des fins d'apprentissage, supprimez AWS les ressources que vous avez allouées afin de ne plus payer de frais. 

**Topics**
+ [Supprimer le point d’accès Object Lambda](#ol-pii-step8-delete-olap)
+ [Supprimer le point d’accès S3](#ol-pii-step8-delete-ap)
+ [Supprimer la fonction Lambda](#ol-pii-step8-delete-lambda-function)
+ [Supprimer le groupe de CloudWatch journaux](#ol-pii-step8-delete-cloudwatch)
+ [Supprimer le fichier original dans le compartiment source S3](#ol-pii-step8-delete-file)
+ [Supprimer le compartiment source S3](#ol-pii-step8-delete-bucket)
+ [Supprimer le rôle IAM de votre fonction Lambda](#ol-pii-step8-delete-lambda-role)
+ [Supprimer la politique gérée par le client de votre utilisateur IAM](#ol-pii-step8-delete-function-policy)
+ [Supprimer l'utilisateur IAM](#ol-pii-step8-delete-user)

### Supprimer le point d’accès Object Lambda
<a name="ol-pii-step8-delete-olap"></a>

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

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

1. Sur la page **Points d’accès Lambda d’objet**, choisissez le bouton d’option situé à gauche du point d’accès S3 Object Lambda que vous avez créé à l’[étape 5](#ol-pii-step5) (par exemple, **tutorial-pii-object-lambda-accesspoint**).

1. Choisissez **Supprimer**.

1. 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
<a name="ol-pii-step8-delete-ap"></a>

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

1. Dans le panneau de navigation, choisissez **Points d'accès**.

1. Accédez au point d’accès que vous avez créé à l’[étape 3](#ol-pii-step3) (par exemple, **tutorial-pii-access-point**) et choisissez le bouton d’option en regard du nom du point d’accès.

1. Choisissez **Supprimer**.

1. Confirmez que vous souhaitez supprimer votre point d'accès en saisissant son nom dans le champ de texte qui s'affiche, puis choisissez **Supprimer**.

### Supprimer la fonction Lambda
<a name="ol-pii-step8-delete-lambda-function"></a>

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

1. Choisissez la fonction que vous avez créée à l'[étape 4](#ol-pii-step4) (par exemple, **serverlessrepo-ComprehendPiiRedactionS3ObjectLambda**).

1. Choisissez **Actions**, puis choisissez **Supprimer**.

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

### Supprimer le groupe de CloudWatch journaux
<a name="ol-pii-step8-delete-cloudwatch"></a>

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

1. Dans le volet de navigation de gauche, choisissez **Groupes de journaux**.

1. Recherchez le groupe de journaux dont le nom se termine par la fonction Lambda que vous avez créée à l'[étape 4](#ol-pii-step4) (par exemple, **serverlessrepo-ComprehendPiiRedactionS3ObjectLambda**).

1. Choisissez **Actions**, puis choisissez **Supprimer le groupe de journaux**.

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

### Supprimer le fichier original dans le compartiment source S3
<a name="ol-pii-step8-delete-file"></a>

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

1. Dans le panneau de navigation de gauche, choisissez **Compartiments**.

1. Dans la liste **Nom du compartiment**, choisissez le nom du compartiment vers lequel vous avez chargé le fichier original à l’[étape 2](#ol-pii-step2) (par exemple, **tutorial-bucket**).

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

1. Choisissez **Supprimer**.

1. 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.

1. Choisissez **Supprimer les objets**.

### Supprimer le compartiment source S3
<a name="ol-pii-step8-delete-bucket"></a>

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

1. Dans le panneau de navigation de gauche, choisissez **Compartiments**.

1. Dans la liste **Compartiments**, choisissez le bouton d’option en regard du nom du compartiment que vous avez créé à l’[étape 1](#ol-pii-step1) (par exemple, **tutorial-bucket**).

1. Choisissez **Supprimer**.

1. Dans la page **Supprimer un compartiment**, confirmez que vous souhaitez supprimer le compartiment en saisissant le nom du compartiment dans le champ de texte, puis choisissez **Supprimer un compartiment**.

### Supprimer le rôle IAM de votre fonction Lambda
<a name="ol-pii-step8-delete-lambda-role"></a>

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

1. Dans le volet de navigation de gauche, choisissez **Rôles**, puis cochez la case en regard du rôle à supprimer. Le nom du rôle commence par le nom de la fonction Lambda que vous avez déployée à l’[étape 4](#ol-pii-step4) (par exemple, **serverlessrepo-ComprehendPiiRedactionS3ObjectLambda**).

1. Choisissez **Supprimer**.

1. Dans la boîte de dialogue **Supprimer**, saisissez le nom du rôle dans le champ de saisie de texte pour confirmer la suppression. Ensuite, choisissez **Supprimer**.

### Supprimer la politique gérée par le client de votre utilisateur IAM
<a name="ol-pii-step8-delete-function-policy"></a>

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

1. Dans le panneau de navigation de gauche, choisissez **Politiques**.

1. Dans la page **Politiques**, saisissez le nom de la politique gérée par le client que vous avez créée dans les [conditions préalables](#ol-pii-prerequisites) (par exemple, **tutorial-serverless-application-repository**) dans la zone de recherche pour filtrer la liste des politiques. Sélectionnez le bouton d’option en regard du nom de la politique à supprimer.

1. Choisissez **Actions**, puis choisissez **Supprimer**.

1. Confirmez que vous souhaitez supprimer cette politique en saisissant son nom dans le champ de texte qui s’affiche, puis choisissez **Supprimer**.

### Supprimer l'utilisateur IAM
<a name="ol-pii-step8-delete-user"></a>

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

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

1. En haut de la page, choisissez **Supprimer**.

1. 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. Choisissez **Supprimer**.

## Étapes suivantes
<a name="ol-pii-next-steps"></a>

Après avoir terminé ce didacticiel, vous pouvez explorer plus en détail les cas d’utilisation connexes suivants :
+ Vous pouvez créer plusieurs points d’accès S3 Lambda Object et les activer avec des fonctions Lambda préconstruites qui sont configurées différemment pour expurger des types spécifiques de PII en fonction des besoins métier des accesseurs aux données. 

  Chaque type d’utilisateur assume un rôle IAM et n’a accès qu’à un seul point d’accès S3 Object Lambda (géré via des politiques IAM). Ensuite, vous attachez chaque fonction Lambda `ComprehendPiiRedactionS3ObjectLambda` configurée pour un cas d’utilisation d’expurgation différent à un autre point d’accès S3 Object Lambda. Pour chaque point d’accès S3 Object Lambda, vous pouvez disposer d’un point d’accès S3 prenant en charge la lecture des données à partir d’un compartiment S3 qui stocke le jeu de données partagé. 

  Pour en savoir plus sur la façon de créer une politique de compartiment S3 qui permet aux utilisateurs de lire à partir du compartiment uniquement via des points d’accès S3, consultez [Configuration des politiques IAM pour l’utilisation des points d’accès](access-points-policies.md).

  Pour en savoir plus sur la façon d’octroyer à un utilisateur l’autorisation d’accéder à la fonction Lambda, au point d’accès S3 et au point d’accès S3 Object Lambda, consultez [Configuration des politiques IAM pour les points d’accès Object Lambda](olap-policies.md).
+ Vous pouvez créer votre propre fonction Lambda et utiliser S3 Object Lambda avec votre fonction Lambda personnalisée pour répondre à vos besoins spécifiques en matière de données.

  Par exemple, pour explorer diverses valeurs de données, vous pouvez utiliser S3 Object Lambda et votre propre fonction Lambda qui utilise des [fonctions Amazon Comprehend](https://aws.amazon.com/comprehend/features/), telles que la reconnaissance des entités, la reconnaissance des mots clés, l’analyse du ressenti et la classification des documents, pour traiter les données. Vous pouvez également utiliser S3 Object Lambda avec [Amazon Comprehend Medical](https://aws.amazon.com/comprehend/medical/), un service NLP admissible à HIPAA, pour analyser et extraire des données d’une manière contextuelle.

  Pour en savoir plus sur la façon de transformer des données avec S3 Object Lambda et votre propre fonction Lambda, consultez [Didacticiel : Transformation de données pour votre application avec S3 Object Lambda](tutorial-s3-object-lambda-uppercase.md).

# Débogage et résolution des problèmes de S3 Object Lambda
<a name="olap-debugging-lambda"></a>

**Note**  
Depuis le 7 novembre 2025, S3 Object Lambda n'est disponible que pour les clients existants qui utilisent actuellement le service, ainsi que pour certains AWS partenaires du réseau de partenaires (APN). Pour des fonctionnalités semblables à celles de S3 Object Lambda, cliquez ici : [Modification de la disponibilité d’Amazon S3 Object Lambda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Les demandes adressées aux points d’accès S3 Object Lambda peuvent entraîner une nouvelle réponse d’erreur en cas de problème avec l’invocation ou l’exécution de la fonction Lambda. Ces erreurs respectent le même format que les erreurs Amazon S3 standard. Pour plus d’informations sur les erreurs S3 Object Lambda, consultez la [liste de codes d’erreur S3 Object Lambda](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#S3ObjectLambdaErrorCodeList) dans la *Référence d’API Amazon Simple Storage Service API*.

Pour plus d’informations sur le débogage de fonction Lambda générale, consultez [Surveillance et dépannage des applications Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html ) dans le *Guide du développeur AWS Lambda *.

Pour plus d’informations sur les erreurs Simple Storage Service (Amazon S3) standard, consultez [Réponses d’erreur](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html) dans la *Référence d’API Amazon Simple Storage Service*.

Vous pouvez activer les métriques de demande dans Amazon CloudWatch pour vos points d'accès Object Lambda. Ces métriques vous aident à surveiller les performances opérationnelles de votre point d’accès. Vous pouvez activer les métriques de demande pendant ou après la création de votre point d’accès Object Lambda. Pour plus d’informations, consultez [Métriques de demande Lambda d'un objet S3 dans CloudWatch](metrics-dimensions.md#olap-cloudwatch-metrics).

Pour obtenir une journalisation plus détaillée des demandes adressées à vos points d’accès Object Lambda, vous pouvez activer les événements de données AWS CloudTrail . Pour plus d'informations, veuillez consulter [Consignation d'événements de données pour les journaux d'activité](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html) dans le *Guide de l'utilisateur AWS CloudTrail *.

Pour obtenir des didacticiels S3 Object Lambda, consultez :
+ [Didacticiel : Transformation de données pour votre application avec S3 Object Lambda](tutorial-s3-object-lambda-uppercase.md)
+ [Didacticiel : Détecter et expurger des PII avec S3 Object Lambda et Amazon Comprehend](tutorial-s3-object-lambda-redact-pii.md)
+ [Tutoriel : Utilisation de S3 Object Lambda pour filigraner dynamiquement des images au fur et à mesure de leur récupération](https://aws.amazon.com/getting-started/hands-on/amazon-s3-object-lambda-to-dynamically-watermark-images/?ref=docs_gateway/amazons3/transforming-objects.html)

Pour plus d’informations sur les points d’accès standard, consultez [Gestion de l’accès aux jeux de données avec des points d’accès](access-points.md). 

Pour plus d’informations sur l’utilisation des compartiments, consultez [Présentation des compartiments à usage général](UsingBucket.md). Pour en savoir plus sur l'utilisation des objets, consultez [Présentation des objets Amazon S3](UsingObjects.md).