

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Trasformazione di oggetti con S3 Object Lambda
<a name="transforming-objects"></a>

**Nota**  
A partire dal 7 novembre 2025, S3 Object Lambda è disponibile solo per i clienti esistenti che attualmente utilizzano il servizio e per alcuni AWS partner Partner Network (APN). Per funzionalità simili a Lambda per oggetti S3, consulta [Modifica della disponibilità di Lambda per oggetti Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Con Lambda per oggetti Amazon S3, è possibile aggiungere il proprio codice alle richieste di Amazon S3 `GET`, `LIST` e `HEAD` per modificare ed elaborare i dati mentre vengono restituiti a un'applicazione. Puoi utilizzare il codice personalizzato per modificare i dati restituiti dalle richieste `GET` S3 standard per filtrare le righe, ridimensionare e applicare la filigrana alle immagini in modo dinamico, oscurare i dati riservati e molto altro. Puoi anche utilizzare S3 Object Lambda per modificare l'output delle richieste `LIST` S3 per creare una vista personalizzata di tutti gli oggetti in un bucket e delle richieste `HEAD` S3 per modificare i metadati degli oggetti come il nome e la dimensione dell'oggetto. Puoi utilizzare S3 Object Lambda come origine per la tua distribuzione CloudFront Amazon per personalizzare i dati per gli utenti finali, ad esempio ridimensionando automaticamente le immagini, transcodificando formati più vecchi (come da JPEG a WebP) o rimuovendo i metadati. Per ulteriori informazioni, consulta il post del AWS blog [Usa Amazon S3 Object Lambda](https://aws.amazon.com/blogs/aws/new-use-amazon-s3-object-lambda-with-amazon-cloudfront-to-tailor-content-for-end-users/) con Amazon. CloudFront Basato sulle funzioni AWS Lambda, il codice viene eseguito su un'infrastruttura completamente gestita da. AWS L'utilizzo di S3 Object Lambda riduce la necessità di creare e archiviare copie derivate dei dati o di eseguire proxy senza dover modificare le applicazioni.

**Come funziona S3 Object Lambda**  
S3 Object Lambda AWS Lambda utilizza funzioni per elaborare automaticamente l'output di `GET` S3 o richieste `LIST` standard. `HEAD` AWS Lambda è un servizio di elaborazione serverless che esegue codice definito dal cliente senza richiedere la gestione delle risorse di elaborazione sottostanti. Puoi creare ed eseguire le funzioni Lambda personalizzate, adattando la trasformazione dei dati a casi d'uso specifici. 

Dopo averla configurata, puoi collegare una funzione Lambda a un endpoint del servizio Lambda per oggetti S3, noto come *punto di accesso Lambda per oggetti*. Per accedere ai dati, il punto di accesso Lambda per oggetti utilizza un punto di accesso S3 standard, noto come *punto di accesso di supporto*.

Quando invii una richiesta al punto di accesso Lambda per oggetti, Amazon S3 richiama automaticamente la funzione Lambda. Tutti i dati recuperati utilizzando una richiesta S3 `GET`, `LIST` o `HEAD` tramite il punto di accesso Lambda per oggetti restituirà un risultato trasformato all'applicazione. Tutte le altre richieste vengono elaborate normalmente, come illustrato nel diagramma seguente. 



![\[Diagramma che mostra il funzionamento di Lambda per oggetti S3.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/ObjectLamdaDiagram.png)


Gli argomenti in questa sezione descrivono come utilizzare S3 Object Lambda.

**Topics**
+ [

# Creazione di punti di accesso Object Lambda
](olap-create.md)
+ [

# Utilizzo dei punti di accesso Amazon S3 Object Lambda
](olap-use.md)
+ [

# Considerazioni sulla sicurezza per i punti di accesso S3 Object Lambda
](olap-security.md)
+ [

# Scrittura di funzioni Lambda per i punti di accesso Lambda per oggetti S3
](olap-writing-lambda.md)
+ [

# Utilizzo delle AWS funzioni Lambda integrate
](olap-examples.md)
+ [

# Best practice e linee guida per Lambda per oggetti S3
](olap-best-practices.md)
+ [

# Tutorial di Lambda per oggetti S3
](olap-tutorials.md)
+ [

# Debug e risoluzione dei problemi di Lambda per oggetti S3
](olap-debugging-lambda.md)

# Creazione di punti di accesso Object Lambda
<a name="olap-create"></a>

**Nota**  
A partire dal 7 novembre 2025, S3 Object Lambda è disponibile solo per i clienti esistenti che attualmente utilizzano il servizio e per alcuni AWS partner Partner Network (APN). Per funzionalità simili a Lambda per oggetti S3, consulta [Modifica della disponibilità di Lambda per oggetti Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Un punto di accesso Lambda per oggetti è associato esattamente a un punto di accesso standard, che si specifica durante la creazione. Per creare un punto di accesso Lambda per oggetti, sono necessarie le seguenti risorse:
+ **Un punto di accesso S3 standard.** Quando lavori con gli access point Object Lambda, questo punto di accesso standard è noto come punto di *accesso di supporto* ed è collegato a un bucket S3 o a un volume FSx Amazon for OpenZFS. Per informazioni sulla creazione di punti di accesso standard, consulta la sezione [Creazione di un access point](creating-access-points.md).
+ ** AWS Lambda Una funzione.** Puoi creare una funzione Lambda personalizzata oppure utilizzare una funzione predefinita. Per ulteriori informazioni sulla creazione delle funzioni Lambda, consulta [Scrittura di funzioni Lambda per i punti di accesso Lambda per oggetti S3](olap-writing-lambda.md). Per ulteriori informazioni sulle funzioni incorporate, consulta [Utilizzo delle AWS funzioni Lambda integrate](olap-examples.md).
+ **(Facoltativo) Una politica AWS Identity and Access Management (IAM).** I punti di accesso Amazon S3 supportano le policy delle risorse IAM che consentono di controllare l'utilizzo del punto di accesso per risorsa, utente o altre condizioni. Per ulteriori informazioni sulla creazione di queste policy, consulta [Configurazione delle policy IAM per i punti di accesso Lambda per oggetti](olap-policies.md).

Nelle sezioni seguenti viene descritto come creare un punto di accesso Lambda per oggetti utilizzando:
+ La Console di gestione AWS
+ Il AWS Command Line Interface (AWS CLI)
+ Un AWS CloudFormation modello
+ Il AWS Cloud Development Kit (AWS CDK)

Per ulteriori informazioni su come creare un punto di accesso Lambda per oggetti tramite REST API, consulta [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPointForObjectLambda.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPointForObjectLambda.html) nella *Documentazione di riferimento delle API di Amazon Simple Storage Service*.

## Creazione di un punto di accesso Lambda per oggetti
<a name="create-olap"></a>

Utilizza una delle procedure riportate di seguito per creare il punto di accesso Lambda per oggetti. 

### Utilizzo della console S3
<a name="olap-create-console"></a>

**Per creare un punto di accesso Lambda per oggetti utilizzando la console**

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nella barra di navigazione, scegli il nome del file attualmente visualizzato Regione AWS. Quindi, scegli la Regione a cui passare. 

1. Nel riquadro di navigazione sinistro, scegli **Punti di accesso Lambda dell'oggetto**.

1. Nella pagina **Punti di accesso Lambda dell'oggetto**, scegli **Crea punto di accesso per le espressioni Lambda dell'oggetto**.

1. In **Object Lambda Access Point name** (Nome punto di accesso Object Lambda), specifica il nome da utilizzare per il punto di accesso. 

   Come per i punti di accesso standard, esistono regole per la denominazione dei punti di accesso Lambda per oggetti. Per ulteriori informazioni, consulta [Regole di denominazione dei punti di accesso](access-points-restrictions-limitations-naming-rules.md#access-points-names).

1. In **Supporting Access Point** (Punto di accesso di supporto), specifica o seleziona il punto di accesso standard da utilizzare. Il punto di accesso deve trovarsi nella Regione AWS stessa posizione degli oggetti che desiderate trasformare. Per informazioni sulla creazione di punti di accesso standard, consulta la sezione [Creazione di un access point](creating-access-points.md).

1. In **Configurazione della trasformazione** puoi aggiungere una funzione che trasforma i dati per il punto di accesso Lambda per oggetti. Esegui una delle seguenti operazioni:
   + Se hai già una AWS Lambda funzione nel tuo account, puoi sceglierla nella funzione **Invoke Lambda**. Qui puoi inserire l'Amazon Resource Name (ARN) di una funzione Lambda nel tuo o Account AWS scegliere una funzione Lambda dal menu a discesa.
   + Se desideri utilizzare una funzione AWS incorporata, scegli il nome della funzione in **funzione AWS integrata** e seleziona **Crea funzione Lambda**. Verrai indirizzato alla console Lambda dove potrai implementare una funzione integrata nel tuo. Account AWS Per ulteriori informazioni sulle funzioni integrate, consulta [Utilizzo delle AWS funzioni Lambda integrate](olap-examples.md).

   In **S3 APIs**, scegli una o più operazioni API da richiamare. Per ogni API selezionata, devi specificare una funzione Lambda da richiamare. 

1. (Facoltativo) In **Payload**, aggiungi il testo JSON da fornire come input alla funzione Lambda. Puoi configurare payload con parametri diversi per diversi punti di accesso Lambda per oggetti che invocano la stessa funzione Lambda, estendendo così la flessibilità della funzione stessa.
**Importante**  
Quando utilizzi i punti di accesso Lambda per oggetti, assicurati che il payload non contenga informazioni riservate.

1. (Facoltativo) In **Range and part number** (Intervallo e numero parte), devi abilitare l'opzione se vuoi elaborare le richieste `GET` e `HEAD` con intestazioni di intervallo e numero di parte. Selezionando questa opzione confermi che la funzione Lambda è in grado di riconoscere ed elaborare queste richieste. Per ulteriori informazioni sulle intestazioni di intervalli e numeri di parte, consulta [Utilizzo delle intestazioni Range e partNumber](range-get-olap.md).

1. (Facoltativo) In **Parametri di richiesta** seleziona **Abilita** o **Disabilita** per aggiungere il monitoraggio Amazon S3 al punto di accesso Lambda per oggetti. Le metriche delle richieste vengono fatturate alla tariffa standard di Amazon CloudWatch.

1. (Facoltativo) In **Object Lambda Access Point policy** (Policy punto di accesso Object Lambda), imposta una policy delle risorse. Le policy delle risorse concedono le autorizzazioni per il punto di accesso Lambda per oggetti specificato e possono controllare l'utilizzo del punto di accesso per risorsa, utente o altre condizioni. Per ulteriori informazioni sulle policy delle risorse per i punti di accesso Object Lambda, consulta [Configurazione delle policy IAM per i punti di accesso Lambda per oggetti](olap-policies.md).

1. In **Block Public Access settings for this Object Lambda Access Point** (Impostazioni blocco accesso pubblico per questo punto di accesso Object Lambda), seleziona le impostazioni di Blocco dell'accesso pubblico Amazon S3 da applicare al punto di accesso. Tutte le impostazioni di blocco dell'accesso pubblico sono abilitate per impostazione predefinita per i nuovi punti di accesso Object Lambda. È consigliabile non modificare questa impostazione predefinita. Amazon S3 attualmente non supporta la modifica delle impostazioni di blocco dell'accesso pubblico dei punti di accesso dopo la creazione del punto di accesso Object Lambda.

   Per ulteriori informazioni sull'utilizzo del blocco dell'accesso pubblico in Amazon S3, consulta [Gestione dell’accesso pubblico ai punti di accesso per bucket per uso generico](access-points-bpa-settings.md).

1. Seleziona **Create Object Lambda Access Point** (Crea punto di accesso Object Lambda).

### Utilizzando il AWS CLI
<a name="olap-create-cli"></a>

**Per creare un punto di accesso Object Lambda utilizzando un modello AWS CloudFormation**
**Nota**  
Per utilizzare i seguenti comandi, sostituisci `user input placeholders` con le tue specifiche informazioni.

1. Scarica il pacchetto di distribuzione delle AWS Lambda funzioni `s3objectlambda_deployment_package.zip` nella configurazione predefinita di [S3 Object Lambda](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration).

1. Esegui il seguente comando `put-object` per caricare il pacchetto in un bucket Amazon S3.

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

1. Scarica il AWS CloudFormation modello nella configurazione `s3objectlambda_defaultconfig.yaml` predefinita di [S3 Object Lambda](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration).

1. Esegui il seguente comando `deploy` per implementare il modello nell' Account AWS in uso.

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

Puoi configurare questo AWS CloudFormation modello per richiamare le operazioni `GET` Lambda `HEAD` `LIST` e API. Per ulteriori informazioni sulla modifica della configurazione predefinita del modello, consulta [Automatizza la configurazione di S3 Object Lambda con un modello CloudFormation](olap-using-cfn-template.md).<a name="olap-create-cli-specific"></a>

**Per creare un Object Lambda Access Point utilizzando il AWS CLI**
**Nota**  
Per utilizzare i seguenti comandi, sostituisci `user input placeholders` con le tue specifiche informazioni.

Nell'esempio seguente viene creato un punto di accesso Lambda per oggetti denominato *`my-object-lambda-ap`* per il bucket *`amzn-s3-demo-bucket1`* nell'account *`111122223333`*. L'esempio presuppone che sia già stato creato un punto di accesso standard denominato *`example-ap`*. Per informazioni sulla creazione di un punto di accesso standard, consulta la sezione [Creazione di un access point](creating-access-points.md).

Questo esempio utilizza la funzione AWS predefinita. `decompress` Per ulteriori informazioni sulle funzioni incorporate, consulta [Utilizzo delle AWS funzioni Lambda integrate](olap-examples.md).

1. Creare un bucket. In questo esempio verrà utilizzato *`amzn-s3-demo-bucket1`*. Per ulteriori informazioni sulla creazione dei bucket, consulta la sezione [Creazione di un bucket per uso generico](create-bucket-overview.md).

1. Creare un punto di accesso standard e collegarlo al bucket. In questo esempio verrà utilizzato *`example-ap`*. Per informazioni sulla creazione di punti di accesso standard, consulta la sezione [Creazione di un access point](creating-access-points.md).

1. Esegui una delle seguenti operazioni: 
   + Crea una funzione Lambda nel tuo account da utilizzare per trasformare l'oggetto Amazon S3. Per ulteriori informazioni sulla creazione delle funzioni Lambda, consulta [Scrittura di funzioni Lambda per i punti di accesso Lambda per oggetti S3](olap-writing-lambda.md). Per utilizzare la funzione personalizzata con AWS CLI, consulta [Using Lambda with the AWS CLI](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-awscli.html) nella *AWS Lambda Developer* Guide.
   + Usa una funzione AWS Lambda predefinita. Per ulteriori informazioni sulle funzioni incorporate, consulta [Utilizzo delle AWS funzioni Lambda integrate](olap-examples.md).

1. Crea un file di configurazione JSON denominato `my-olap-configuration.json`. In questa configurazione, fornisci il punto di accesso di supporto e il nome della risorsa Amazon (ARN) per la funzione Lambda creata nei passaggi precedenti o l'ARN per la funzione predefinita che stai utilizzando.  
**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. Esegui il comando `create-access-point-for-object-lambda` per creare il punto di accesso Lambda per oggetti.

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

1. (Facoltativo) Crea un file di policy JSON denominato `my-olap-policy.json`.

   L'aggiunta di una policy delle risorse per il punto di accesso Object Lambda può controllare l'utilizzo del punto di accesso per risorsa, utente o altre condizioni. Questa policy delle risorse concede l'autorizzazione `GetObject` per l'account *`444455556666`* al punto di accesso Lambda per oggetti specificato.  
**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. (Facoltativo) Esegui il comando `put-access-point-policy-for-object-lambda` per impostare la policy delle risorse.

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

1. (Facoltativo) Specifica un payload.

   Un payload è un file JSON opzionale che puoi fornire alla tua AWS Lambda funzione come input. Puoi configurare payload con parametri diversi per diversi punti di accesso Lambda per oggetti che invocano la stessa funzione Lambda, estendendo così la flessibilità della funzione stessa.

   La seguente configurazione del punto di accesso Lambda per oggetti mostra un payload con due parametri.

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

   La seguente configurazione del punto di accesso Lambda per oggetti mostra un payload con un parametro e con `GetObject-Range`, `GetObject-PartNumber`, `HeadObject-Range` e `HeadObject-PartNumber` abilitati.

   ```
   {
       "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\"}"
               }
           }
       }]
   }
   ```
**Importante**  
Quando utilizzi i punti di accesso Lambda per oggetti, assicurati che il payload non contenga informazioni riservate.

### Utilizzo della AWS CloudFormation console e del modello
<a name="olap-create-cfn-console"></a>

È possibile creare un punto di accesso Lambda per oggetti utilizzando la configurazione predefinita fornita da Amazon S3. Puoi scaricare un AWS CloudFormation modello e il codice sorgente della funzione Lambda dal [GitHub repository](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration) e distribuire queste risorse per configurare un Object Lambda Access Point funzionale.

Per informazioni sulla modifica della configurazione predefinita del AWS CloudFormation modello, consulta. [Automatizza la configurazione di S3 Object Lambda con un modello CloudFormation](olap-using-cfn-template.md)

Per informazioni sulla configurazione degli access point Object Lambda CloudFormation utilizzando senza il modello, [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)consultate la Guida per *AWS CloudFormation l'*utente.

**Per caricare il pacchetto di implementazione della funzione Lambda**

1. Scarica il pacchetto di distribuzione delle AWS Lambda funzioni `s3objectlambda_deployment_package.zip` nella configurazione predefinita di [S3 Object Lambda](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration).

1. Carica il pacchetto in un bucket Amazon S3

**Per creare un punto di accesso Object Lambda utilizzando la console AWS CloudFormation**

1. Scarica il AWS CloudFormation modello nella configurazione `s3objectlambda_defaultconfig.yaml` predefinita di [S3 Object Lambda](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration).

1. [Accedi alla console di AWS gestione e apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com /cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Esegui una delle seguenti operazioni: 
   + **Se non l'hai mai usato AWS CloudFormation prima, nella AWS CloudFormation home page, scegli Crea stack.**
   + Se l'hai AWS CloudFormation già usato, nel riquadro di navigazione a sinistra, scegli **Stacks**. Scegli **Create stack** (Crea stack), quindi **With new resources (standard)** Con nuove risorse (standard).

1. Per **Prerequisito - Prepara modello**, scegliere **Il modello è pronto**.

1. In **Specify template** (Specifica modello), scegli **Upload a template file** (Carica un file modello), quindi carica `s3objectlambda_defaultconfig.yaml`.

1. Scegli **Next (Successivo)**.

1. Nella pagina **Specifica dettagli della pila**, immetti un nome per la pila.

1. Nella sezione **Parameters** (Parametri), specifica i seguenti parametri definiti nel modello dello stack:

   1. Per **CreateNewSupportingAccessPoint**, esegui una delle seguenti operazioni: 
      + Se disponi già di un punto di accesso di supporto per il bucket S3 in cui hai caricato il modello, scegli **false**.
      + Se intendi creare un nuovo punto di accesso per questo bucket, scegli **true**. 

   1. Infatti **EnableCloudWatchMonitoring**, scegli **true** o **false**, a seconda che tu voglia abilitare i parametri e gli allarmi delle CloudWatch richieste Amazon. 

   1. (Facoltativo) Per **LambdaFunctionPayload**, aggiungi il testo JSON che desideri fornire alla funzione Lambda come input. Puoi configurare payload con parametri diversi per diversi punti di accesso Lambda per oggetti che invocano la stessa funzione Lambda, estendendo così la flessibilità della funzione stessa.
**Importante**  
Quando utilizzi i punti di accesso Lambda per oggetti, assicurati che il payload non contenga informazioni riservate.

   1. Per **LambdaFunctionRuntime**, inserisci il tuo runtime preferito per la funzione Lambda. Le scelte disponibili sono `nodejs14.x`, `python3.9`, `java11`.

   1. Per **LambdaFunctionS3 BucketName**, inserisci il nome del bucket Amazon S3 in cui hai caricato il pacchetto di distribuzione.

   1. Per **LambdaFunctionS3Key, inserisci la chiave** oggetto Amazon S3 in cui hai caricato il pacchetto di distribuzione.

   1. Per **LambdaFunctionS3 ObjectVersion**, inserisci la versione dell'oggetto Amazon S3 in cui hai caricato il pacchetto di distribuzione.

   1. Per **ObjectLambdaAccessPointName**, inserisci un nome per il tuo Object Lambda Access Point.

   1. Per **S3 BucketName**, inserisci il nome del bucket Amazon S3 che verrà associato al tuo access point Object Lambda.

   1. Per **SupportingAccessPointName**, inserisci il nome del tuo access point di supporto.
**Nota**  
Questo è un punto di accesso associato al bucket Amazon S3 scelto nel passaggio precedente. **Se non disponi di punti di accesso associati al tuo bucket Amazon S3, puoi configurare il modello in modo che ne crei uno per te scegliendo true for. **CreateNewSupportingAccessPoint****

1. Scegli **Next (Successivo)**.

1. Nella pagina **Configure stack options (Configura opzioni pila)**, scegliere **Next (Successivo)**.

   Per ulteriori informazioni sulle impostazioni facoltative in questa pagina, consulta la sezione [Impostazione delle opzioni dello stack AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-add-tags.html) nella *Guida per l'utente di AWS CloudFormation *.

1. Nella pagina **Revisione**, scegliere **Crea pila**.

### Usando il AWS Cloud Development Kit (AWS CDK)
<a name="olap-create-cdk"></a>

*Per ulteriori informazioni sulla configurazione degli access point Object Lambda utilizzando AWS CDK, [`AWS::S3ObjectLambda`vedete Construct](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-s3objectlambda-readme.html) Library nell'AWS Cloud Development Kit (AWS CDK) API Reference.*

# Automatizza la configurazione di S3 Object Lambda con un modello CloudFormation
<a name="olap-using-cfn-template"></a>

**Nota**  
A partire dal 7 novembre 2025, S3 Object Lambda è disponibile solo per i clienti esistenti che attualmente utilizzano il servizio e per alcuni AWS partner Partner Network (APN). Per funzionalità simili a Lambda per oggetti S3, consulta [Modifica della disponibilità di Lambda per oggetti Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Puoi utilizzare un AWS CloudFormation modello per creare rapidamente un punto di accesso Amazon S3 Object Lambda. Il CloudFormation modello crea automaticamente le risorse pertinenti, configura i ruoli AWS Identity and Access Management (IAM) e imposta una AWS Lambda funzione che gestisce automaticamente le richieste tramite l'access point Object Lambda. Con il CloudFormation modello, puoi implementare le migliori pratiche, migliorare il tuo livello di sicurezza e ridurre gli errori causati dai processi manuali.

Questo [GitHub repository](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration) contiene il CloudFormation modello e il codice sorgente della funzione Lambda. Per istruzioni su come utilizzare il modello, consulta [Creazione di punti di accesso Object Lambda](olap-create.md).

La funzione Lambda fornita nel modello non esegue alcuna trasformazione. Restituisce invece gli oggetti così come sono dall’origine dati sottostante. È possibile clonare la funzione e aggiungere il proprio codice di trasformazione per modificare ed elaborare i dati man mano che vengono restituiti ad un'applicazione. Per ulteriori informazioni sulla modifica della funzione, consulta [Modifica della funzione Lambda](#modifying-lambda-function) e [Scrittura di funzioni Lambda per i punti di accesso Lambda per oggetti S3](olap-writing-lambda.md). 

## Modificare il modello
<a name="modifying-cfn-template"></a>

**Creazione di un nuovo punto di accesso di supporto**  
Lambda per oggetti S3 utilizza due punti di accesso, un punto di accesso Lambda per oggetti e un punto di accesso S3 standard, denominato *punto di accesso di supporto*. Quando effettui una richiesta a un punto di accesso Lambda per oggetti, S3 invoca Lambda per tuo conto o delega la richiesta al punto di accesso di supporto, a seconda della configurazione di Lambda per oggetti S3. È possibile creare un nuovo punto di accesso di supporto passando il seguente parametro come parte del comando `aws cloudformation deploy` durante l'implementazione del modello.

```
CreateNewSupportingAccessPoint=true
```

**Configurazione di un payload di funzione**  
È possibile configurare un payload per fornire dati supplementari alla funzione Lambda passando il seguente parametro come parte del comando `aws cloudformation deploy` al momento dell'implementazione del modello.

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

**Abilitare il CloudWatch monitoraggio di Amazon**  
Puoi abilitare il CloudWatch monitoraggio passando il seguente parametro come parte del `aws cloudformation deploy` comando durante la distribuzione del modello.

```
EnableCloudWatchMonitoring=true
```

Questo parametro abilita i parametri delle richieste Object Lambda Access Point per Amazon S3 e crea CloudWatch due allarmi per monitorare gli errori lato client e lato server.

**Nota**  
 CloudWatch L'utilizzo di Amazon comporterà costi aggiuntivi. Per ulteriori informazioni sulle metriche delle richieste Amazon S3, consulta la sezione [Monitoraggio e registrazione degli access point](access-points-monitoring-logging.md).  
Per i dettagli sui prezzi, vedere [Prezzi di CloudWatch ](https://aws.amazon.com/cloudwatch/pricing/). 

**Configurazione della simultaneità fornita**  
Per ridurre la latenza, è possibile configurare la simultaneità con provisioning per la funzione Lambda che supporta il punto di accesso Lambda per oggetti modificando il modello per includere le seguenti righe in `Resources`.

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

**Nota**  
Saranno applicati costi aggiuntivi la simultaneità con provisioning. Per ulteriori informazioni sulla simultaneità con provisioning, consulta [Gestione della simultaneità con provisioning di Lambda](https://docs.aws.amazon.com/lambda/latest/dg/provisioned-concurrency.html) nella *Guida per gli sviluppatori di AWS Lambda *.  
Per i dettagli sui prezzi, vedere [Prezzi di AWS Lambda](https://aws.amazon.com/lambda/pricing/).

## Modifica della funzione Lambda
<a name="modifying-lambda-function"></a>

**Modifica dei valori di intestazione per una richiesta `GetObject`**  
Per impostazione predefinita, la funzione Lambda inoltra tutte le intestazioni, eccetto `Content-Length` ed `ETag`, dalla richiesta URL prefirmata al client `GetObject`. In base al codice di trasformazione nella funzione Lambda, puoi scegliere di inviare nuovi valori di intestazione al client `GetObject`.

È possibile aggiornare la funzione Lambda per inviare nuovi valori di intestazione passandoli nell'operazione API `WriteGetObjectResponse`.

Ad esempio, se la funzione Lambda traduce il testo negli oggetti Amazon S3 in una lingua diversa, puoi passare un nuovo valore nell'intestazione `Content-Language`. Puoi fare ciò modificando la funzione `writeResponse` come descritto di seguito.

```
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();
}
```

Per un elenco completo delle intestazioni supportate, consulta [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) nella *Documentazione di riferimento delle API di Amazon Simple Storage Service*.

**Restituzione di intestazioni di metadati**  
È possibile aggiornare la funzione Lambda per inviare nuovi valori di intestazione passandoli nella richiesta dell'operazione 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();
}
```

**Restituzione di un nuovo codice di stato**  
È possibile restituire un codice di stato personalizzato al client `GetObject` passandolo nella richiesta dell'operazione 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();
}
```

Per un elenco completo degli stati supportati, consulta [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) nella *Documentazione di riferimento delle API di Amazon Simple Storage Service*.

**Applicazione dei `Range` e `partNumber` all'oggetto di origine**  
Per impostazione predefinita, l'Object Lambda Access Point creato dal CloudFormation modello può gestire i parametri `Range` and`partNumber`. La funzione Lambda applica l'intervallo o il numero di parte richiesto all'oggetto trasformato. A tale scopo, è necessario scaricare l'intero oggetto ed eseguire la trasformazione. In alcuni casi, gli intervalli di oggetti trasformati potrebbero essere associati esattamente agli intervalli di oggetti fonte. Ciò significa che la richiesta dell'intervallo di byte A-B sull'oggetto di origine e l'esecuzione della trasformazione potrebbero produrre lo stesso risultato della richiesta dell'intero oggetto, dell'esecuzione della trasformazione e della restituzione dell'intervallo di byte A-B sull'oggetto trasformato.

In questi casi, è possibile modificare l'implementazione della funzione Lambda per applicare l'intervallo o il numero di parte direttamente all'oggetto fonte. Questo approccio riduce la latenza generale della funzione e la memoria richieste. Per ulteriori informazioni, consulta [Utilizzo delle intestazioni Range e partNumber](range-get-olap.md).

**Disabilitazione della gestione di `Range` e`partNumber`**  
Per impostazione predefinita, l'Object Lambda Access Point creato dal CloudFormation modello può gestire i parametri `Range` and`partNumber`. Se questo comportamento non è necessario, è possibile disabilitarlo rimuovendo le seguenti righe dal modello:

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

**Trasformazione di oggetti di grandi dimensioni**  
Per impostazione predefinita, la funzione Lambda elabora l'intero oggetto in memoria prima di poter avviare lo streaming della risposta a S3 Object Lambda. È possibile modificare la funzione per effettuare lo streaming della risposta mentre esegue la trasformazione. Ciò aiuta a ridurre la latenza della trasformazione e la dimensione della memoria della funzione Lambda. Per un'implementazione esemplificativa, consulta [Streaming esemplificativo del contenuto compresso](olap-writing-lambda.md#olap-getobject-response).

# Utilizzo dei punti di accesso Amazon S3 Object Lambda
<a name="olap-use"></a>

**Nota**  
A partire dal 7 novembre 2025, S3 Object Lambda è disponibile solo per i clienti esistenti che attualmente utilizzano il servizio e per alcuni AWS partner Partner Network (APN). Per funzionalità simili a Lambda per oggetti S3, consulta [Modifica della disponibilità di Lambda per oggetti Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Le richieste tramite gli punti di accesso Lambda per oggetti Amazon S3 si effettuano esattamente come le richieste tramite altri punti di accesso. Per ulteriori informazioni su come effettuare le richieste tramite un punto di accesso, consulta [Utilizzo dei punti di accesso Amazon S3 per bucket per uso generico](using-access-points.md). Puoi effettuare richieste tramite i punti di accesso Object Lambda utilizzando la console Amazon S3 AWS Command Line Interface ,AWS CLI() AWS SDKs o l'API REST di Amazon S3.

**Importante**  
Gli Amazon Resource Names (ARNs) per gli access point Object Lambda utilizzano un nome di servizio di. `s3-object-lambda` Pertanto, Object Lambda Access Point ARNs inizia con`arn:aws::s3-object-lambda`, invece di`arn:aws::s3`, che viene utilizzato con altri punti di accesso.

## Come trovare l'ARN per un punto di accesso Lambda per oggetti
<a name="olap-find-arn"></a>

Per utilizzare un punto di accesso Object Lambda con AWS CLI o AWS SDKs, è necessario conoscere l'Amazon Resource Name (ARN) del punto di accesso Object Lambda. Gli esempi seguenti mostrano come trovare l'ARN di un punto di accesso Lambda per oggetti utilizzando la console Amazon S3 o la AWS CLI. 

### Utilizzo della console S3
<a name="olap-use-arn-console"></a>

**Per trovare l'ARN per un punto di accesso Lambda per oggetti**

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel riquadro di navigazione sinistro, scegli **Punti di accesso Lambda dell'oggetto**.

1. Seleziona il pulsante di opzione accanto al punto di accesso Lambda per oggetti di cui vuoi copiare l'ARN.

1. Scegli **Copy ARN** (Copia ARN).

### Usando il AWS CLI
<a name="olap-use-arn-cli"></a>

**Per trovare l'ARN per il tuo punto di accesso Object Lambda utilizzando il AWS CLI**

1. Per recuperare un elenco degli punti di accesso Lambda per oggetti associati al tuo Account AWS, esegui il comando riportato di seguito. Prima di eseguire il comando, sostituisci l'ID dell'account *`111122223333`* con il tuo Account AWS ID.

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

1. Esamina l'output del comando per trovare l'ARN del punto di accesso Lambda per oggetti che desideri utilizzare. L'output del comando precedente dovrebbe essere simile all'esempio seguente.

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

## Come utilizzare un alias in stile bucket per il punto di accesso Lambda per oggetti del bucket S3
<a name="ol-access-points-alias"></a>

Quando crei un punto di accesso Lambda per oggetti, Amazon S3 genera automaticamente un alias univoco per il tuo punto di accesso Lambda per oggetti. Puoi utilizzare questo alias del punto di accesso al posto di un nome del bucket Amazon S3 o del nome della risorsa Amazon (ARN) del punto di accesso Lambda per oggetti in una richiesta per qualsiasi operazione del piano dati del punto di accesso. Per un elenco di queste operazioni, consulta [Compatibilità dei punti di accesso](access-points-service-api-support.md).

Un nome alias del punto di accesso Lambda per oggetti viene creato nello stesso spazio dei nomi di un bucket Amazon S3. Questo nome alias viene generato automaticamente e non può essere modificato. Per un punto di accesso Lambda per oggetti esistente, l'alias viene assegnato automaticamente. Un nome alias del punto di accesso Lambda per oggetti soddisfa tutti i requisiti di un nome bucket Amazon S3 valido e comprende le seguenti parti:

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

**Nota**  
Il suffisso `--ol-s3` è riservato ai nomi alias dei punti di accesso Lambda per oggetti e non può essere utilizzato per i nomi dei bucket o dei punti di accesso Lambda per oggetti. Per ulteriori informazioni sulle regole di denominazione dei bucket Amazon S3, consulta [Regole di denominazione dei bucket per uso generico](bucketnamingrules.md).

Negli esempi seguenti viene illustrato l'ARN e l'alias per un punto di accesso Lambda per oggetti denominato `my-object-lambda-access-point`.
+ **ARN**: `arn:aws:s3-object-lambda:region:account-id:accesspoint/my-object-lambda-access-point`
+ **Alias del punto di accesso Lambda per oggetti**: `my-object-lambda-acc-1a4n8yjrb3kda96f67zwrwiiuse1a--ol-s3`

Quando si utilizza un punto di accesso Lambda per oggetti, è possibile utilizzare il nome alias del punto di accesso Lambda per oggetti senza la necessità di modifiche estese al codice.

Quando si elimina un punto di accesso Lambda per oggetti, il nome alias del punto di accesso Lambda per oggetti diventa inattivo e non viene allocato.

### Come trovare l'alias per il punto di accesso Lambda per oggetti
<a name="olap-find-alias"></a>

#### Utilizzo della console S3
<a name="olap-use-alias-console"></a>

**Per trovare l'alias per il tuo punto di accesso Lambda per oggetti utilizzando la console**

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel riquadro di navigazione sinistro, scegli **Punti di accesso Lambda dell'oggetto**.

1. Per il punto di accesso Lambda per oggetti che desideri utilizzare, copia il valore dell'**alias del punto di accesso Lambda per oggetti**.

#### Usando il AWS CLI
<a name="olap-use-alias-cli"></a>

Quando crei un punto di accesso Lambda per oggetti, Amazon S3 genera automaticamente un nome alias del punto di accesso Lambda per oggetti, come mostrato nell'esempio seguente. Per eseguire questo comando, sostituisci `user input placeholders` con le informazioni appropriate. Per informazioni su come creare un punto di accesso Object Lambda utilizzando il AWS CLI, vedere. [Per creare un Object Lambda Access Point utilizzando il 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"
    }
}
```

Il nome alias del punto di accesso Lambda per oggetti generato ha due campi: 
+ Il campo `Value` è il valore dell'alias del punto di accesso Lambda per oggetti. 
+ Il campo `Status` è lo stato dell'alias del punto di accesso Lambda per oggetti. Se lo stato è `PROVISIONING`, Amazon S3 alloca l'alias del punto di accesso Lambda per oggetti, ma l'alias non è ancora pronto per l'uso. Se lo stato è `READY`, l'alias del punto di accesso Lambda per oggetti è stato allocato correttamente ed è pronto per l'uso.

Per ulteriori informazioni sul tipo di dati `ObjectLambdaAccessPointAlias` nella REST API, consulta [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPointForObjectLambda.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessPointForObjectLambda.html) e [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ObjectLambdaAccessPointAlias.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ObjectLambdaAccessPointAlias.html) nella *Documentazione di riferimento delle API di Amazon Simple Storage Service*.

### Come utilizzare l'alias del punto di accesso Lambda per oggetti
<a name="use-olap-alias"></a>

Puoi utilizzare l'alias del punto di accesso Lambda per oggetti al posto di un nome bucket Amazon S3 per le operazioni elencate in [Compatibilità dei punti di accesso](access-points-service-api-support.md).

L' AWS CLI esempio seguente del `get-bucket-location` comando utilizza l'alias del punto di accesso del bucket per restituire il valore in Regione AWS cui si trova il bucket. Per eseguire questo comando, sostituisci `user input placeholders` con le informazioni appropriate.

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

Se l'alias del punto di accesso Lambda per oggetti in una richiesta non è valido, viene restituito il codice di errore `InvalidAccessPointAliasError`. Per ulteriori informazioni su `InvalidAccessPointAliasError` consulta [Elenco dei codici di errore](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ErrorCodeList) nella *Documentazione di riferimento delle API di Amazon Simple Storage Service*.

Le limitazioni di un alias del punto di accesso Lambda per oggetti sono le stesse di un alias del punto di accesso. Per ulteriori informazioni sulle limitazioni di un alias del punto di accesso, consulta [Limitazioni degli alias del punto di accesso](access-points-naming.md#use-ap-alias-limitations).

# Considerazioni sulla sicurezza per i punti di accesso S3 Object Lambda
<a name="olap-security"></a>

**Nota**  
A partire dal 7 novembre 2025, S3 Object Lambda è disponibile solo per i clienti esistenti che attualmente utilizzano il servizio e per alcuni AWS partner Partner Network (APN). Per funzionalità simili a Lambda per oggetti S3, consulta [Modifica della disponibilità di Lambda per oggetti Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Con Amazon S3 Object Lambda, puoi eseguire trasformazioni personalizzate sui dati non appena escono da Amazon S3 utilizzando la scalabilità e la flessibilità di una piattaforma di elaborazione. AWS Lambda S3 e Lambda rimangono protetti per impostazione predefinita, ma per conservare questo livello di sicurezza è necessaria un'attenzione speciale da parte dell'autore della funzione Lambda. S3 Object Lambda richiede che tutti gli accessi siano effettuati da entità autenticate (nessun accesso anonimo) e su HTTPS.

Per ridurre i rischi per la sicurezza, è consigliabile: 
+ Definire l'ambito del ruolo di esecuzione della funzione Lambda in base a un set di autorizzazioni il più limitato possibile.
+ Se possibile, assicurati che la funzione Lambda acceda ad Amazon S3 tramite l'URL prefirmato fornito. 

## Configurazione delle policy IAM
<a name="olap-iam-policies"></a>

Gli access point S3 supportano policy relative alle risorse AWS Identity and Access Management (IAM) che consentono di controllare l'uso del punto di accesso in base alla risorsa, all'utente o ad altre condizioni. Per ulteriori informazioni, consulta [Configurazione delle policy IAM per i punti di accesso Lambda per oggetti](olap-policies.md).

## Funzionamento della crittografia
<a name="olap-encryption"></a>

Poiché gli access point Object Lambda utilizzano sia Amazon S3 che Amazon S3 AWS Lambda, esistono differenze nel comportamento di crittografia. Per ulteriori informazioni sul comportamento della crittografia predefinita di S3, consulta [Impostazione del comportamento predefinito della crittografia lato server per i bucket Amazon S3](bucket-encryption.md).
+ Quando si utilizza la crittografia lato server S3 con i punti di accesso Lambda per oggetti, l'oggetto viene decrittato prima di essere inviato a Lambda. Dopo l'invio a Lambda, l'oggetto viene elaborato in modo non crittografato (nel caso di una richiesta `GET` o `HEAD`).
+ Per evitare la registrazione della chiave di crittografia, S3 rifiuterà le richieste `GET` e `HEAD` relative agli oggetti crittografati utilizzando la crittografia lato server con chiavi fornite dal cliente (SSE-C). Tuttavia, la funzione Lambda può ancora recuperare questi oggetti a condizione che abbia accesso alla chiave fornita dal client.
+ Quando utilizzi la crittografia lato client S3 con i punti di accesso Lambda per oggetti, assicurati che Lambda abbia accesso alla chiave di crittografia affinché possa decrittare ed eseguire nuovamente la crittografia dell'oggetto.

## Sicurezza dei punti di accesso
<a name="olap-access-points-security"></a>

Lambda per oggetti S3 utilizza due punti di accesso, un punto di accesso Lambda per oggetti e un punto di accesso S3 standard, denominato *punto di accesso di supporto*. Quando effettui una richiesta a un punto di accesso Lambda per oggetti, S3 richiama Lambda per tuo conto o delega la richiesta al punto di accesso di supporto, a seconda della configurazione di Lambda per oggetti S3. Quando Lambda viene richiamato per una richiesta, S3 genera un URL prefirmato per l'oggetto per tuo conto tramite il punto di accesso di supporto. Quando viene richiamata, la funzione Lambda riceverà questo URL come input.

È possibile impostare la funzione Lambda in modo che utilizzi questo URL prefirmato per recuperare l'oggetto originale invece di richiamare direttamente S3. Questo modello consente di applicare limiti di sicurezza migliori agli oggetti. È possibile limitare l'accesso diretto agli oggetti tramite bucket S3 o punti di accesso S3 a un set limitato di ruoli o utenti IAM. Questo approccio protegge anche le funzioni Lambda dall'essere soggette al [problema del "confused deputy"](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), in cui una funzione configurata erroneamente con autorizzazioni diverse rispetto all'invoker potrebbe consentire o negare l'accesso agli oggetti quando non dovrebbe.

## Accesso pubblico ai punti di accesso Object Lambda
<a name="olap-public-access"></a>

S3 Object Lambda non consente l'accesso anonimo o pubblico perché Amazon S3 deve autorizzare l'identità per completare qualsiasi richiesta di S3 Object Lambda. Quando si richiamano le richieste tramite un punto di accesso Lambda per oggetti, è necessaria l'autorizzazione `lambda:InvokeFunction` per la funzione Lambda configurata. Allo stesso modo, quando si richiamano altre operazioni di API tramite un punto di accesso Lambda per oggetti, è necessario disporre delle autorizzazioni `s3:*`. 

Senza queste autorizzazioni, le richieste per richiamare Lambda o delegare a S3 avranno esito negativo e verrà restituito un errore HTTP 403 Accesso negato. Tutti gli accessi devono essere effettuati da principali autenticati. Se hai bisogno di un accesso pubblico, come possibile alternativa può essere utilizzato Lambda@Edge. Per ulteriori informazioni, consulta [Customizing at the edge with Lambda](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html) @Edge nella * CloudFront Amazon* Developer Guide.

## Indirizzi IP dei punti di accesso Lambda per oggetti
<a name="olap-ips"></a>

Le sottoreti `describe-managed-prefix-lists` supportano gli endpoint VPC (Virtual Private Cloud) del gateway e sono correlate alla tabella di instradamento degli endpoint VPC. Poiché il punto di accesso per le espressioni Lambda dell'oggetto non supporta il VPC del gateway, i relativi intervalli IP mancano. Gli intervalli mancanti appartengono ad Amazon S3, ma non sono supportati dagli endpoint VPC del gateway. Per ulteriori informazioni [DescribeManagedPrefixLists](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeManagedPrefixLists.html)in merito`describe-managed-prefix-lists`, consulta il *riferimento alle API di Amazon EC2* e gli [intervalli di indirizzi AWS IP](https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html) nel. *Riferimenti generali di AWS*

# Configurazione delle policy IAM per i punti di accesso Lambda per oggetti
<a name="olap-policies"></a>

**Nota**  
A partire dal 7 novembre 2025, S3 Object Lambda è disponibile solo per i clienti esistenti che attualmente utilizzano il servizio e per alcuni AWS partner Partner Network (APN). Per funzionalità simili a Lambda per oggetti S3, consulta [Modifica della disponibilità di Lambda per oggetti Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

I punti di accesso Amazon S3 supportano le policy delle risorse AWS Identity and Access Management (IAM) che puoi utilizzare per controllare l'uso del punto di accesso in base alla risorsa, all'utente o ad altre condizioni. È possibile controllare l'accesso tramite una policy di risorse opzionale sul punto di accesso Lambda per oggetti o una policy di risorse sul punto di accesso di supporto. Per step-by-step esempi, vedi [Tutorial: trasformazione dei dati per l'applicazione con S3 Object Lambda](tutorial-s3-object-lambda-uppercase.md) e[Tutorial: rilevamento e oscuramento dei dati PII con S3 Object Lambda e Amazon Comprehend](tutorial-s3-object-lambda-redact-pii.md). 

Per utilizzare i punti di accesso Lambda per oggetti, le seguenti quattro risorse devono disporre delle seguenti autorizzazioni:
+ L'identità IAM, ad esempio un utente o un ruolo. Per ulteriori informazioni sulle identità IAM e sulle best practice, consulta [Identità IAM (utenti, gruppi di utenti e ruoli)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) nella *Guida per l'utente di IAM*.
+ Il punto di accesso standard collegato a una fonte di dati sottostante come un bucket S3 o un volume Amazon FSx for OpenZFS. Quando utilizzi i punti di accesso Lambda per oggetti, questo punto di accesso standard è noto come *punto di accesso di supporto*.
+ Il punto di accesso Lambda per oggetti.
+  AWS Lambda La funzione.

**Importante**  
Prima di salvare la politica, assicurati di risolvere gli avvisi di sicurezza, gli errori, gli avvisi generali e i suggerimenti di. AWS Identity and Access Management Access Analyzer IAM Access Analyzer esegue controlli sulle policy per convalidare le policy rispetto alla [grammatica delle policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html) IAM e alle [best practice](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html). Questi controlli generano risultati e forniscono raccomandazioni attuabili per aiutarti a creare policy funzionali e conformi alle best practice di sicurezza.   
Per ulteriori informazioni sulla convalida delle policy tramite IAM Access Analyzer, consulta [Convalida delle policy di IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) nella *Guida per l'utente di IAM*. Per visualizzare un elenco delle avvertenze, degli errori e dei suggerimenti restituiti da IAM Access Analyzer, consulta il [Riferimento al controllo delle policy di IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html).

In questi esempi di policy si presuppone di disporre delle seguenti risorse:
+ Un bucket Amazon S3 con il seguente nome della risorsa Amazon (ARN): 

  `arn:aws:s3:::amzn-s3-demo-bucket1`
+ Un punto di accesso standard Amazon S3 su questo bucket con il seguente ARN: 

  `arn:aws:s3:us-east-1:111122223333:accesspoint/my-access-point`
+ Un punto di accesso Lambda per oggetti con il seguente ARN: 

  `arn:aws:s3-object-lambda:us-east-1:111122223333:accesspoint/my-object-lambda-ap`
+ Una AWS Lambda funzione con il seguente ARN: 

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

**Nota**  
Se si utilizza una funzione Lambda del proprio account, è necessario includere la versione specifica della funzione nell'istruzione della policy. Nel seguente ARN di esempio, la versione è indicata da *1*:  
`arn:aws:lambda:us-east-1:111122223333:function:MyObjectLambdaFunction:1`  
Lambda non supporta l'aggiunta di policy IAM alla versione `$LATEST`. Per ulteriori informazioni sulle versioni delle funzioni Lambda, consulta [Versioni delle funzioni Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) nella *Guida per gli sviluppatori di AWS Lambda *.

**Example : policy di bucket che delega il controllo degli accessi ai punti di accesso standard**  
Il seguente esempio di policy di bucket S3 delega il controllo degli accessi di un bucket ai relativi punti di accesso standard. Questa policy consente l'accesso completo a tutti i punti di accesso di proprietà dell'account del proprietario del bucket. Pertanto, tutto l'accesso a questo bucket è controllato dalle policy associate ai punti di accesso. Gli utenti possono eseguire la lettura dal bucket solo mediante un punto di accesso; ciò significa che le operazioni possono essere richiamate solo tramite i punti di accesso. Per ulteriori informazioni, consulta [Delegazione del controllo di accesso agli access point](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 - Policy IAM che concede a un utente le autorizzazioni necessarie per utilizzare un punto di accesso Lambda per oggetti**  
La seguente policy IAM concede a un utente le autorizzazioni per la funzione Lambda, il punto di accesso standard e il punto di accesso Lambda per oggetti.    
****  

```
{
  "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"
    }
  ]
}
```

## Abilitazione delle autorizzazioni per i ruoli di esecuzione Lambda
<a name="olap-execution-role"></a>

Quando vengono effettuate richieste `GET` a un punto di accesso Lambda per oggetti, la funzione Lambda deve essere autorizzata a inviare dati al punto di accesso Lambda per oggetti S3. Per fornire questa autorizzazione, abilita l'autorizzazione `s3-object-lambda:WriteGetObjectResponse` sul ruolo di esecuzione della funzione Lambda. Puoi creare un nuovo ruolo di esecuzione o aggiornare un ruolo esistente.

**Nota**  
La funzione richiede l'autorizzazione `s3-object-lambda:WriteGetObjectResponse` solo se stai effettuando una richiesta `GET`.

**Per creare un ruolo di esecuzione nella console IAM**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione a sinistra seleziona **Ruoli**. 

1. Scegli **Crea ruolo**.

1. In **Common use cases (Casi di utilizzo comuni)**, scegliere **Lambda**.

1. Scegli **Next (Successivo)**.

1. Nella pagina **Aggiungi autorizzazioni**, cerca la policy AWS gestita [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), quindi seleziona la casella di controllo accanto al nome della policy. 

   Questa politica dovrebbe contenere l'operazione `s3-object-lambda:WriteGetObjectResponse`.

1. Scegli **Next (Successivo)**.

1. Nella pagina **Name, review, and create** (Denomina, rivedi e crea), in **Role name** (Nome ruolo) immetti **s3-object-lambda-role**.

1. (Facoltativo) Aggiungi una descrizione e i tag per questo ruolo. 

1. Scegli **Crea ruolo**.

1. Applica il nuovo **s3-object-lambda-role** quale ruolo di esecuzione della funzione Lambda. Questa operazione può essere eseguita durante o dopo la creazione della funzione Lambda nella console Lambda.

Per ulteriori informazioni sui ruoli di esecuzione, consulta la sezione [Ruolo di esecuzione Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) nella *Guida per gli sviluppatori di AWS Lambda *.

## Utilizzo delle chiavi di contesto con i punti di accesso Lambda per oggetti
<a name="olap-keys"></a>

S3 Object Lambda valuterà le chiavi di contesto come `s3-object-lambda:TlsVersion` o `s3-object-lambda:AuthType` in base alla connessione o alla firma della richiesta. Tutte le altre chiavi di contesto, ad esempio `s3:prefix`, vengono valutate da Amazon S3. 

## Supporto CORS per Punto di accesso per le espressioni Lambda dell'oggetto
<a name="olap-cors"></a>

Quando Lambda per oggetti Amazon S3 riceve una richiesta da un browser o la richiesta include un'intestazione `Origin`, Lambda per oggetti Amazon S3 aggiunge sempre un campo di intestazione `"AllowedOrigins":"*"`.

Per ulteriori informazioni, consulta [Utilizzo della funzionalità Cross-Origin Resource Sharing (CORS)](cors.md).

# Scrittura di funzioni Lambda per i punti di accesso Lambda per oggetti S3
<a name="olap-writing-lambda"></a>

**Nota**  
A partire dal 7 novembre 2025, S3 Object Lambda è disponibile solo per i clienti esistenti che attualmente utilizzano il servizio e per alcuni AWS partner Partner Network (APN). Per funzionalità simili a Lambda per oggetti S3, consulta [Modifica della disponibilità di Lambda per oggetti Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Questa sezione descrive in dettaglio come scrivere AWS Lambda funzioni da utilizzare con gli access point Amazon S3 Object Lambda.

Per informazioni sulle end-to-end procedure complete per alcune attività di S3 Object Lambda, consulta quanto segue:
+ [Tutorial: trasformazione dei dati per l'applicazione con S3 Object Lambda](tutorial-s3-object-lambda-uppercase.md)
+ [Tutorial: rilevamento e oscuramento dei dati PII con S3 Object Lambda e Amazon Comprehend](tutorial-s3-object-lambda-redact-pii.md)
+ [Tutorial: utilizzo di Lambda per oggetti S3 per aggiungere filigrane alle immagini in modo dinamico man mano che vengono recuperate](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**
+ [

## Utilizzo di richieste `GetObject` in Lambda
](#olap-getobject-response)
+ [

## Utilizzo di richieste `HeadObject` in Lambda
](#olap-headobject)
+ [

## Utilizzo di richieste `ListObjects` in Lambda
](#olap-listobjects)
+ [

## Utilizzo di richieste `ListObjectsV2` in Lambda
](#olap-listobjectsv2)
+ [

# Formato e utilizzo del contesto degli eventi
](olap-event-context.md)
+ [

# Utilizzo delle intestazioni Range e partNumber
](range-get-olap.md)

## Utilizzo di richieste `GetObject` in Lambda
<a name="olap-getobject-response"></a>

Questa sezione presuppone che il punto di accesso Lambda per oggetti sia configurato per richiamare la funzione Lambda per `GetObject`. S3 Object Lambda include l'operazione API Amazon S3 `WriteGetObjectResponse`, che consente alla funzione Lambda di fornire dati personalizzati e intestazioni di risposta al chiamante `GetObject`. 

`WriteGetObjectResponse` offre un ampio controllo su codice di stato, intestazioni di risposta e corpo della risposta, in base ai requisiti di elaborazione. È possibile utilizzare `WriteGetObjectResponse` per rispondere con l'intero oggetto trasformato, con parti dell'oggetto trasformato o con altre risposte in base al contesto dell'applicazione. Nella sezione seguente sono illustrati esempi univoci di utilizzo dell'operazione API `WriteGetObjectResponse`.
+ **Esempio 1:** risposta con un codice di stato HTTP 403 (Forbidden) (Accesso negato) 
+ **Esempio 2:** Rispondere con un'immagine trasformata
+ **Esempio 3:** Streaming di contenuto compresso

**Esempio 1: risposta con un codice di stato HTTP 403 (Forbidden) (Accesso negato)**

È possibile utilizzare `WriteGetObjectResponse` per rispondere con il codice di stato HTTP 403 (Non consentito) in base al contenuto dell'oggetto.

------
#### [ 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 };
}
```

------

**Esempio 2:** Rispondere con un'immagine trasformata

Durante la trasformazione dell'immagine, è possibile che siano necessari tutti i byte dell'oggetto di fonte prima di poter iniziare a elaborarli. In questo caso, la tua richiesta `WriteGetObjectResponse` restituisce l'intero oggetto all'applicazione richiedente in una sola chiamata.

------
#### [ 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 };
}
```

------

**Esempio 3:** Streaming di contenuto compresso

Durante la compressione degli oggetti, i dati compressi vengono prodotti in modo incrementale. Di conseguenza, puoi utilizzare la richiesta `WriteGetObjectResponse` per restituire i dati compressi non appena sono pronti. Come mostrato in questo esempio, non è necessario conoscere la lunghezza della trasformazione completata.

------
#### [ 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 };
}
```

------

**Nota**  
Sebbene S3 Object Lambda consente fino a 60 secondi per inviare una risposta completa al chiamante tramite la richiesta `WriteGetObjectResponse`, la quantità effettiva di tempo disponibile potrebbe essere inferiore. Ad esempio, il timeout della funzione Lambda potrebbe essere inferiore a 60 secondi. In altri casi, il chiamante potrebbe avere timeout più rigorosi. 

Affinché il chiamante originale riceva una risposta diversa dal codice di stato HTTP 500 (Internal Server Error) (Errore interno del server), la chiamata `WriteGetObjectResponse` deve essere completata. Se la funzione Lambda restituisce un risultato, eccezionalmente o in altro modo, prima che l'operazione API `WriteGetObjectResponse` venga richiamata, il chiamante originale riceverà una risposta 500 (Internal Server Error) (Errore interno del server). Le eccezioni generate durante il tempo necessario per completare la risposta comportano risposte troncate al chiamante. Se la funzione Lambda riceve una risposta con codice di stato HTTP 200 (OK) dalla chiamata API `WriteGetObjectResponse`, il chiamante originale ha inviato la richiesta completa. La risposta della funzione Lambda, indipendentemente dal fatto che un'eccezione sia generata o meno, viene ignorata da S3 Object Lambda.

Quando viene richiamata l'operazione API `WriteGetObjectResponse`, Amazon S3 richiede il token dell'instradamento e della richiesta dal contesto dell'evento. Per ulteriori informazioni, consulta [Formato e utilizzo del contesto degli eventi](olap-event-context.md).

I parametri relativi ai token dell'instradamento e della richiesta sono necessari per collegare la risposta `WriteGetObjectResult` al chiamante originale. Sebbene sia sempre opportuno riprovare le risposte 500 (Internal Server Error) (Errore interno del server), è necessario considerare che il token della richiesta è un token monouso e i successivi tentativi di utilizzo possono comportare risposte con codice di stato 400 (Bad Request) (Richiesta non valida). Anche se la chiamata a `WriteGetObjectResponse` con i token dell'instradamento e della richiesta non ha bisogno di essere effettuata dalla funzione Lambda richiamata, deve essere effettuata da un'identità nello stesso account. La chiamata deve anche essere completata prima che la funzione Lambda finisca l'esecuzione.

## Utilizzo di richieste `HeadObject` in Lambda
<a name="olap-headobject"></a>

Questa sezione presuppone che il punto di accesso Lambda per oggetti sia configurato per richiamare la funzione Lambda per `HeadObject`. Lambda riceverà un payload JSON contenente una chiave chiamata `headObjectContext`. All'interno del contesto, esiste un'unica proprietà chiamata `inputS3Url`, che è un URL prefirmato per il punto di accesso di supporto per `HeadObject`.

L'URL prefirmato includerà le seguenti proprietà, se specificate: 
+ `versionId` (nei parametri della query)
+ `requestPayer` (nell'intestazione `x-amz-request-payer`)
+ `expectedBucketOwner` (nell'intestazione `x-amz-expected-bucket-owner`)

Le altre proprietà non saranno prefirmate e quindi non saranno incluse. Le opzioni non firmate inviate come intestazioni possono essere aggiunte manualmente alla richiesta quando si richiama l'URL prefirmato che si trova nelle intestazioni `userRequest`. Le opzioni di crittografia lato server non sono supportate per `HeadObject`.

Per i parametri URI della sintassi della richiesta, consulta [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html) nella *Documentazione di riferimento delle API di Amazon Simple Storage Service*.

Il seguente esempio mostra un payload di input Lambda JSON per `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"
}
```

La funzione Lambda dovrebbe restituire un oggetto JSON contenente le intestazioni e i valori che verranno restituiti per la chiamata `HeadObject`.

Il seguente esempio illustra la struttura dell'oggetto JSON della risposta Lambda per `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'esempio seguente mostra come utilizzare l'URL prefirmato per compilare la risposta modificando i valori dell'intestazione secondo necessità prima di restituire l'oggetto 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     
        }
```

------

## Utilizzo di richieste `ListObjects` in Lambda
<a name="olap-listobjects"></a>

Questa sezione presuppone che il punto di accesso Lambda per oggetti sia configurato per richiamare la funzione Lambda per `ListObjects`. Lambda riceverà il payload JSON con un nuovo oggetto denominato `listObjectsContext`. `listObjectsContext` contiene un'unica proprietà `inputS3Url`, che è un URL prefirmato per il punto di accesso di supporto per `ListObjects`.

A differenza di `GetObject` e `HeadObject`, l'URL prefirmato includerà le seguenti proprietà, se specificate:
+ Tutti i parametri della query
+ `requestPayer` (nell'intestazione `x-amz-request-payer`) 
+ `expectedBucketOwner` (nell'intestazione `x-amz-expected-bucket-owner`)

Per i parametri URI della sintassi della richiesta, consulta [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html) nella *Documentazione di riferimento delle API di Amazon Simple Storage Service*.

**Importante**  
Ti consigliamo di utilizzare la versione più recente, [ListObjectsV2](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html), per lo sviluppo di applicazioni. Per la compatibilità con le versioni precedenti, Amazon S3 continua a supportare `ListObjects`.

Il seguente esempio illustra il payload di input Lambda JSON per `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"
}
```

La funzione Lambda deve restituire un oggetto JSON che contenga il codice di stato, l'elenco dei risultati XML o le informazioni di errore che verranno restituite da Lambda per oggetti S3.

Lambda per oggetti S3 non elabora né convalida `listResultXml`, ma lo inoltra al chiamante `ListObjects`. Per `listBucketResult`, Lambda per oggetti S3 si aspetta che determinate proprietà siano di un tipo specifico e genererà eccezioni se non è in grado di analizzarle. `listResultXml` e `listBucketResult` non possono essere specificati contemporaneamente.

L'esempio seguente illustra come utilizzare l'URL prefirmato per richiamare Amazon S3 e utilizzare il risultato per compilare una risposta, incluso il controllo degli errori.

------
#### [ 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
```

------

Il seguente esempio illustra la struttura dell'oggetto JSON della risposta Lambda per `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'
        },  
        ...  
        ],  
    }
}
```

## Utilizzo di richieste `ListObjectsV2` in Lambda
<a name="olap-listobjectsv2"></a>

Questa sezione presuppone che il punto di accesso Lambda per oggetti sia configurato per richiamare la funzione Lambda per `ListObjectsV2`. Lambda riceverà il payload JSON con un nuovo oggetto denominato `listObjectsV2Context`. `listObjectsV2Context` contiene un'unica proprietà `inputS3Url`, che è un URL prefirmato per il punto di accesso di supporto per `ListObjectsV2`.

A differenza di `GetObject` e `HeadObject`, l'URL prefirmato includerà le seguenti proprietà, se specificate: 
+ Tutti i parametri della query
+ `requestPayer` (nell'intestazione `x-amz-request-payer`) 
+ `expectedBucketOwner` (nell'intestazione `x-amz-expected-bucket-owner`)

Per i parametri URI della sintassi della richiesta, consulta [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) nella *Documentazione di riferimento delle API di Amazon Simple Storage Service*.

Il seguente esempio illustra il payload di input Lambda JSON per `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" 
}
```

La funzione Lambda deve restituire un oggetto JSON che contenga il codice di stato, l'elenco dei risultati XML o le informazioni di errore che verranno restituite da Lambda per oggetti S3.

Lambda per oggetti S3 non elabora né convalida `listResultXml`, ma lo inoltra al chiamante `ListObjectsV2`. Per `listBucketResult`, Lambda per oggetti S3 si aspetta che determinate proprietà siano di un tipo specifico e genererà eccezioni se non è in grado di analizzarle. `listResultXml` e `listBucketResult` non possono essere specificati contemporaneamente.

L'esempio seguente illustra come utilizzare l'URL prefirmato per richiamare Amazon S3 e utilizzare il risultato per compilare una risposta, incluso il controllo degli errori.

------
#### [ 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
```

------

Il seguente esempio illustra la struttura dell'oggetto JSON della risposta Lambda per `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'  
            },  
        ...  
        ],  
    }  
}
```

# Formato e utilizzo del contesto degli eventi
<a name="olap-event-context"></a>

**Nota**  
A partire dal 7 novembre 2025, S3 Object Lambda è disponibile solo per i clienti esistenti che attualmente utilizzano il servizio e per alcuni AWS partner Partner Network (APN). Per funzionalità simili a Lambda per oggetti S3, consulta [Modifica della disponibilità di Lambda per oggetti Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Amazon S3 Object Lambda fornisce un contesto sulla richiesta che viene effettuata nel caso in cui venga passata alla tua funzione. AWS Lambda Il risultato è illustrato nello screenshot seguente. Le descrizioni dei campi sono riportate dopo l'esempio.

```
{
    "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"
}
```

I seguenti campi sono inclusi nella richiesta:
+ `xAmzRequestId`: l'ID della richiesta di Amazon S3 per questa richiesta. Si consiglia di registrare questo valore per facilitare il debug.
+ `getObjectContext`: i dettagli di input e output per le connessioni ad Amazon S3 e S3 Object Lambda.
  + `inputS3Url`: un URL prefirmato che può essere utilizzato per recuperare l'oggetto originale da Amazon S3. L'URL viene firmato utilizzando l'identità del chiamante originale e quando viene utilizzato l'URL vengono applicate le autorizzazioni dell'utente associato. Se nell'URL sono presenti intestazioni firmate, la funzione Lambda deve includerle nella chiamata ad Amazon S3, ad eccezione dell'intestazione `Host`.
  + `outputRoute` ‐ Un token di routing che viene aggiunto all'URL di S3 Object Lambda quando la funzione Lambda richiama `WriteGetObjectResponse`.
  + `outputToken`: un token opaco utilizzato da S3 Object Lambda per abbinare la chiamata `WriteGetObjectResponse` al chiamante originale.
+ `configuration`: informazioni di configurazione sul punto di accesso Lambda per oggetti.
  + `accessPointArn`: il nome della risorsa Amazon (ARN) del punto di accesso Lambda per oggetti che ha ricevuto questa richiesta.
  + `supportingAccessPointArn`: l'ARN del punto di accesso di supporto specificato nella configurazione del punto di accesso Lambda per oggetti.
  + `payload`: dati personalizzati applicati alla configurazione del punto di accesso Lambda per oggetti. S3 Object Lambda tratta questi dati come una stringa opaca, quindi potrebbe essere necessario decodificarli prima dell'utilizzo.
+ `userRequest`: informazioni sulla chiamata originale a S3 Object Lambda.
  + `url`: l'URL decodificato della richiesta come ricevuto da S3 Object Lambda, esclusi eventuali parametri di query relativi all'autorizzazione.
  + `headers`: una mappa di stringa alle stringhe contenenti le intestazioni HTTP e i relativi valori dalla chiamata originale, escluse eventuali intestazioni relative all'autorizzazione. Se la stessa intestazione viene visualizzata più volte, i valori di ogni istanza della stessa intestazione vengono combinati in un elenco delimitato da virgole. Il formato maiuscolo/minuscolo delle intestazioni originali viene mantenuto in questa mappa.
+ `userIdentity`: dettagli sull'identità che ha effettuato la chiamata a S3 Object Lambda. Per ulteriori informazioni, consulta [Registrazione di eventi di dati per i percorsi](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html) nella *Guida per l'utente di AWS CloudTrail *.
  + `type`: il tipo di identità.
  + `accountId`— Account AWS A cui appartiene l'identità.
  + `userName`: il nome descrittivo dell'identità che ha effettuato la chiamata.
  + `principalId`: l'identificatore univoco per l'identità che ha effettuato la chiamata.
  + `arn`: l'ARN del principale che ha effettuato la chiamata. L'ultima sezione dell'ARN contiene l'utente o il ruolo che ha effettuato la chiamata.
  + `sessionContext`: se la richiesta è stata effettuata con le credenziali di sicurezza temporanee, questo elemento fornisce informazioni sulla sessione creata per tali credenziali.
  + `invokedBy`— Il nome di chi Servizio AWS ha effettuato la richiesta, ad esempio Amazon EC2 Auto AWS Elastic Beanstalk Scaling o.
  + `sessionIssuer`: se la richiesta è stata effettuata con le credenziali di sicurezza temporanee, questo elemento fornisce informazioni su come sono state ottenute tali credenziali.
+ `protocolVersion`: l'ID versione del contesto fornito. Il formato di questo campo è `{Major Version}.{Minor Version}`. I numeri di versione secondari sono sempre numeri a due cifre. Qualsiasi rimozione o modifica alla semantica di un campo necessita un aumento della versione principale e richiede l'opt-in attivo. Amazon S3 può aggiungere nuovi campi in qualsiasi momento e in quel punto si potrebbe riscontrare un bump di versione minore. A causa della natura delle implementazioni software, più versioni secondarie potrebbero essere visualizzati in uso contemporaneamente.

# Utilizzo delle intestazioni Range e partNumber
<a name="range-get-olap"></a>

**Nota**  
A partire dal 7 novembre 2025, S3 Object Lambda è disponibile solo per i clienti esistenti che attualmente utilizzano il servizio e per alcuni AWS partner Partner Network (APN). Per funzionalità simili a Lambda per oggetti S3, consulta [Modifica della disponibilità di Lambda per oggetti Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Quando vengono utilizzati oggetti di grandi dimensioni in Amazon S3 Object Lambda, è possibile utilizzare l'intestazione HTTP `Range` per scaricare un intervallo di byte specificato da un oggetto. Puoi utilizzare connessioni simultanee ad Amazon S3 per recuperare diversi intervalli di byte all'interno dello stesso oggetto. Puoi inoltre specificare il parametro `partNumber` (un numero intero compreso tra 1 e 10.000) che esegue una richiesta basata su intervallo per la parte specificata dell'oggetto.

Perché ci sono diversi modi in cui potresti voler gestire una richiesta che include i parametri `Range` o `partNumber`, S3 Object Lambda non applica questi parametri all'oggetto trasformato. La AWS Lambda funzione deve invece implementare questa funzionalità in base alle esigenze dell'applicazione.

Per utilizzare i parametri `Range` e `partNumber` con S3 Object Lambda, procedi come segue: 
+ Abilita questi parametri nella configurazione del punto di accesso Lambda per oggetti.
+ Scrivi una funzione Lambda in grado di gestire le richieste contenente questi parametri.

Di seguito viene descritto come realizzarlo.

## Fase 1: configura il punto di accesso Lambda per oggetti
<a name="range-get-olap-step-1"></a>

Per impostazione predefinita, gli punti di accesso Lambda per oggetti rispondono con un errore con codice di stato HTTP 501 (Not Implemented) a qualsiasi richiesta `GetObject` o `HeadObject` contenente un parametro `Range` o `partNumber` nelle intestazioni o nei parametri di query. 

Per abilitare un punto di accesso Lambda per oggetti ad accettare tali richieste, devi includere `GetObject-Range`, `GetObject-PartNumber`, `HeadObject-Range` o `HeadObject-PartNumber` nella sezione `AllowedFeatures` della configurazione del punto di accesso Lambda per oggetti. Per ulteriori informazioni sull'aggiornamento della configurazione del punto di accesso Lambda per oggetti, consulta [Creazione di punti di accesso Object Lambda](olap-create.md). 

## Fase 2: implementa la gestione di `Range` o `partNumber` nella funzione Lambda
<a name="range-get-olap-step-2"></a>

Quando il punto di accesso Lambda per oggetti richiama la funzione Lambda con una richiesta `GetObject` o `HeadObject` basata su intervallo, il parametro `Range` o `partNumber` è incluso nel contesto dell'evento. La posizione del parametro nel contesto dell'evento dipende dal parametro utilizzato e dal modo in cui è stato incluso nella richiesta originale al punto di accesso Lambda per oggetti, come illustrato nella tabella seguente. 


| Parametro | Posizione del contesto dell'evento | 
| --- | --- | 
|  `Range` (intestazione)  |  `userRequest.headers.Range`  | 
|  `Range` (parametro di query)  |  `userRequest.url` (`Range` del parametro di query)  | 
|  `partNumber`  |  `userRequest.url` (`partNumber` del parametro di query)  | 

**Importante**  
L'URL prefirmato fornito per il punto di accesso Lambda per oggetti non contiene il parametro `Range` o `partNumber` della richiesta originale. Vedi le seguenti opzioni su come gestire questi parametri nella tua AWS Lambda funzione.

Dopo aver estratto il valore `Range` o `partNumber`, è possibile adottare uno dei seguenti approcci in base alle esigenze dell'applicazione:

1. **Mappare il valore `Range` o `partNumber` richiesto all'oggetto trasformato (consigliato).** 

   Per gestire le richieste `Range` o `partNumber` nel modo più affidabile, procedi come segue: 
   + Recupera l'oggetto completo da Amazon S3.
   + Trasforma l'oggetto.
   + Applica i parametri `Range` o `partNumber` obbligatori all'oggetto trasformato.

   Per fare ciò, utilizza l'URL prefirmato fornito per recuperare l'intero oggetto da Amazon S3 e quindi elaborare l'oggetto secondo necessità. Per un esempio di funzione Lambda che elabora un `Range` parametro in questo modo, guarda [questo esempio nel repository](https://github.com/aws-samples/amazon-s3-object-lambda-default-configuration/blob/main/function/nodejs_20_x/src/response/range_mapper.ts) AWS Samples GitHub .

1. **Mappatura del `Range` richiesto all'URL prefirmato URL.**

   In alcuni casi, la funzione Lambda può mappare il valore o il `Range` richiesto direttamente all'URL prefirmato per recuperare solo parte dell'oggetto da Amazon S3. Questo approccio è appropriato solo se la trasformazione soddisfa entrambi i seguenti criteri:

   1. La funzione di trasformazione può essere applicata a intervalli di oggetti parziali.

   1. Applicando il parametro `Range` prima o dopo la funzione di trasformazione produce lo stesso oggetto trasformato.

   Ad esempio, una funzione di trasformazione che converte tutti i caratteri di un oggetto con codifica ASCII in maiuscolo soddisfa entrambi i criteri precedenti. La trasformazione può essere applicata a una parte di un oggetto e applicando il parametro `Range` prima della trasformazione si ottiene lo stesso risultato dell'applicazione del parametro dopo la trasformazione.

   Al contrario, una funzione che inverte i caratteri in un oggetto con codifica ASCII non soddisfa questi criteri. Tale funzione soddisfa il criterio 1, poiché può essere applicata a intervalli di oggetti parziali. Tuttavia, non soddisfa il criterio 2, perché l'applicazione del parametro `Range` prima che la trasformazione raggiunga risultati diversi rispetto all'applicazione del parametro dopo la trasformazione. 

   Considera una richiesta di applicare la funzione ai primi tre caratteri di un oggetto con il contenuto `abcdefg`. L'applicazione del parametro `Range` prima della trasformazione recupera solo `abc` e poi inverte i dati, restituendo `cba`. Ma se il parametro viene applicato dopo la trasformazione, la funzione recupera l'intero oggetto, lo inverte e quindi applica il parametro `Range`, restituendo `gfe`. Poiché questi risultati sono diversi, questa funzione non dovrebbe applicare il parametro `Range` durante il recupero dell'oggetto da Amazon S3. Invece, dovrebbe recuperare l'intero oggetto, eseguire la trasformazione e solo successivamente applicare il parametro `Range`. 
**avvertimento**  
In molti casi, l'applicazione del parametro `Range` o dell'URL prefirmato risulterà in un comportamento imprevisto da parte della funzione Lambda o del client richiedente. A meno che non sia sicuro che la tua applicazione funzioni correttamente quando recuperi solo un oggetto parziale da Amazon S3, ti consigliamo di recuperare e trasformare oggetti completi come descritto in precedenza nell'approccio A. 

   Se l'applicazione soddisfa i criteri descritti in precedenza nell'approccio B, è possibile semplificare la AWS Lambda funzione recuperando solo l'intervallo di oggetti richiesto e quindi eseguendo la trasformazione su quell'intervallo. 

   Il seguente esempio di codice Java illustra come eseguire le seguenti operazioni: 
   + Recuperare l'intestazione `Range` dalla richiesta `GetObject`.
   + Aggiungere l'intestazione `Range` all'URL prefirmato che Lambda può utilizzare per recuperare l'intervallo richiesto da 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;
   }
   ```

# Utilizzo delle AWS funzioni Lambda integrate
<a name="olap-examples"></a>

**Nota**  
A partire dal 7 novembre 2025, S3 Object Lambda è disponibile solo per i clienti esistenti che attualmente utilizzano il servizio e per alcuni AWS partner Partner Network (APN). Per funzionalità simili a Lambda per oggetti S3, consulta [Modifica della disponibilità di Lambda per oggetti Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

AWS fornisce alcune AWS Lambda funzioni predefinite che puoi utilizzare con Amazon S3 Object Lambda per rilevare e redigere informazioni di identificazione personale (PII) e decomprimere oggetti S3. Queste funzioni Lambda sono disponibili nel AWS Serverless Application Repository. È possibile selezionare queste funzioni mediante la Console di gestione AWS quando si crea il punto di accesso Lambda per oggetti. 

[https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-consuming-applications.html](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-consuming-applications.html)

**Nota**  
I seguenti esempi possono essere utilizzati solo con richieste `GetObject`.

## Esempio 1: Controllo degli accessi alle informazioni personali di identificazione (PII)
<a name="olap-examples-1"></a>

Questa funzione Lambda utilizza Amazon Comprehend, un servizio di elaborazione del linguaggio naturale (NLP) basato sul machine learning per trovare informazioni e relazioni in un testo. Questa funzionalità rileva automaticamente le informazioni personali di identificazione (PII) come nomi, indirizzi, date, numeri di carta di credito e numeri di previdenza sociale nei documenti presenti in un bucket Amazon S3. Se nel bucket sono presenti documenti che includono questo tipo di informazioni, è possibile configurare la funzione di controllo degli accessi alle queste informazioni di S3 Object Lambda per rilevare questi tipi di entità PII e bloccare l'accesso agli utenti non autorizzati.

Per iniziare, è sufficiente implementare la seguente funzione Lambda nell'account in uso e aggiungere il nome della risorsa Amazon (ARN) della funzione nella configurazione del punto di accesso Lambda per oggetti.

Di seguito è riportato un esempio di ARN per questa funzione:

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

[È possibile aggiungere o visualizzare questa funzione su Console di gestione AWS utilizzando il seguente AWS Serverless Application Repository link: S3. ComprehendPiiAccessControl ObjectLambda](https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:839782855223:applications/ComprehendPiiAccessControlS3ObjectLambda)

Per visualizzare questa funzione su GitHub, consulta [Amazon Comprehend S3 Object Lambda](https://github.com/aws-samples/amazon-comprehend-s3-object-lambdas).

## Esempio 2: oscuramento di PII
<a name="olap-examples-2"></a>

Questa funzione Lambda utilizza Amazon Comprehend, un servizio di elaborazione del linguaggio naturale (NLP) basato sul machine learning per trovare informazioni e relazioni in un testo. Questa funzione oscura automaticamente le informazioni personali di identificazione (PII) come nomi, indirizzi, date, numeri di carta di credito e numeri di previdenza sociale provenienti da documenti contenuti in un bucket Amazon S3. 

Se nel bucket sono presenti documenti che includono informazioni quali numeri di carta di credito o informazioni sul conto corrente, è possibile configurare la funzione Oscuramento di PII di S3 Object Lambda per rilevare le informazioni personali e quindi restituire una copia di questi documenti in cui i tipi di entità PII sono redatti.

Per iniziare, è sufficiente implementare la seguente funzione Lambda nell'account in uso e aggiungere l'ARN della funzione nella configurazione del punto di accesso Lambda per oggetti.

Di seguito è riportato un esempio di ARN per questa funzione:

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

[Puoi aggiungere o visualizzare questa funzione su Console di gestione AWS utilizzando il seguente AWS Serverless Application Repository link: S3. ComprehendPiiRedaction ObjectLambda](https://console.aws.amazon.com/lambda/home#/create/app?applicationId=arn:aws:serverlessrepo:us-east-1:839782855223:applications/ComprehendPiiRedactionS3ObjectLambda)

Per visualizzare questa funzione su GitHub, consulta [Amazon Comprehend S3 Object Lambda](https://github.com/aws-samples/amazon-comprehend-s3-object-lambdas).

Per informazioni sulle end-to-end procedure complete per alcune attività di S3 Object Lambda nella redazione delle PII, consulta. [Tutorial: rilevamento e oscuramento dei dati PII con S3 Object Lambda e Amazon Comprehend](tutorial-s3-object-lambda-redact-pii.md)

## Esempio 3: Decompressione
<a name="olap-examples-3"></a>

La funzione Lambda `S3ObjectLambdaDecompression` può decomprimere gli oggetti archiviati in Amazon S3 in uno dei sei formati di file compressi: `bzip2`, `gzip`, `snappy`, `zlib`, `zstandard` e `ZIP`. 

Per iniziare, è sufficiente implementare la seguente funzione Lambda nell'account in uso e aggiungere l'ARN della funzione nella configurazione del punto di accesso Lambda per oggetti.

Di seguito è riportato un esempio di ARN per questa funzione:

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

[È possibile aggiungere o visualizzare questa funzione su Console di gestione AWS utilizzando il seguente AWS Serverless Application Repository link: 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)

Per visualizzare questa funzione attiva GitHub, consulta [S3 Object Lambda Decompression](https://github.com/aws-samples/amazon-s3-object-lambda-decompression).

# Best practice e linee guida per Lambda per oggetti S3
<a name="olap-best-practices"></a>

**Nota**  
A partire dal 7 novembre 2025, S3 Object Lambda è disponibile solo per i clienti esistenti che attualmente utilizzano il servizio e per alcuni AWS partner Partner Network (APN). Per funzionalità simili a Lambda per oggetti S3, consulta [Modifica della disponibilità di Lambda per oggetti Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Quando utilizzi Lambda per oggetti S3, segui le seguenti best practice e linee guida per ottimizzare le operazioni e le prestazioni.

**Topics**
+ [

## Utilizzo di S3 Object Lambda
](#olap-working-with)
+ [

## Servizi AWS utilizzato in combinazione con S3 Object Lambda
](#olap-services)
+ [

## Intestazioni `Range` e `partNumber`
](#olap-managing-range-part)
+ [

## Trasformazione di `expiry-date`
](#olap-console-download)
+ [

## Lavorare con e AWS CLI AWS SDKs
](#olap-cli-sdk)

## Utilizzo di S3 Object Lambda
<a name="olap-working-with"></a>

S3 Object Lambda supporta solo l'elaborazione delle richieste `GET`, `LIST` e `HEAD`. Qualsiasi altra richiesta non richiama AWS Lambda e restituisce invece risposte API standard non trasformate. È possibile creare un massimo di 1.000 punti di accesso Object Lambda Account AWS per regione. La AWS Lambda funzione da utilizzare deve trovarsi nella stessa Account AWS regione dell'Object Lambda Access Point.

S3 Object Lambda richiede fino a 60 secondi per trasmettere una risposta completa al suo chiamante. La tua funzione è inoltre soggetta a quote AWS Lambda predefinite. Per ulteriori informazioni, consulta la sezione [Quote Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) nella *Guida per gli sviluppatori di AWS Lambda *. 

Quando S3 Object Lambda richiama la funzione Lambda specificata, è responsabilità dell'utente garantire che tutti i dati sovrascritti o eliminati in Amazon S3 dalla funzione Lambda o dall'applicazione specificata siano quelli desiderati e corretti.

S3 Object Lambda può essere utilizzato solo per eseguire operazioni sugli oggetti. Non è possibile utilizzarlo per eseguire altre operazioni Amazon S3, ad esempio la modifica o l'eliminazione dei bucket. Per un elenco completo delle operazioni S3 che supportano i punti di accesso, consulta [Compatibilità dei punti di accesso con le operazioni S3](access-points-service-api-support.md#access-points-operations-support).

Oltre a questo elenco, i punti di accesso Lambda per oggetti non supportano le operazioni [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) (come origine) e le operazioni API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html).

## Servizi AWS utilizzato in combinazione con S3 Object Lambda
<a name="olap-services"></a>

S3 Object Lambda collega Amazon S3 e AWS Lambda, facoltativamente, Servizi AWS altri di tua scelta per fornire oggetti pertinenti alle applicazioni richiedenti. Tutti i Servizi AWS dispositivi utilizzati con S3 Object Lambda sono regolati dai rispettivi Service Level Agreement SLAs (). Ad esempio, se qualcuno Servizio AWS non rispetta il proprio impegno di servizio, hai diritto a ricevere un credito di servizio, come documentato nello SLA del servizio.

## Intestazioni `Range` e `partNumber`
<a name="olap-managing-range-part"></a>

In caso di utilizzo di oggetti di grandi dimensioni, è possibile usare l'intestazione HTTP `Range` per scaricare un intervallo di byte specificato da un oggetto. Quando si utilizza l'intestazione `Range`, la richiesta recupera solo la parte specificata dell'oggetto. È anche possibile utilizzare l'intestazione `partNumber` per eseguire una richiesta basata su intervallo per la parte specificata dall'oggetto.

Per ulteriori informazioni, consulta [Utilizzo delle intestazioni Range e partNumber](range-get-olap.md).

## Trasformazione di `expiry-date`
<a name="olap-console-download"></a>

È possibile aprire o scaricare oggetti trasformati dal punto di accesso Object Lambda su. Console di gestione AWS Questi oggetti non devono essere scaduti. Se la funzione Lambda trasforma `expiry-date` degli oggetti, potrebbero venire visualizzati oggetti scaduti che non possono essere aperti o scaricati. Questo comportamento si applica solo agli oggetti ripristinati in S3 Glacier Flexible Retrieval e S3 Glacier Deep Archive.

## Lavorare con e AWS CLI AWS SDKs
<a name="olap-cli-sdk"></a>

AWS Command Line Interface (AWS CLI) I sottocomandi S3 (`cp`,`mv`, and`sync`) e l'uso della AWS SDK per Java `TransferManager` classe non sono supportati per l'uso con S3 Object Lambda.

# Tutorial di Lambda per oggetti S3
<a name="olap-tutorials"></a>

**Nota**  
A partire dal 7 novembre 2025, S3 Object Lambda è disponibile solo per i clienti esistenti che attualmente utilizzano il servizio e per alcuni AWS partner Partner Network (APN). Per funzionalità simili a Lambda per oggetti S3, consulta [Modifica della disponibilità di Lambda per oggetti Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

I seguenti tutorial presentano end-to-end procedure complete per alcune attività di S3 Object Lambda.

Con S3 Object Lambda puoi aggiungere il tuo codice per elaborare i dati recuperati da S3 prima di restituirli a un'applicazione. Ciascuna delle seguenti esercitazioni modifica i dati man mano che vengono recuperati da Amazon S3, senza modificare l'oggetto esistente o mantenere più copie dei dati. Il primo tutorial spiegherà come aggiungere una AWS Lambda funzione a una richiesta S3 GET per modificare un oggetto recuperato da S3. La seconda esercitazione mostra come utilizzare una funzione Lambda precostituita alimentata da Amazon Comprehend per proteggere le informazioni di identificazione personale (PII) recuperate da S3 prima di restituirle a un'applicazione. La terza esercitazione utilizza Lambda per oggetti S3 per aggiungere una filigrana a un'immagine mentre viene recuperata da Amazon S3.
+ [Tutorial: trasformazione dei dati per l'applicazione con S3 Object Lambda](tutorial-s3-object-lambda-uppercase.md)
+ [Tutorial: rilevamento e oscuramento dei dati PII con S3 Object Lambda e Amazon Comprehend](tutorial-s3-object-lambda-redact-pii.md)
+ [Tutorial: utilizzo di Lambda per oggetti S3 per aggiungere filigrane alle immagini in modo dinamico man mano che vengono recuperate](https://aws.amazon.com/getting-started/hands-on/amazon-s3-object-lambda-to-dynamically-watermark-images/?ref=docs_gateway/amazons3/olap-tutorials.html)

# Tutorial: trasformazione dei dati per l'applicazione con S3 Object Lambda
<a name="tutorial-s3-object-lambda-uppercase"></a>

**Nota**  
A partire dal 7 novembre 2025, S3 Object Lambda è disponibile solo per i clienti esistenti che attualmente utilizzano il servizio e per alcuni AWS partner Partner Network (APN). Per funzionalità simili a Lambda per oggetti S3, consulta [Modifica della disponibilità di Lambda per oggetti Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Quando archivi dati in Amazon S3, puoi condividerli facilmente per utilizzarli da più applicazioni. Tuttavia, ogni applicazione potrebbe avere requisiti univoci in merito al formato dei dati e richiedere la modifica o l'elaborazione dei dati per un caso d'uso specifico. Ad esempio, un set di dati creato da un'applicazione e-commerce potrebbe includere informazioni personali di identificazione (PII). Quando gli stessi dati vengono elaborati per l'analisi, queste PII non sono necessarie e devono essere oscurate. Tuttavia, se lo stesso set di dati viene utilizzato per una campagna di marketing, potresti dover arricchire i dati con ulteriori dettagli, come informazioni dal database che raccoglie i dati sulla fidelizzazione dei clienti.

Con [S3 Object Lambda](https://aws.amazon.com/s3/features/object-lambda) puoi aggiungere il tuo codice per elaborare i dati recuperati da S3 prima di restituirli a un'applicazione. In particolare, puoi configurare una AWS Lambda funzione e collegarla a un S3 Object Lambda Access Point. Quando un’applicazione invia [richieste GET S3 standard](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) tramite il punto di accesso Lambda per oggetti S3, la funzione Lambda specificata viene invocata per elaborare i dati recuperati dall’origine dati sottostante attraverso il punto di accesso S3 di supporto, quindi il punto di accesso Lambda per oggetti S3 restituisce il risultato trasformato all'applicazione. Puoi creare ed eseguire funzioni Lambda personalizzate, adattando la trasformazione dei dati S3 Object Lambda al tuo specifico caso d'uso, il tutto senza che siano necessarie modifiche alla tua applicazione.

![\[Questo è un diagramma del flusso di lavoro di Lambda per oggetti S3.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/ol-example-image-global.png)


**Obiettivo**  
In questo tutorial imparerai come aggiungere codice personalizzato alle richieste GET S3 standard per modificare l'oggetto richiesto recuperato da S3 in modo che questo soddisfi le esigenze del client o dell'applicazione richiedente. In particolare, apprendi come trasformare in maiuscolo tutto il testo dell’oggetto originale archiviato in un bucket S3 tramite Lambda per oggetti S3. 

**Nota**  
Questo tutorial utilizza il codice Python per trasformare i dati, per esempi utilizzando altri, AWS SDKs consulta [Transform data for your application with S3 Object Lambda nella SDK](https://docs.aws.amazon.com/code-library/latest/ug/lambda_example_cross_ServerlessS3DataTransformation_section.html) Code Examples Library. AWS 

**Topics**
+ [

## Prerequisiti
](#ol-upper-prerequisites)
+ [

## Fase 1: Creazione di un bucket S3
](#ol-upper-step1)
+ [

## Fase 2: Caricamento di un file nel bucket S3
](#ol-upper-step2)
+ [

## Fase 3: Creazione di un punto di accesso S3
](#ol-upper-step3)
+ [

## Fase 4: Creazione di una funzione Lambda
](#ol-upper-step4)
+ [

## Fase 5: Configurazione di una policy IAM per il ruolo di esecuzione della funzione Lambda
](#ol-upper-step5)
+ [

## Fase 6: Creazione di un punto di accesso Lambda per oggetti S3
](#ol-upper-step6)
+ [

## Fase 7: Visualizzazione dei dati trasformati
](#ol-upper-step7)
+ [

## Fase 8: Pulizia
](#ol-upper-step8)
+ [

## Fasi successive
](#ol-upper-next-steps)

## Prerequisiti
<a name="ol-upper-prerequisites"></a>

Prima di iniziare questo tutorial, devi disporre di un account a Account AWS cui accedere come utente AWS Identity and Access Management (IAM) con le autorizzazioni corrette. Devi inoltre installare la versione 3.8 o successiva di Python.

**Topics**
+ [

### Crea un utente IAM con autorizzazioni nella tua Account AWS (console)
](#ol-upper-prerequisites-account)
+ [

### Installazione di Python 3.8 o versioni successive sul computer locale
](#ol-upper-prerequisites-python)

### Crea un utente IAM con autorizzazioni nella tua Account AWS (console)
<a name="ol-upper-prerequisites-account"></a>

Puoi creare un utente IAM per il tutorial. Per completare questo tutorial, il tuo utente IAM deve allegare le seguenti policy IAM per accedere alle AWS risorse pertinenti ed eseguire azioni specifiche. Per ulteriori informazioni su come creare un utente IAM, consulta [Creazione di utenti IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) nella *Guida per l'utente di IAM*.

L'utente IAM richiede le seguenti policy:
+ [AmazonS3 FullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonS3FullAccess$jsonEditor): concede le autorizzazioni per tutte le azioni di Amazon S3, incluse le autorizzazioni per creare e utilizzare un punto di accesso Object Lambda. 
+ [AWSLambda\$1FullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSLambda_FullAccess$jsonEditor)— Concede le autorizzazioni per tutte le azioni Lambda. 
+ [IAMFullAccesso](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/IAMFullAccess$jsonEditor): concede le autorizzazioni a tutte le azioni IAM. 
+ [IAMAccessAnalyzerReadOnlyAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/IAMAccessAnalyzerReadOnlyAccess$jsonEditor)— Concede le autorizzazioni per leggere tutte le informazioni di accesso fornite da IAM Access Analyzer. 
+ [CloudWatchLogsFullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/CloudWatchLogsFullAccess$jsonEditor)— Garantisce l'accesso completo ai registri. CloudWatch 

**Nota**  
Per semplicità, questo tutorial crea e utilizza un utente IAM. Dopo aver completato il tutorial, ricordati di [Eliminazione dell'utente IAM](#ol-upper-step8-delete-user). Per l'uso in produzione, consigliamo di seguire le [best practice di sicurezza in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) disponibili nella *Guida per l'utente di IAM*. Come best practice, richiedi agli utenti di utilizzare la federazione con un gestore dell'identità digitale per accedere a AWS utilizzando credenziali temporanee. Un'ulteriore suggerimento derivante dalle best practice è richiedere ai carichi di lavoro di utilizzare credenziali temporanee con ruoli IAM per l'accesso ad AWS. *Per informazioni sull'utilizzo AWS IAM Identity Center per creare utenti con credenziali temporanee, consulta [Guida introduttiva](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) nella Guida per l'AWS IAM Identity Center utente.*   
Per semplicità, questo tutorial utilizza policy gestite AWS di accesso completo. Per l'utilizzo in produzione, è consigliabile invece concedere solo le autorizzazioni minime necessarie per il caso d'uso, in conformità con le [best practice in fatto di sicurezza](security-best-practices.md#security-best-practices-prevent).

### Installazione di Python 3.8 o versioni successive sul computer locale
<a name="ol-upper-prerequisites-python"></a>

Utilizza la procedura seguente per installare Python 3.8 o una versione successiva sul computer locale. Per maggiori istruzioni sull'installazione, consulta la pagina [Download di Python](https://wiki.python.org/moin/BeginnersGuide/Download) nella *Guida per principianti di Python*.

1. Apri il terminale o la shell locale ed esegui il seguente comando per determinare se Python è già installato e, in caso affermativo, la versione installata. 

   ```
   python --version
   ```

1. Se non disponi di Python 3.8 o versioni successive, scarica il [programma di installazione ufficiale](https://www.python.org/downloads/) di Python 3.8 o versioni successive adatto al computer locale. 

1. Esegui il programma di installazione facendo doppio clic sul file scaricato e segui i passaggi per completare l'installazione. 

   Per **utenti Windows**: scegli **Add Python 3.X to PATH (Aggiungi Python 3.X a [percorso])** nella procedura guidata di installazione prima di scegliere **Install Now (Installa adesso)**. 

1. Chiudi e riapri il terminale per riavviarlo. 

1. Per verificare che Python 3.8 o versioni successive sia installato correttamente, esegui il comando seguente. 

   Se sei un **utente macOS**, esegui questo comando: 

   ```
   python3 --version
   ```

   Per **utenti Windows**: esegui questo comando: 

   ```
   python --version
   ```

1. Esegui il seguente comando per verificare che il gestore di pacchetti pip3 sia installato. Se vedi un numero di versione di pip e Python 3.8 o versione successiva nella risposta al comando, significa che il gestore di pacchetti pip3 è installato correttamente.

   ```
   pip --version
   ```

## Fase 1: Creazione di un bucket S3
<a name="ol-upper-step1"></a>

Crea un bucket per archiviare i dati originali che intendi trasformare. 

**Nota**  
I punti di accesso possono essere collegati a un'altra fonte di dati, come un volume Amazon FSx for OpenZFS, tuttavia questo tutorial utilizza un punto di accesso di supporto collegato a un bucket S3.

**Per creare un bucket**

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Buckets** (Bucket).

1. Scegliere **Create bucket (Crea bucket)**. 

   Viene visualizzata la pagina **Create bucket (Crea bucket)**.

1. In **Bucket name** (Nome bucket), inserisci un nome per il bucket (ad esempio **tutorial-bucket**). 

   Per ulteriori informazioni sulle regole di denominazione del bucket in Amazon S3, consulta [Regole di denominazione dei bucket per uso generico](bucketnamingrules.md).

1. Per la **regione**, scegli Regione AWS dove vuoi che risieda il bucket. 

   Per ulteriori informazioni sulla Regione del bucket, consulta [Panoramica dei bucket per uso generico](UsingBucket.md).

1. In **Block Public Access settings for this bucket** (Blocca le impostazioni di accesso pubblico per questo bucket), mantieni le impostazioni predefinite (è abilitato **Block *all *public access** (Blocca tutto l'accesso pubblico). 

   È consigliabile di lasciare abilitate tutte le impostazioni di blocco dell'accesso pubblico, a meno che non abbia bisogno di disattivarne una o più per il caso d'uso. Per ulteriori informazioni sul blocco dell'accesso pubblico, consulta [Blocco dell'accesso pubblico allo storage Amazon S3](access-control-block-public-access.md).

1. Mantieni le impostazioni rimanenti impostate sui valori di default. 

   (Facoltativo) Se desideri configurare ulteriori impostazioni del bucket per il tuo caso d'uso specifico, consulta [Creazione di un bucket per uso generico](create-bucket-overview.md).

1. Seleziona **Crea bucket**.

## Fase 2: Caricamento di un file nel bucket S3
<a name="ol-upper-step2"></a>

Carica il file di testo nel bucket S3. Questo file di testo contiene i dati originali che trasformerai in maiuscolo più avanti in questo tutorial. 

Ad esempio, puoi caricare un file `tutorial.txt` che contiene il testo seguente:

```
Amazon S3 Object Lambda Tutorial:
You can add your own code to process data retrieved from S3 before 
returning it to an application.
```

**Per caricare un file in un bucket**

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Buckets** (Bucket).

1. Nell'elenco **Buckets** (Bucket) scegli il nome del bucket creato nella [Fase 1](#ol-upper-step1) (ad esempio,**tutorial-bucket**) in cui caricare il file.

1. Nella scheda **Oggetti** del bucket seleziona **Carica**.

1. Nella pagina **Upload** (Caricamento), sotto **Files and Folders** (File e cartelle) scegli **Add Files** (Aggiungi file).

1. Seleziona un file da caricare, quindi scegli **Apri**. Ad esempio, puoi caricare il file di esempio `tutorial.txt` menzionato in precedenza.

1. Scegli **Carica**.

## Fase 3: Creazione di un punto di accesso S3
<a name="ol-upper-step3"></a>

Per utilizzare un punto di accesso Lambda per oggetti S3 per accedere e trasformare i dati originali, devi creare un punto di accesso S3 e associarlo al bucket S3 creato nella [Fase 1](#ol-upper-step1). Il punto di accesso deve trovarsi nello Regione AWS stesso punto in cui si trovano gli oggetti che desideri trasformare.

Più avanti in questo tutorial, utilizzerai questo punto di accesso come punto di accesso di supporto per il tuo punto di accesso Lambda per oggetti. 

**Per creare un punto di accesso**

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Access Points** (Punti di accesso).

1. Nella pagina **Punto di accesso**, scegli **Crea punto di accesso**.

1. Nel campo **Nome del punto di accesso**, inserisci il nome (ad esempio, **tutorial-access-point**) del punto di accesso.

   Per ulteriori informazioni sulla denominazione dei punti di accesso, consulta [Regole di denominazione dei punti di accesso](access-points-restrictions-limitations-naming-rules.md#access-points-names).

1. Nel campo **Origine dati** inserisci il nome del bucket creato nella [Fase 1](#ol-upper-step1) (ad esempio, **tutorial-bucket**). S3 allega quindi il punto di accesso a questo bucket. 

   (Facoltativo) Puoi scegliere **Browse S3** (Sfoglia S3) per sfogliare e cercare i bucket nell'account. Se scegli **Browse S3** (Sfoglia S3), scegli il bucket desiderato e scegli **Choose path** (Scegli percorso) per popolare il campo **Bucket name** (Nome bucket) con il nome del bucket.

1. In **Network origin** (Origine rete), scegli **Internet**. 

   Per ulteriori informazioni sulle origini della rete per i punti di accesso, consulta [Creazione di access point limitati a un cloud privato virtuale](access-points-vpc.md).

1. Tutte le impostazioni di blocco dell'accesso pubblico sono abilitate per impostazione predefinita per il punto di accesso. È consigliabile lasciare abilitato **Block *all* public access** (Blocca tutto l'accesso pubblico).

   Per ulteriori informazioni, consulta [Gestione dell’accesso pubblico ai punti di accesso per bucket per uso generico](access-points-bpa-settings.md).

1. Per tutte le altre impostazioni del punto di accesso, mantieni i valori di default.

   (Facoltativo) Puoi modificare le impostazioni del punto di accesso per supportare il caso d'uso. Per questo tutorial, ti consigliamo di mantenere le impostazioni di default. 

   (Facoltativo) Se è necessario gestire l'accesso al punto di accesso, puoi specificare una policy per il punto di accesso. Per ulteriori informazioni, consulta [Esempi di policy per i punti di accesso](access-points-policies.md#access-points-policy-examples). 

1. Scegli **Crea punto di accesso**.

## Fase 4: Creazione di una funzione Lambda
<a name="ol-upper-step4"></a>

Per trasformare i dati originali, crea una funzione Lambda utilizzabile con il punto di accesso Lambda per oggetti S3. 

**Topics**
+ [

### Scrittura del codice della funzione Lambda e creazione di un pacchetto di implementazione in un ambiente virtuale
](#ol-upper-step4-write-lambda)
+ [

### Creare una funzione Lambda con un ruolo di esecuzione (console)
](#ol-upper-step4-create-function)
+ [

### Implementa il codice della tua funzione Lambda con gli archivi in file .zip e configura la funzione Lambda (console)
](#ol-upper-step4-deploy-function)

### Scrittura del codice della funzione Lambda e creazione di un pacchetto di implementazione in un ambiente virtuale
<a name="ol-upper-step4-write-lambda"></a>

1. Sul computer locale, crea una cartella denominata `object-lambda` per l'ambiente virtuale da utilizzare più avanti in questo tutorial.

1. Nella cartella `object-lambda`, crea un file con una funzione Lambda che modifica tutto il testo dell'oggetto originale in maiuscolo. Ad esempio, puoi utilizzare la seguente funzione scritta in Python. Salva questa funzione in un file denominato `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}
   ```
**Nota**  
La precedente funzione Lambda di esempio carica l'intero oggetto richiesto in memoria prima di trasformarlo e restituirlo al client. In alternativa, puoi trasmettere l'oggetto da S3 per evitare di caricare l'intero oggetto in memoria. Questo approccio può essere utile quando lavori con oggetti di grandi dimensioni. Per ulteriori informazioni sullo streaming delle risposte con i punti di accesso Lambda per oggetti, consulta gli esempi di streaming in [Utilizzo di richieste `GetObject` in Lambda](olap-writing-lambda.md#olap-getobject-response).

   Quando scrivi una funzione Lambda utilizzabile con un punto di accesso Lambda per oggetti S3, la funzione si basa sul contesto dell'evento di input che Lambda per oggetti S3 fornisce alla funzione stessa. Il contesto dell'evento fornisce informazioni relative alla richiesta eseguita nell'evento inviato da Lambda per oggetti S3 a Lambda. e che contiene i parametri utilizzati per crearla.

   I campi utilizzati per creare la funzione Lambda precedente sono i seguenti: 

   Il campo `getObjectContext` si riferisce ai dettagli di ingresso e uscita per le connessioni ad Amazon S3 e S3 Object Lambda. Ha i seguenti campi:
   + `inputS3Url`: un URL prefirmato che la funzione Lambda può utilizzare per scaricare l'oggetto originale dal punto di accesso di supporto. Utilizzando un URL prefirmato, la funzione Lambda non ha bisogno di avere le autorizzazioni di lettura di Amazon S3 per recuperare l'oggetto originale e può accedere solo all'oggetto elaborato da ogni chiamata.
   + `outputRoute`: un token di routing che viene aggiunto all'URL di S3 Object Lambda quando la funzione Lambda richiama `WriteGetObjectResponse` per reinviare l'oggetto trasformato.
   + `outputToken`: un token utilizzato da S3 Object Lambda per associare la chiamata `WriteGetObjectResponse` al chiamante originale quando reinvia l'oggetto trasformato.

   Per ulteriori informazioni su tutti i campi del contesto dell'evento, consulta [Formato e utilizzo del contesto degli eventi](olap-event-context.md) e [Scrittura di funzioni Lambda per i punti di accesso Lambda per oggetti S3](olap-writing-lambda.md).

1. Nel terminale locale, inserisci il seguente comando per installare il pacchetto `virtualenv`:

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

1. Nel terminale locale, apri la cartella `object-lambda` creata in precedenza e inserisci il seguente comando per creare e inizializzare un nuovo ambiente virtuale denominato `venv`.

   ```
   python -m virtualenv venv
   ```

1. Per attivare l'ambiente virtuale, inserire il seguente comando per eseguire il file `activate` dalla cartella dell'ambiente:

   Se sei un **utente macOS**, esegui questo comando:

   ```
   source venv/bin/activate
   ```

   Per **utenti Windows**: esegui questo comando:

   ```
   .\venv\Scripts\activate
   ```

   Il prompt dei comandi si modifica per mostrare **(venv)**, indicando che l'ambiente virtuale è attivo.

1. Per installare le librerie richieste, esegui i seguenti comandi riga per riga nell'ambiente virtuale `venv`.

   Questi comandi installano versioni aggiornate delle dipendenze della funzione Lambda `lambda_handler`. Queste dipendenze sono gli SDK per Python (Boto3) AWS e il modulo delle richieste.

   ```
   pip3 install boto3
   ```

   ```
   pip3 install requests
   ```

1. Per disattivare l'ambiente virtuale, esegui il comando seguente:

   ```
   deactivate
   ```

1. Per creare un pacchetto di implementazione con le librerie installate come file `.zip` denominato `lambda.zip` alla root della directory `object-lambda`, eseguire i seguenti comandi riga per riga nel terminale locale.
**Suggerimento**  
È possibile che i seguenti comandi debbano essere regolati per funzionare in un ambiente specifico. Ad esempio, una libreria potrebbe essere visualizzata in `site-packages` o `dist-packages` e la prima cartella potrebbe essere `lib` o `lib64`. Inoltre, la cartella `python` potrebbe essere denominata con una versione di Python diversa. Per localizzare un pacchetto specifico, utilizza il comando `pip show`.

   Se sei un **utente macOS**, esegui questi comandi:

   ```
   cd venv/lib/python3.8/site-packages 
   ```

   ```
   zip -r ../../../../lambda.zip .
   ```

   Se sei un **utente Windows**, esegui questi comandi:

   ```
   cd .\venv\Lib\site-packages\ 
   ```

   ```
   powershell Compress-Archive * ../../../lambda.zip
   ```

   L'ultimo comando salva il pacchetto di implementazione nella directory principale della directory `object-lambda`.

1. Aggiungere il file del codice della funzione `transform.py` alla root del pacchetto di implementazione.

   Se sei un **utente macOS**, esegui questi comandi:

   ```
   cd ../../../../ 
   ```

   ```
   zip -g lambda.zip transform.py
   ```

   Se sei un **utente Windows**, esegui questi comandi: 

   ```
   cd ..\..\..\
   ```

   ```
   powershell Compress-Archive -update transform.py lambda.zip
   ```

   Dopo aver completato questa fase, si dovrà avere la seguente struttura della directory:

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

### Creare una funzione Lambda con un ruolo di esecuzione (console)
<a name="ol-upper-step4-create-function"></a>

1. Accedi a Console di gestione AWS e apri la AWS Lambda console all'indirizzo [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

   

1. Nel pannello di navigazione a sinistra, scegli **Functions (Funzioni)**.

1. Selezionare **Create function (Crea funzione)**.

1. Scegli **Author from scratch** (Crea da zero).

1. In **Basic information (Informazioni di base)** eseguire queste operazioni:

   1. Nel campo **Function name (Nome funzione)**, immettere **tutorial-object-lambda-function**.

   1. In **Runtime (Runtime)**, scegli **Python 3.8** o una versione successiva.

1. Espandi la sezione **Change default execution role (Cambia ruolo di esecuzione predefinito)**. In **Execution role (Ruolo di esecuzione)**, scegli **Create a new role with basic Lambda permissions (Crea un nuovo ruolo con le autorizzazioni Lambda di base)**.

   Nel [passaggio 5](#ol-upper-step5) più avanti di questo tutorial, colleghi **AmazonS3** al ruolo di esecuzione di ObjectLambdaExecutionRolePolicy questa funzione Lambda. 

1. Mantieni le impostazioni rimanenti impostate sui valori predefiniti.

1. Scegli **Crea funzione**.

### Implementa il codice della tua funzione Lambda con gli archivi in file .zip e configura la funzione Lambda (console)
<a name="ol-upper-step4-deploy-function"></a>

1. Nella AWS Lambda console all'indirizzo [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/), scegli **Funzioni nel riquadro di navigazione** a sinistra. 

1. Scegli la funzione Lambda creata in precedenza (ad esempio, **tutorial-object-lambda-function**). 

1. Nella pagina dei dettagli della funzione Lambda, scegli la scheda **Code (Codice)**. Nella sezione **Code source (Origine codice)**, scegli **Upload from (Carica da)** e quindi **.zip file (file .zip)**.

1. Scegli **Upload (Carica)** per selezionare il file `.zip` locale.

1. Scegli il file `lambda.zip` creato in precedenza, quindi scegli **Open (Apri)**.

1. Scegli **Save** (Salva).

1. Nel pannello **Runtime settings (Impostazioni runtime)**, scegli **Edit (Modifica)**. 

1. Nella pagina **Edit runtime settings (Modifica impostazioni runtime)**, verifica che **Runtime (Runtime)** sia impostato su **Python 3.8** o una versione successiva. 

1. Per indicare al runtime Lambda quale metodo gestore richiamare nel codice della funzione Lambda, inserisci **transform.lambda\$1handler** in **Handler (Gestore)**.

   Quando si configura una funzione in Python, il valore dell’impostazione del gestore è costituito dal nome del file e dal nome del modulo del gestore esportato, separati da un punto. Ad esempio, `transform.lambda_handler` richiama il metodo `lambda_handler` definito nel file `transform.py`.

1. Scegli **Save** (Salva).

1. (Facoltativo) Nella pagina dei dettagli della funzione Lambda, scegli la scheda **Configuration (Configurazione)**. Nel pannello di navigazione a sinistra, scegli **General configuration (Configurazione generale)**, quindi scegli **Edit (Modifica)**. Nel campo **Timeout** inserisci **1** min **0** sec. Mantieni le impostazioni rimanenti sui valori predefiniti e scegli **Save (Salva)**.

   Il **Timeout** è la quantità di tempo consentita da Lambda per l'esecuzione di una funzione per una chiamata prima di arrestarla. Il valore predefinito è 3 secondi. La durata massima per una funzione Lambda utilizzata da S3 Object Lambda è di 60 secondi. I prezzi si basano sulla quantità di memoria configurata e sulla quantità di tempo di esecuzione del codice.

## Fase 5: Configurazione di una policy IAM per il ruolo di esecuzione della funzione Lambda
<a name="ol-upper-step5"></a>

Per abilitare la funzione Lambda a fornire dati personalizzati e intestazioni di risposta al chiamante `GetObject`, il ruolo di esecuzione della funzione Lambda deve disporre delle autorizzazioni IAM per chiamare l'API `WriteGetObjectResponse`.

**Allegare una policy IAM al ruolo della funzione Lambda**



1. Nella AWS Lambda console all'indirizzo [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/), scegli **Funzioni** nel riquadro di navigazione a sinistra. 

1. Scegli la funzione creata nella [Fase 4](#ol-upper-step4) (ad esempio, **tutorial-object-lambda-function**).

1. Nella pagina dei dettagli della funzione Lambda, scegli la scheda **Configuration (Configurazione)**, quindi scegli **Permissions (Autorizzazioni)** nel pannello di navigazione a sinistra. 

1. In **Execution role (Ruolo di esecuzione)** scegli il collegamento **Role Name (Nome ruolo)**. Si apre la console IAM. 

1. Nella pagina **Summary** (Riepilogo) della console IAM del ruolo di esecuzione della funzione Lambda, seleziona la scheda **Permissions** (Autorizzazioni). Quindi, nel menu **Add Permissions** (Aggiungi autorizzazioni), scegli **Attach policies** (Collega policy).

1. Nella pagina **Attach permissions (Allega autorizzazioni)** inserisci **AmazonS3ObjectLambdaExecutionRolePolicy** nella casella di ricerca per filtrare l'elenco di policy. Seleziona la casella di controllo accanto al nome della politica **AmazonS3 ObjectLambdaExecutionRolePolicy**. 

1. Scegli **Collega policy**. 

## Fase 6: Creazione di un punto di accesso Lambda per oggetti S3
<a name="ol-upper-step6"></a>

Un punto di accesso Lambda per oggetti S3 offre la flessibilità di richiamare una funzione Lambda direttamente da una richiesta GET S3 in modo che la funzione possa elaborare i dati recuperati da un punto di accesso S3. Quando crei e configuri un punto di accesso Lambda per oggetti S3, devi specificare la funzione Lambda da richiamare e fornire il contesto dell'evento in formato JSON come parametri personalizzati utilizzabili da Lambda.

**Per creare un punto di accesso Lambda per oggetti S3**

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel riquadro di navigazione sinistro, scegli **Punti di accesso Lambda dell'oggetto**.

1. Nella pagina **Object Lambda Access Points** (Punti di accesso Object Lambda), scegli **Create Object Lambda Access Point** (Crea punto di accesso Object Lambda).

1. In **Nome del punto di accesso per le espressioni Lambda dell'oggetto** immetti il nome che desideri utilizzare per il punto di accesso Lambda per oggetti (per esempio, **tutorial-object-lambda-accesspoint**). 

1. Per **Punto di accesso di supporto**, immetti o cerca il punto di accesso standard creato al [punto 3](#ol-upper-step3) (ad esempio, **tutorial-access-point**), quindi seleziona **Scegli punto di accesso di supporto**. 

1. Per **S3 APIs**, per recuperare gli oggetti dal bucket S3 per l'elaborazione della funzione Lambda, seleziona. **GetObject**

1. In **Invoke Lambda function (Chiama una funzione Lambda)** per questo tutorial puoi scegliere una delle due opzioni seguenti. 
   + Seleziona **Scegli tra le funzioni nel tuo account**, dopodiché scegli la funzione Lambda creata nella [Fase 4](#ol-upper-step4) (ad esempio, **tutorial-object-lambda-function**) dall’elenco a discesa **Funzione Lambda**.
   + Scegli **Inserisci ARN**, quindi inserisci il nome della risorsa Amazon (ARN) della funzione Lambda creata nella [Fase 4](#ol-upper-step4).

1. In **Lambda function version (Versione delle funzioni Lambda)**, scegli **\$1LATEST** (l'ultima versione della funzione Lambda creata nella [Fase 4](#ol-upper-step4)).

1. (Facoltativo) Se hai bisogno che la tua funzione Lambda riconosca ed elabori le richieste GET con intestazioni con intervalli e numeri di parte, seleziona **Lambda function supports requests using range (La funzione Lambda supporta le richieste che utilizzano l'intervallo)** e **Lambda function supports requests using part numbers (La funzione Lambda supporta le richieste che utilizzano numeri di parte)**. Altrimenti, deseleziona queste due caselle di controllo.

   Per ulteriori informazioni sull'utilizzo di intervalli o numeri di parte con Lambda per oggetti S3, consulta [Utilizzo delle intestazioni Range e partNumber](range-get-olap.md).

1. (Facoltativo) In **Payload - *optional* (Payload - facoltativo)**, aggiungi il testo JSON per fornire alla tua funzione Lambda ulteriori informazioni.

   Un payload è un testo JSON opzionale che puoi fornire alla tua funzione Lambda come input per tutte le chiamate provenienti da uno specifico punto di accesso Lambda per oggetti S3. Per personalizzare il comportamento di più punti di accesso Lambda per oggetti che invocano la stessa funzione Lambda, puoi configurare i payload con parametri diversi, estendendo così la flessibilità della funzione stessa.

   Per ulteriori informazioni sul payload, consulta [Formato e utilizzo del contesto degli eventi](olap-event-context.md).

1. (Facoltativo) In **Parametri di richiesta - *facoltativo***, scegli **Disabilita** o **Abilita** per aggiungere il monitoraggio Amazon S3 al punto di accesso Lambda per oggetti. Le metriche delle richieste vengono fatturate alla tariffa standard di Amazon CloudWatch . Per ulteriori informazioni, consultare [Prezzi di CloudWatch](https://aws.amazon.com/cloudwatch/pricing/).

1. In **Policy del punto di accesso per le espressioni Lambda dell'oggetto - *opzionale*** mantieni l'impostazione predefinita. 

   (Facoltativo) Puoi impostare una policy delle risorse. Questa policy delle risorse fornisce all'API `GetObject` l'autorizzazione per utilizzare il punto di accesso Lambda per oggetti specificato.

1. Mantieni le impostazioni rimanenti sui valori predefiniti, quindi scegli **Crea punto di accesso per le espressioni Lambda dell'oggetto**.

## Fase 7: Visualizzazione dei dati trasformati
<a name="ol-upper-step7"></a>

S3 Object Lambda è ora pronto a trasformare i tuoi dati per il tuo caso d'uso. In questo tutorial, S3 Object Lambda trasforma tutto il testo dell'oggetto in maiuscolo.

**Topics**
+ [

### Visualizzazione dei dati trasformati nel punto di accesso Lambda per oggetti S3
](#ol-upper-step7-check-data)
+ [

### Esegui uno script Python per stampare i dati originali e trasformati
](#ol-upper-step7-python-print)

### Visualizzazione dei dati trasformati nel punto di accesso Lambda per oggetti S3
<a name="ol-upper-step7-check-data"></a>

Quando si richiede di recuperare un file attraverso il proprio punto di accesso Lambda per oggetti S3, si effettua una chiamata API `GetObject` a Lambda per oggetti S3. S3 Object Lambda richiama la funzione Lambda per trasformare i dati, dopodiché restituisce i dati trasformati come risposta alla chiamata API `GetObject` S3 standard.

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Object Lambda Access Points (Punti di accesso Object Lambda)**.

1. Nella pagina **Punti di accesso Lambda dell'oggetto** scegli il punto di accesso Lambda per oggetti S3 creato nella [Fase 6](#ol-upper-step6) (ad esempio, **tutorial-object-lambda-accesspoint**).

1. Nella scheda **Oggetti** del punto di accesso Lambda per oggetti S3, seleziona il file con lo stesso nome (ad esempio, `tutorial.txt`) di quello che hai caricato nel bucket S3 nella [Fase 2](#ol-upper-step2). 

   Questo file deve contenere tutti i dati trasformati.

1. Per visualizzare i dati trasformati, scegli **Open (Apri)** o **Download (Scarica)**.

### Esegui uno script Python per stampare i dati originali e trasformati
<a name="ol-upper-step7-python-print"></a>

Puoi utilizzare S3 Object Lambda con le tue applicazioni esistenti. A tale scopo, aggiorna la configurazione dell'applicazione in modo da utilizzare l'ARN del nuovo punto di accesso Lambda per oggetti S3 creato nella [Fase 6](#ol-upper-step6) per recuperare i dati da S3.

Il seguente script Python di esempio stampa sia i dati originali dal bucket S3 sia i dati trasformati dal punto di accesso Lambda per oggetti S3. 

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Object Lambda Access Points (Punti di accesso Object Lambda)**.

1. Nella pagina **Punti di accesso Lambda dell'oggetto** scegli il pulsante di opzione a sinistra del punto di accesso Lambda per oggetti S3 creato nella [Fase 6](#ol-upper-step6) (ad esempio, **tutorial-object-lambda-accesspoint**).

1. Scegli **Copy ARN** (Copia ARN).

1. Salva l'ARN per utilizzarlo in un secondo momento.

1. Scrivi uno script Python sul tuo computer locale per stampare sia i dati originali (ad esempio, `tutorial.txt`) dal tuo bucket S3 sia i dati trasformati (ad esempio, `tutorial.txt`) dal punto di accesso Lambda per oggetti S3. Puoi utilizzare il seguente script di esempio. 

   ```
   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. Salva il tuo script Python con un nome personalizzato (ad esempio, `tutorial_print.py`) nella cartella (ad esempio, `object-lambda`) che hai creato nella [Fase 4](#ol-upper-step4) sul computer locale.

1. Nel terminale locale, esegui il seguente comando dalla root della directory (ad esempio, `object-lambda`) che hai creato nella [Fase 4](#ol-upper-step4).

   ```
   python3 tutorial_print.py
   ```

   Dovresti vedere sia i dati originali sia i dati trasformati (tutto il testo in maiuscolo) attraverso il terminale. Per esempio l'output visualizzato sarà simile al testo seguente.

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

## Fase 8: Pulizia
<a name="ol-upper-step8"></a>

Se hai trasformato i dati attraverso S3 Object Lambda solo come esercizio di apprendimento, elimina le risorse AWS che hai allocato per non accumulare più addebiti. 

**Topics**
+ [

### Eliminazione del punto di accesso Lambda per oggetti
](#ol-upper-step8-delete-olap)
+ [

### Eliminazione del punto di accesso S3
](#ol-upper-step8-delete-ap)
+ [

### Eliminazione del ruolo di esecuzione per la funzione Lambda
](#ol-upper-step8-delete-lambda-role)
+ [

### Eliminazione della funzione Lambda
](#ol-upper-step8-delete-lambda-function)
+ [

### Elimina il gruppo di CloudWatch log
](#ol-upper-step8-delete-cloudwatch)
+ [

### Eliminazione del file originale nel bucket S3 di origine
](#ol-upper-step8-delete-file)
+ [

### Eliminazione del bucket S3 di origine
](#ol-upper-step8-delete-bucket)
+ [

### Eliminazione dell'utente IAM
](#ol-upper-step8-delete-user)

### Eliminazione del punto di accesso Lambda per oggetti
<a name="ol-upper-step8-delete-olap"></a>

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Object Lambda Access Points (Punti di accesso Object Lambda)**.

1. Nella pagina **Punti di accesso Lambda dell'oggetto** scegli il pulsante di opzione a sinistra del punto di accesso Lambda per oggetti S3 creato nella [Fase 6](#ol-upper-step6) (ad esempio, **tutorial-object-lambda-accesspoint**).

1. Scegli **Elimina**.

1. Conferma di voler eliminare il punto di accesso Lambda per oggetti inserendone il nome nel campo di testo che viene visualizzato, quindi scegli **Elimina**.

### Eliminazione del punto di accesso S3
<a name="ol-upper-step8-delete-ap"></a>

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Access Points (Punti di accesso)**.

1. Passa al punto di accesso creato nella [Fase 3](#ol-upper-step3) (ad esempio, **tutorial-access-point**), quindi scegli il pulsante di opzione accanto al nome del punto di accesso.

1. Scegli **Elimina**.

1. Conferma di voler eliminare il punto di accesso inserendone il nome nel campo di testo che viene visualizzato, quindi scegli **Delete (Elimina)**.

### Eliminazione del ruolo di esecuzione per la funzione Lambda
<a name="ol-upper-step8-delete-lambda-role"></a>

1. Accedi a Console di gestione AWS e apri la AWS Lambda console all'indirizzo [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Nel pannello di navigazione a sinistra, scegli **Functions (Funzioni)**.

1. Scegli la funzione creata nella [Fase 4](#ol-upper-step4) (ad esempio, **tutorial-object-lambda-function**).

1. Nella pagina dei dettagli della funzione Lambda, scegli la scheda **Configuration (Configurazione)**, quindi scegli **Permissions (Autorizzazioni)** nel pannello di navigazione a sinistra. 

1. In **Execution role (Ruolo di esecuzione)** scegli il collegamento **Role Name (Nome ruolo)**. Si apre la console IAM.

1. Nella pagina **Summary (Riepilogo)** della console IAM del ruolo di esecuzione della funzione Lambda, scegli **Delete role (Elimina ruolo)**.

1. Nella finestra di dialogo **Delete role (Elimina ruolo)**, scegli **Yes, Delete (Sì, elimina)**.

### Eliminazione della funzione Lambda
<a name="ol-upper-step8-delete-lambda-function"></a>

1. Nella AWS Lambda console all'indirizzo [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/), scegli **Funzioni** nel riquadro di navigazione a sinistra. 

1. Seleziona la casella di controllo a sinistra del nome della funzione creata nella [Fase 4](#ol-upper-step4) (ad esempio, **tutorial-object-lambda-function**).

1. Scegli **Azioni**, quindi **Elimina**.

1. Nella finestra di dialogo **Delete function (Elimina funzione)**, scegli **Delete (Elimina)**.

### Elimina il gruppo di CloudWatch log
<a name="ol-upper-step8-delete-cloudwatch"></a>

1. Apri la CloudWatch console all'indirizzo [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Nel pannello di navigazione a sinistra, scegli **Log groups (Gruppi di log)**.

1. Individua il gruppo di log il cui nome termina con la funzione Lambda creata nella [Fase 4](#ol-upper-step4)( ad esempio, **tutorial-object-lambda-function**).

1. Seleziona la casella di controllo a sinistra del nome del gruppo di registri.

1. Scegli **Actions (Operazioni)**, quindi scegli **Delete log group(s) (Elimina gruppi di log)**.

1. Nella finestra di dialogo **Delete log group(s) (Elimina gruppo/i di log)** scegli **Delete (Elimina)**.

### Eliminazione del file originale nel bucket S3 di origine
<a name="ol-upper-step8-delete-file"></a>

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Buckets (Bucket)**.

1. Nell'elenco **Bucket name (Nome bucket)** scegli il nome del bucket su cui hai caricato il file originale nella [Fase 2](#ol-upper-step2) (ad esempio, **tutorial-bucket**).

1. Seleziona la casella di controllo a sinistra del nome dell'oggetto da eliminare (ad esempio, `tutorial.txt`).

1. Scegli **Elimina**.

1. Nella pagina **Delete objects (Elimina oggetti)**, nella sezione **Permanently delete objects? (Eliminare definitivamente gli oggetti?)** conferma che desideri eliminare questo oggetto inserendo **permanently delete** nella casella di testo.

1. Scegliere **Delete objects (Elimina oggetti)**.

### Eliminazione del bucket S3 di origine
<a name="ol-upper-step8-delete-bucket"></a>

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Buckets (Bucket)**.

1. Nell'elenco **Buckets (Bucket)** seleziona il pulsante di opzione accanto al nome del bucket creato nella [Fase 1](#ol-upper-step1) (ad esempio, **tutorial-bucket**).

1. Scegli **Elimina**.

1. Nella pagina **Delete bucket (Elimina bucket)** conferma che desideri eliminare il bucket inserendone il nome nel campo di testo e quindi scegli **Delete bucket (Elimina bucket)**.

### Eliminazione dell'utente IAM
<a name="ol-upper-step8-delete-user"></a>

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione a sinistra, scegli **Users (Utenti)**, quindi seleziona la casella di controllo accanto al nome utente che desideri eliminare.

1. Nella parte superiore della pagina, scegli **Delete (Elimina)**.

1. Nella sezione **Elimina*user name*?** finestra di dialogo, inserisci il nome utente nel campo di immissione del testo per confermare l'eliminazione dell'utente. Scegli **Elimina**.

## Fasi successive
<a name="ol-upper-next-steps"></a>

Dopo aver completato questo tutorial, puoi personalizzare la funzione Lambda per il tuo caso d'uso in modo da modificare i dati restituiti dalle richieste GET S3 standard.

Di seguito è riportato un elenco di casi d'uso comuni per S3 Object Lambda:
+ Mascheramento dei dati sensibili per la sicurezza e la conformità.

  Per ulteriori informazioni, consulta [Tutorial: rilevamento e oscuramento dei dati PII con S3 Object Lambda e Amazon Comprehend](tutorial-s3-object-lambda-redact-pii.md).
+ Filtraggio di determinate righe di dati per fornire informazioni specifiche.
+ Arricchimento dei dati con informazioni provenienti da altri servizi o database.
+ Conversione tra formati di dati, come la conversione di XML in JSON per la compatibilità delle applicazioni.
+ Compressione o decompressione dei file durante il download.
+ Ridimensionamento delle immagini e creazione della filigrana.

  Per ulteriori informazioni, consulta [Tutorial: utilizzo di S3 Object Lambda per aggiungere filigrane alle immagini in modo dinamico man mano che vengono recuperate](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).
+ Implementazione di regole di autorizzazione personalizzate per accedere ai dati.

Per ulteriori informazioni su S3 Object Lambda, consulta [Trasformazione di oggetti con S3 Object Lambda](transforming-objects.md).

# Tutorial: rilevamento e oscuramento dei dati PII con S3 Object Lambda e Amazon Comprehend
<a name="tutorial-s3-object-lambda-redact-pii"></a>

**Nota**  
A partire dal 7 novembre 2025, S3 Object Lambda è disponibile solo per i clienti esistenti che attualmente utilizzano il servizio e per alcuni AWS partner Partner Network (APN). Per funzionalità simili a Lambda per oggetti S3, consulta [Modifica della disponibilità di Lambda per oggetti Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Quando utilizzi Amazon S3 per set di dati condivisi per l'accesso di più applicazioni e utenti, è importante limitare le informazioni privilegiate, ad esempio le informazioni personali di identificazione (PII), solo alle entità autorizzate. Ad esempio, quando un'applicazione di marketing utilizza alcuni dati contenenti PII, in primo luogo potrebbe essere necessario mascherare i dati PII per soddisfare i requisiti di privacy dei dati. Inoltre, quando un'applicazione di analisi dei dati utilizza un set di dati di inventario con ordine di produzione, in primo luogo potrebbe essere necessario oscurare le informazioni della carta di credito del cliente per evitare perdite di dati non intenzionali.

Con [S3 Object Lambda](https://aws.amazon.com/s3/features/object-lambda) e una funzione AWS Lambda precostituita basata su Amazon Comprehend, puoi proteggere i dati PII recuperati da S3 prima di restituirli a un'applicazione. Nello specifico, puoi utilizzare la [funzione Lambda](https://aws.amazon.com/lambda/) precostituita come funzione di oscuramento e allegarla a un punto di accesso Lambda per oggetti S3. Quando un’applicazione (ad esempio un’applicazione di analisi) invia [richieste GET S3 standard](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html), queste richieste effettuate tramite il punto di accesso Lambda per oggetti S3 invocano la funzione Lambda di oscuramento predefinita per rilevare e oscurare i dati PII recuperati da un’origine dati sottostante attraverso un punto di accesso S3 di supporto. Quindi, il punto di accesso Lambda per oggetti S3 restituisce il risultato oscurato all'applicazione.

![\[Questo è un diagramma del flusso di lavoro S3 Object Lambda.\]](http://docs.aws.amazon.com/it_it/AmazonS3/latest/userguide/images/ol-comprehend-image-global.png)


Nel processo, la funzione Lambda precostituita utilizza [Amazon Comprehend,](https://aws.amazon.com/comprehend/) un servizio di elaborazione del linguaggio naturale (NLP, Natural Language Processing), per acquisire variazioni nel modo in cui le PII sono rappresentate, indipendentemente dall'esistenza di PII nel testo (ad esempio in numeri o come combinazione di parole e numeri). Amazon Comprehend può anche utilizzare il contesto del testo per capire se un numero di 4 cifre è un PIN, gli ultimi quattro numeri di un numero di previdenza sociale (SSN) o un anno. Amazon Comprehend elabora qualsiasi file di testo in formato UTF-8 e può proteggere le PII su larga scala senza compromettere la precisione. Per ulteriori informazioni, consulta [Cos'è Amazon Comprehend?](https://docs.aws.amazon.com/comprehend/latest/dg/what-is.html) nella *Guida per Developer di Amazon Comprehend*.

**Obiettivo**  
In questo tutorial, imparerai a utilizzare S3 Object Lambda con la funzione Lambda precostituita `ComprehendPiiRedactionS3ObjectLambda`. Questa funzione utilizza Amazon Comprehend per rilevare entità PII. Oscurare quindi queste entità sostituendole con asterischi. Oscurando le PII, si nascondono i dati sensibili, cosa che può contribuire alla sicurezza e alla conformità.

Imparerai anche a usare e configurare una AWS Lambda funzione predefinita per lavorare insieme [AWS Serverless Application Repository](https://aws.amazon.com/serverless/serverlessrepo/)a S3 Object Lambda per una facile implementazione. 

**Topics**
+ [

## Prerequisiti: creazione di un utente IAM con autorizzazioni
](#ol-pii-prerequisites)
+ [

## Fase 1: Creazione di un bucket S3
](#ol-pii-step1)
+ [

## Fase 2: Caricamento di un file nel bucket S3
](#ol-pii-step2)
+ [

## Fase 3: Creazione di un punto di accesso S3
](#ol-pii-step3)
+ [

## Fase 4: Configurazione e implementazione di una funzione Lambda precostituita
](#ol-pii-step4)
+ [

## Fase 5: Creazione di un punto di accesso Lambda per oggetti S3
](#ol-pii-step5)
+ [

## Fase 6: Utilizzo del punto di accesso Lambda per oggetti S3 per recuperare il file oscurato
](#ol-pii-step6)
+ [

## Fase 7: pulire
](#ol-pii-step7)
+ [

## Fasi successive
](#ol-pii-next-steps)

## Prerequisiti: creazione di un utente IAM con autorizzazioni
<a name="ol-pii-prerequisites"></a>

Prima di iniziare questo tutorial, devi disporre di un AWS account a cui puoi accedere come AWS Identity and Access Management utente (utente IAM) con le autorizzazioni corrette.

Puoi creare un utente IAM per il tutorial. Per completare questo tutorial, l'utente IAM deve allegare le seguenti politiche IAM per accedere alle AWS risorse pertinenti ed eseguire azioni specifiche. 

**Nota**  
Per semplicità, questo tutorial crea e utilizza un utente IAM. Dopo aver completato il tutorial, ricordati di [Eliminazione dell'utente IAM](#ol-pii-step8-delete-user). Per l'uso in produzione, consigliamo di seguire le [best practice di sicurezza in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) disponibili nella *Guida per l'utente di IAM*. Come best practice, richiedi agli utenti di utilizzare la federazione con un gestore dell'identità digitale per accedere a AWS utilizzando credenziali temporanee. Un'ulteriore suggerimento derivante dalle best practice è richiedere ai carichi di lavoro di utilizzare credenziali temporanee con ruoli IAM per l'accesso ad AWS. Per ulteriori informazioni sull'utilizzo AWS IAM Identity Center per creare utenti con credenziali temporanee, consulta Guida [introduttiva](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) nella *Guida per l'AWS IAM Identity Center utente*.   
Per semplicità, questo tutorial utilizza policy di accesso completo. Per l'utilizzo in produzione, è consigliabile invece concedere solo le autorizzazioni minime necessarie per il caso d'uso, in conformità con le [best practice in fatto di sicurezza](security-best-practices.md#security-best-practices-prevent).

Il tuo utente IAM richiede le seguenti politiche AWS gestite:
+ [AmazonS3 FullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonS3FullAccess$jsonEditor): concede le autorizzazioni per tutte le azioni di Amazon S3, incluse le autorizzazioni per creare e utilizzare un punto di accesso Object Lambda. 
+ [AWSLambda\$1FullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSLambda_FullAccess$jsonEditor)— Concede le autorizzazioni per tutte le azioni Lambda. 
+ [AWSCloudFormationFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AWSCloudFormationFullAccess$serviceLevelSummary)— Concede le autorizzazioni per tutte le azioni. AWS CloudFormation 
+ [IAMFullAccesso](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/IAMFullAccess$jsonEditor): concede le autorizzazioni a tutte le azioni IAM. 
+ [IAMAccessAnalyzerReadOnlyAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/IAMAccessAnalyzerReadOnlyAccess$jsonEditor)— Concede le autorizzazioni per leggere tutte le informazioni di accesso fornite da IAM Access Analyzer. 

Puoi allegare direttamente queste policy esistenti durante la creazione di un utente IAM. Per ulteriori informazioni su come creare un utente IAM, consulta [Creazione di utenti IAM (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) nella *Guida per l'utente di IAM*.

Inoltre, l'utente IAM richiede una policy gestita dal cliente. Per concedere all'utente IAM le autorizzazioni per tutte le AWS Serverless Application Repository risorse e le azioni, devi creare una policy IAM e allegarla all'utente IAM.

**Per creare e allegare una policy IAM a un utente IAM**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione sinistro, scegli **Policy**.

1. Scegli **Crea policy**. 

1. Nella scheda **Visual editor** (Editor visivo), in **Service** (Servizio), seleziona **Choose a Service** (Scegli un servizio). Poi, scegli **Serverless Application Repository**. 

1. In **Actions** (Operazioni), sotto **Manual actions (Operazioni manuali)**, seleziona **All Serverless Application Repository actions (serverlessrepo:\$1)** (Tutte le operazioni Serverless Application Repository (serverlessrepo:\$1)) per questo tutorial.

   Come best practice di sicurezza, dovresti concedere le autorizzazioni solo alle operazioni e alle risorse necessarie all'utente, in base al tuo caso d'uso. Per ulteriori informazioni, consulta [Best Practice di sicurezza in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) nella *Guida per l'utente di IAM*.

1. In **Resources** (Risorse), scegli **All resources** (Tutte le risorse) per questo tutorial.

   Come best practice, è consigliabile definire le autorizzazioni solo per risorse specifiche in account specifici. In alternativa, puoi concedere un privilegio minimo utilizzando le chiavi di condizione. Per ulteriori informazioni, consulta [Assegnare il privilegio minimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) nella *Guida per l'utente di IAM*.

1. Scegliere **Next: Tags (Successivo: Tag)**.

1. Scegliere **Next:Review (Successivo: Rivedi)**.

1. Nella pagina **Esamina la policy** digita i valori per **Nome** (ad esempio, **tutorial-serverless-application-repository**) e **Descrizione** (facoltativa) per la policy che stai creando. Esaminare il riepilogo della policy per assicurarsi di aver concesso le autorizzazioni corrette e selezionare **Create policy (Crea policy)** per salvare la nuova policy.

1. Nel riquadro di navigazione a sinistra, seleziona **Users (Utenti)**. Quindi, scegli l'utente IAM per questo tutorial. 

1. Nella pagina **Summary** (Riepilogo) dell'utente scelto, scegli la scheda **Permissions** (Autorizzazioni), quindi scegli **Add permissions** (Aggiungi autorizzazioni).

1. In **Grant permissions** (Concedi autorizzazioni) scegli **Attach existing policies directly** (Collega direttamente le policy esistenti).

1. Seleziona la casella di controllo accanto alla policy creata (ad esempio, **tutorial-serverless-application-repository**) e quindi scegli **Next: Review **(Successivo: Rivedi). 

1. In **Permissions summary** (Riepilogo delle autorizzazioni) esaminare il riepilogo per accertarti di aver allegato la policy desiderata. Quindi seleziona **Add permissions** (Aggiungi autorizzazioni).

## Fase 1: Creazione di un bucket S3
<a name="ol-pii-step1"></a>

Crea un bucket per archiviare i dati originali che intendi trasformare. 

**Nota**  
I punti di accesso possono essere collegati a un'altra fonte di dati, come un volume Amazon FSx for OpenZFS, tuttavia questo tutorial utilizza un punto di accesso di supporto collegato a un bucket S3.

**Per creare un bucket**

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Buckets** (Bucket).

1. Scegliere **Create bucket (Crea bucket)**. 

   Viene visualizzata la pagina **Create bucket (Crea bucket)**.

1. In **Bucket name** (Nome bucket), inserisci un nome per il bucket (ad esempio **tutorial-bucket**). 

   Per ulteriori informazioni sulle regole di denominazione del bucket in Amazon S3, consulta [Regole di denominazione dei bucket per uso generico](bucketnamingrules.md).

1. Per **Regione**, scegli la Regione AWS dove desideri che il bucket risieda. 

   Per ulteriori informazioni sulla Regione del bucket, consulta [Panoramica dei bucket per uso generico](UsingBucket.md).

1. In **Block Public Access settings for this bucket** (Blocca le impostazioni di accesso pubblico per questo bucket), mantieni le impostazioni predefinite (è abilitato **Block *all *public access** (Blocca tutto l'accesso pubblico). 

   È consigliabile di lasciare abilitate tutte le impostazioni di blocco dell'accesso pubblico, a meno che non abbia bisogno di disattivarne una o più per il caso d'uso. Per ulteriori informazioni sul blocco dell'accesso pubblico, consulta [Blocco dell'accesso pubblico allo storage Amazon S3](access-control-block-public-access.md).

1. Mantieni le impostazioni rimanenti impostate sui valori di default. 

   (Facoltativo) Se desideri configurare ulteriori impostazioni del bucket per il tuo caso d'uso specifico, consulta [Creazione di un bucket per uso generico](create-bucket-overview.md).

1. Seleziona **Crea bucket**.

## Fase 2: Caricamento di un file nel bucket S3
<a name="ol-pii-step2"></a>

Carica un file di testo contenente dati PII noti di vario tipo, come nomi, informazioni bancarie, numeri di telefono e SSNs, nel bucket S3, come dati originali dai quali eliminerai le PII più avanti in questo tutorial. 

Ad esempio, puoi caricare il seguente file `tutorial.txt`. Questo è un esempio di file di input di 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.
```

**Per caricare un file in un bucket**

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Buckets** (Bucket).

1. Nell'elenco **Buckets** (Bucket) scegli il nome del bucket creato nella [Fase 1](#ol-pii-step1) (ad esempio,**tutorial-bucket**) in cui caricare il file.

1. Nella scheda **Oggetti** del bucket seleziona **Carica**.

1. Nella pagina **Upload** (Caricamento), sotto **Files and Folders** (File e cartelle) scegli **Add Files** (Aggiungi file).

1. Seleziona un file da caricare, quindi scegli **Apri**. Ad esempio, puoi caricare il file di esempio `tutorial.txt` menzionato in precedenza.

1. Scegli **Carica**.

## Fase 3: Creazione di un punto di accesso S3
<a name="ol-pii-step3"></a>

Per utilizzare un punto di accesso Lambda per oggetti S3 per accedere e trasformare i dati originali, devi creare un punto di accesso S3 e associarlo al bucket S3 creato nella [Fase 1](#ol-pii-step1). Il punto di accesso deve trovarsi nello stesso punto in cui Regione AWS si trovano gli oggetti che desideri trasformare.

Più avanti in questo tutorial, utilizzerai questo punto di accesso come punto di accesso di supporto per il tuo punto di accesso Lambda per oggetti. 

**Per creare un punto di accesso**

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Access Points** (Punti di accesso).

1. Nella pagina **Punto di accesso**, scegli **Crea punto di accesso**.

1. Nel campo **Nome del punto di accesso**, inserisci il nome (ad esempio, **tutorial-pii-access-point**) del punto di accesso.

   Per ulteriori informazioni sulla denominazione dei punti di accesso, consulta [Regole di denominazione dei punti di accesso](access-points-restrictions-limitations-naming-rules.md#access-points-names).

1. Nel campo **Origine dati** inserisci il nome del bucket creato nella [Fase 1](#ol-pii-step1) (ad esempio, **tutorial-bucket**). S3 allega quindi il punto di accesso a questo bucket. 

   (Facoltativo) Puoi scegliere **Browse S3** (Sfoglia S3) per sfogliare e cercare i bucket nell'account. Se scegli **Browse S3** (Sfoglia S3), scegli il bucket desiderato e scegli **Choose path** (Scegli percorso) per popolare il campo **Bucket name** (Nome bucket) con il nome del bucket.

1. In **Network origin** (Origine rete), scegli **Internet**. 

   Per ulteriori informazioni sulle origini della rete per i punti di accesso, consulta [Creazione di access point limitati a un cloud privato virtuale](access-points-vpc.md).

1. Tutte le impostazioni di blocco dell'accesso pubblico sono abilitate per impostazione predefinita per il punto di accesso. È consigliabile lasciare abilitato **Block *all* public access** (Blocca tutto l'accesso pubblico). Per ulteriori informazioni, consulta [Gestione dell’accesso pubblico ai punti di accesso per bucket per uso generico](access-points-bpa-settings.md).

1. Per tutte le altre impostazioni del punto di accesso, mantieni i valori di default.

   (Facoltativo) Puoi modificare le impostazioni del punto di accesso per supportare il caso d'uso. Per questo tutorial, ti consigliamo di mantenere le impostazioni di default. 

   (Facoltativo) Se è necessario gestire l'accesso al punto di accesso, puoi specificare una policy per il punto di accesso. Per ulteriori informazioni, consulta [Esempi di policy per i punti di accesso](access-points-policies.md#access-points-policy-examples). 

1. Scegli **Crea punto di accesso**.

## Fase 4: Configurazione e implementazione di una funzione Lambda precostituita
<a name="ol-pii-step4"></a>

Per oscurare i dati PII, configura e implementa la funzione AWS Lambda precostituita `ComprehendPiiRedactionS3ObjectLambda` per l'utilizzo con il punto di accesso Lambda per oggetti S3.

**Per configurare e implementare la funzione Lambda**

1. Accedi a Console di gestione AWS e visualizza 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)funzione in. AWS Serverless Application Repository

1. In **Application settings** (Impostazioni applicazioni), sotto **Application name** (Nome applicazione), mantieni il valore di default (`ComprehendPiiRedactionS3ObjectLambda`) per questo tutorial.

   (Facoltativo) Puoi inserire il nome che desideri assegnare a questa applicazione. Puoi eseguire questa operazione se prevedi di configurare più funzioni Lambda per esigenze di accesso diverse per lo stesso set di dati condiviso.

1. Per **MaskCharacter**, mantieni il valore predefinito (`*`). Il carattere maschera sostituisce ogni carattere nell'entità PII oscurata. 

1. Perché **MaskMode**, mantieni il valore predefinito (**MASK**). Il **MaskMode**valore specifica se l'entità PII viene oscurata con il `MASK` carattere o il valore. `PII_ENTITY_TYPE`

1. **Per oscurare i tipi di dati specificati, for **PiiEntityTypes**, mantieni il valore predefinito ALL.** Il **PiiEntityTypes**valore specifica i tipi di entità PII da considerare per la redazione. 

   Per ulteriori informazioni sull'elenco dei tipi di entità PII supportati, vedi [Detect Personally Identifiable Information (PII)](https://docs.aws.amazon.com/comprehend/latest/dg/how-pii.html) nella *Guida per Developer di Amazon Comprehend*.

1. Mantieni le impostazioni rimanenti impostate sui valori predefiniti.

   (Facoltativo) Se desideri configurare impostazioni aggiuntive per il caso d'uso specifico, consulta la sezione **File readme** sul lato sinistro della pagina.

1. Selezionare la casella di controllo accanto a **I acknowledge that this app creates custom IAM roles (Confermo che questa app crea ruoli IAM personalizzati)**.

1. Seleziona **Implementa**.

1. Nella pagina della nuova applicazione, sotto **Resources** (Risorse), scegli il **Logical ID (ID logico)** della funzione Lambda implementata per rivedere la funzione nella pagina della funzione Lambda.

## Fase 5: Creazione di un punto di accesso Lambda per oggetti S3
<a name="ol-pii-step5"></a>

Un punto di accesso Lambda per oggetti S3 offre la flessibilità di richiamare una funzione Lambda direttamente da una richiesta GET S3 in modo che la funzione possa oscurare i dati PII recuperati da un punto di accesso S3. Quando crei e configuri un punto di accesso Lambda per oggetti S3, devi specificare la funzione Lambda di oscuramento da richiamare e fornire il contesto dell'evento in formato JSON come parametri personalizzati utilizzabili da Lambda. 

Il contesto dell'evento fornisce informazioni relative alla richiesta eseguita nell'evento inviato da S3 Object Lambda a Lambda. Per ulteriori informazioni su tutti i campi nel contesto dell'evento, consulta [Formato e utilizzo del contesto degli eventi](olap-event-context.md).

**Per creare un punto di accesso Lambda per oggetti S3**

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel riquadro di navigazione sinistro, scegli **Punti di accesso Lambda dell'oggetto**.

1. Nella pagina **Object Lambda Access Points** (Punti di accesso Object Lambda), scegli **Create Object Lambda Access Point** (Crea punto di accesso Object Lambda).

1. In **Nome del punto di accesso per le espressioni Lambda dell'oggetto** immetti il nome che desideri utilizzare per il punto di accesso Lambda per oggetti (per esempio, **tutorial-pii-object-lambda-accesspoint**). 

1. Per **Punto di accesso di supporto**, immetti o cerca il punto di accesso standard creato al [punto 3](#ol-pii-step3) (ad esempio, **tutorial-pii-access-point**), quindi seleziona **Scegli punto di accesso di supporto**. 

1. Per **S3 APIs**, per recuperare gli oggetti dal bucket S3 per l'elaborazione della funzione Lambda, seleziona. **GetObject**

1. Per l'**invocazione della funzione Lambda**, si può scegliere una delle due opzioni seguenti per questa esercitazione. 
   + Seleziona **Scegli tra le funzioni nel tuo account**, e scegli la funzione Lambda implementata nella [Fase 4](#ol-pii-step4) (ad esempio, **serverlessrepo-ComprehendPiiRedactionS3ObjectLambda**) dall’elenco a discesa **Funzione Lambda**.
   + Scegli **Enter ARN (Inserisci ARN)**, quindi inserisci l'Amazon Resource Name (ARN) della funzione Lambda creata nella [Fase 4](#ol-pii-step4).

1. In **Lambda function version** (Versione delle funzioni Lambda), scegli **\$1LATEST** (l'ultima versione della funzione Lambda implementata nella [Fase 4](#ol-pii-step4)).

1. (Facoltativo) Se hai bisogno che la tua funzione Lambda riconosca ed elabori le richieste GET con intestazioni con intervalli e numeri di parte, seleziona **Lambda function supports requests using range** (La funzione Lambda supporta le richieste che utilizzano l'intervallo) e **Lambda function supports requests using part numbers** (La funzione Lambda supporta le richieste che utilizzano numeri di parte). Altrimenti, deseleziona queste due caselle di controllo.

   Per ulteriori informazioni sull'utilizzo di intervalli o numeri di parte con Lambda per oggetti S3, consulta [Utilizzo delle intestazioni Range e partNumber](range-get-olap.md).

1. (Facoltativo) In **Payload - *optional* (Payload - facoltativo)**, aggiungi il testo JSON per fornire alla tua funzione Lambda ulteriori informazioni.

   Un payload è un testo JSON opzionale che puoi fornire alla tua funzione Lambda come input per tutte le chiamate provenienti da uno specifico punto di accesso Lambda per oggetti S3. Per personalizzare il comportamento di più punti di accesso Lambda per oggetti che invocano la stessa funzione Lambda, puoi configurare i payload con parametri diversi, estendendo così la flessibilità della funzione stessa.

   Per ulteriori informazioni sul payload, consulta [Formato e utilizzo del contesto degli eventi](olap-event-context.md).

1. (Facoltativo) In **Parametri di richiesta - *facoltativo***, scegli **Disabilita** o **Abilita** per aggiungere il monitoraggio Amazon S3 al punto di accesso Lambda per oggetti. Le metriche delle richieste vengono fatturate alla tariffa standard di Amazon CloudWatch . Per ulteriori informazioni, consultare [Prezzi di CloudWatch](https://aws.amazon.com/cloudwatch/pricing/).

1. In **Policy del punto di accesso per le espressioni Lambda dell'oggetto - *opzionale*** mantieni l'impostazione predefinita. 

   (Facoltativo) Puoi impostare una policy delle risorse. Questa policy delle risorse fornisce all'API `GetObject` l'autorizzazione per utilizzare il punto di accesso Lambda per oggetti specificato.

1. Mantieni le impostazioni rimanenti sui valori di default, quindi scegli**Create Object Lambda Access Point (Crea punto di accesso Object Lambda)**.

## Fase 6: Utilizzo del punto di accesso Lambda per oggetti S3 per recuperare il file oscurato
<a name="ol-pii-step6"></a>

Ora, S3 Object Lambda è pronto a oscurare i dati PII dal file originale. 

**Per utilizzare il punto di accesso Lambda per oggetti S3 per recuperare il file oscurato**

Quando chiedi di recuperare un file tramite il punto di accesso Lambda per oggetti S3, esegui una chiamata API `GetObject` a Lambda per oggetti S3. S3 Object Lambda richiama la funzione Lambda per oscurare i dati PII e restituisce i dati trasformati come risposta alla chiamata API `GetObject` S3 standard.

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Object Lambda Access Points (Punti di accesso Object Lambda)**.

1. Nella pagina **Punti di accesso Lambda dell'oggetto** scegli il punto di accesso Lambda per oggetti S3 creato nella [Fase 5](#ol-pii-step5) (ad esempio, **tutorial-pii-object-lambda-accesspoint**).

1. Nella scheda **Oggetti** del punto di accesso Lambda per oggetti S3, seleziona il file con lo stesso nome (ad esempio, `tutorial.txt`) di quello che hai caricato nel bucket S3 nella [Fase 2](#ol-pii-step2). 

   Questo file deve contenere tutti i dati trasformati.

1. Per visualizzare i dati trasformati, scegli **Open (Apri)** o **Download (Scarica)**.

    Dovresti visualizzare il file oscurato, come mostrato nell'esempio seguente. 

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

## Fase 7: pulire
<a name="ol-pii-step7"></a>

Se hai oscurato i tuoi dati tramite S3 Object Lambda solo come esercizio di apprendimento, elimina le AWS risorse che hai allocato in modo da non incorrere più in costi. 

**Topics**
+ [

### Eliminazione del punto di accesso Lambda per oggetti
](#ol-pii-step8-delete-olap)
+ [

### Eliminazione del punto di accesso S3
](#ol-pii-step8-delete-ap)
+ [

### Eliminazione della funzione Lambda
](#ol-pii-step8-delete-lambda-function)
+ [

### Elimina il gruppo di CloudWatch log
](#ol-pii-step8-delete-cloudwatch)
+ [

### Eliminazione del file originale nel bucket S3 di origine
](#ol-pii-step8-delete-file)
+ [

### Eliminazione del bucket S3 di origine
](#ol-pii-step8-delete-bucket)
+ [

### Eliminazione del ruolo IAM per la funzione Lambda
](#ol-pii-step8-delete-lambda-role)
+ [

### Eliminazione dei criteri gestiti dal cliente per l'utente IAM
](#ol-pii-step8-delete-function-policy)
+ [

### Eliminazione dell'utente IAM
](#ol-pii-step8-delete-user)

### Eliminazione del punto di accesso Lambda per oggetti
<a name="ol-pii-step8-delete-olap"></a>

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Object Lambda Access Points (Punti di accesso Object Lambda)**.

1. Nella pagina **Punti di accesso Lambda dell'oggetto** scegli il pulsante di opzione a sinistra del punto di accesso Lambda per oggetti S3 creato nella [Fase 5](#ol-pii-step5) (ad esempio, **tutorial-pii-object-lambda-accesspoint**).

1. Scegli **Elimina**.

1. Conferma di voler eliminare il punto di accesso Lambda per oggetti inserendone il nome nel campo di testo che viene visualizzato, quindi scegli **Elimina**.

### Eliminazione del punto di accesso S3
<a name="ol-pii-step8-delete-ap"></a>

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Access Points (Punti di accesso)**.

1. Passa al punto di accesso creato nella [Fase 3](#ol-pii-step3) (ad esempio, **tutorial-pii-access-point**), quindi scegli il pulsante di opzione accanto al nome del punto di accesso.

1. Scegli **Elimina**.

1. Conferma di voler eliminare il punto di accesso inserendone il nome nel campo di testo che viene visualizzato, quindi scegli **Delete (Elimina)**.

### Eliminazione della funzione Lambda
<a name="ol-pii-step8-delete-lambda-function"></a>

1. Nella AWS Lambda console all'indirizzo [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/), scegli **Funzioni** nel riquadro di navigazione a sinistra. 

1. Scegli la funzione creata nella [Fase 4](#ol-pii-step4) (ad esempio, **serverlessrepo-ComprehendPiiRedactionS3ObjectLambda**).

1. Scegli **Azioni**, quindi **Elimina**.

1. Nella finestra di dialogo **Delete function (Elimina funzione)**, scegli **Delete (Elimina)**.

### Elimina il gruppo di CloudWatch log
<a name="ol-pii-step8-delete-cloudwatch"></a>

1. Apri la CloudWatch console all'indirizzo [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Nel pannello di navigazione a sinistra, scegli **Log groups (Gruppi di log)**.

1. Individua il gruppo di registri il cui nome termina con la funzione Lambda creata nella [Fase 4](#ol-pii-step4)( ad esempio, **serverlessrepo-ComprehendPiiRedactionS3ObjectLambda**).

1. Scegli **Actions (Operazioni)**, quindi scegli **Delete log group(s) (Elimina gruppi di registri)**.

1. Nella finestra di dialogo **Delete log group(s) (Elimina gruppo/i di log)** scegli **Delete (Elimina)**.

### Eliminazione del file originale nel bucket S3 di origine
<a name="ol-pii-step8-delete-file"></a>

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Buckets (Bucket)**.

1. Nell'elenco **Bucket name (Nome bucket)** scegli il nome del bucket su cui hai caricato il file originale nella [Fase 2](#ol-pii-step2) (ad esempio, **tutorial-bucket**).

1. Seleziona la casella di controllo a sinistra del nome dell'oggetto da eliminare (ad esempio, `tutorial.txt`).

1. Scegli **Elimina**.

1. Nella pagina **Delete objects (Elimina oggetti)**, nella sezione **Permanently delete objects? (Eliminare definitivamente gli oggetti?)** conferma che desideri eliminare questo oggetto inserendo **permanently delete** nella casella di testo.

1. Scegliere **Delete objects (Elimina oggetti)**.

### Eliminazione del bucket S3 di origine
<a name="ol-pii-step8-delete-bucket"></a>

1. Accedi a Console di gestione AWS e apri la console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Nel pannello di navigazione a sinistra, scegli **Buckets (Bucket)**.

1. Nell'elenco **Buckets (Bucket)** scegli il pulsante di opzione accanto al nome del bucket creato nella [Fase 1](#ol-pii-step1)(ad esempio,**tutorial-bucket**).

1. Scegli **Elimina**.

1. Nella pagina **Delete bucket (Elimina bucket)** conferma che desideri eliminare il bucket inserendone il nome nel campo di testo e quindi scegli **Delete bucket (Elimina bucket)**.

### Eliminazione del ruolo IAM per la funzione Lambda
<a name="ol-pii-step8-delete-lambda-role"></a>

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione a sinistra, scegli **Roles (Ruoli)**, quindi seleziona la casella di controllo accanto al nome del ruolo che desideri eliminare. Il nome del ruolo inizia con il nome della funzione Lambda implementata nella [Fase 4](#ol-pii-step4) (ad esempio, **serverlessrepo-ComprehendPiiRedactionS3ObjectLambda**).

1. Scegli **Elimina**.

1. Nella casella di dialogo **Delete (Elimina)**, inserisci il nome del ruolo nel campo di inserimento del testo per confermare l'eliminazione. Quindi, scegli **Elimina**.

### Eliminazione dei criteri gestiti dal cliente per l'utente IAM
<a name="ol-pii-step8-delete-function-policy"></a>

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione sinistro, scegli **Policy**.

1. Nella pagina **Policies (Policy)** inserisci il nome della policy gestita dal cliente creata nei [Prerequisiti](#ol-pii-prerequisites) (ad esempio, **tutorial-serverless-application-repository**) nella casella di ricerca per filtrare l'elenco di policy. Seleziona il pulsante di opzione accanto al nome della policy che desideri eliminare.

1. Scegli **Azioni**, quindi **Elimina**.

1. Conferma di voler eliminare questa policy inserendone il nome nel campo di testo che viene visualizzato, quindi scegli **Delete (Elimina)**.

### Eliminazione dell'utente IAM
<a name="ol-pii-step8-delete-user"></a>

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione a sinistra, scegli **Users (Utenti)**, quindi seleziona la casella di controllo accanto al nome utente che desideri eliminare.

1. Nella parte superiore della pagina, scegli **Delete (Elimina)**.

1. Nella sezione **Elimina*user name*?** finestra di dialogo, inserisci il nome utente nel campo di immissione del testo per confermare l'eliminazione dell'utente. Scegli **Elimina**.

## Fasi successive
<a name="ol-pii-next-steps"></a>

Dopo aver completato questo tutorial, puoi esplorare altri casi d'uso correlati:
+ Puoi creare più punti di accesso Lambda per oggetti S3 e abilitarli con funzioni Lambda precostituite configurate in modo diverso per oscurare specifici tipi di PII a seconda delle esigenze aziendali di chi accede ai dati. 

  Ogni tipo di utente assume un ruolo IAM e ha accesso solo a un punto di accesso Lambda per oggetti S3 (gestito tramite policy IAM). Quindi, collega ogni funzione Lambda `ComprehendPiiRedactionS3ObjectLambda` configurata per un diverso caso d'uso di oscuramento a un diverso punto di accesso Lambda per oggetti S3. Per ogni punto di accesso Lambda per oggetti S3, puoi disporre di un punto di accesso S3 di supporto per leggere i dati da un bucket S3 che archivia il set di dati condiviso. 

  Per ulteriori informazioni su come creare una policy di bucket S3 che consenta agli utenti di leggere dal bucket solo tramite i punti di accesso S3, consulta [Configurazione delle policy IAM per l'utilizzo degli access point](access-points-policies.md).

  Per ulteriori informazioni su come concedere a un utente l'autorizzazione per accedere alla funzione Lambda, al punto di accesso S3 e al punto di accesso Lambda per oggetti S3, consulta [Configurazione delle policy IAM per i punti di accesso Lambda per oggetti](olap-policies.md).
+ Puoi creare una funzione Lambda personalizzata e utilizzarla in S3 Object Lambda per soddisfare le tue esigenze specifiche relative ai dati.

  Ad esempio, per esplorare vari valori di dati, puoi utilizzare S3 Object Lambda e la funzione Lambda personalizzata che utilizza ulteriori [funzionalità di Amazon Comprehend](https://aws.amazon.com/comprehend/features/), come il riconoscimento delle entità, il riconoscimento delle frasi chiave, l'analisi del sentimento e la classificazione dei documenti, per elaborare i dati. Puoi utilizzare S3 Object Lambda insieme a [Amazon Comprehend Medical](https://aws.amazon.com/comprehend/medical/), un servizio di NLP idoneo per HIPAA, per analizzare ed estrarre i dati in modo contestuale.

  Per ulteriori informazioni su come trasformare i dati con S3 Object Lambda e sulla funzione Lambda personalizzata, consulta [Tutorial: trasformazione dei dati per l'applicazione con S3 Object Lambda](tutorial-s3-object-lambda-uppercase.md).

# Debug e risoluzione dei problemi di Lambda per oggetti S3
<a name="olap-debugging-lambda"></a>

**Nota**  
A partire dal 7 novembre 2025, S3 Object Lambda è disponibile solo per i clienti esistenti che attualmente utilizzano il servizio e per alcuni AWS partner Partner Network (APN). Per funzionalità simili a Lambda per oggetti S3, consulta [Modifica della disponibilità di Lambda per oggetti Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazons3-ol-change.html).

Le richieste ai punti di accesso Amazon S3 Object Lambda possono comportare una nuova risposta di errore quando si verificano problemi con l'invocazione o l'esecuzione della funzione Lambda. Questi errori seguono lo stesso formato degli errori Amazon S3 standard. Per informazioni sugli errori di S3 Object Lambda, consulta la sezione [Elenco dei codici di errore di S3 Object Lambda](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#S3ObjectLambdaErrorCodeList) nei *riferimenti all'API di Amazon Simple Storage Service*.

Per ulteriori informazioni sul debug generale delle funzioni Lambda, consulta [Monitoraggio e risoluzione dei problemi delle applicazioni Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html ) nella *Guida per gli sviluppatori di AWS Lambda *.

Per informazioni sugli errori standard di Amazon S3, consulta la sezione [Risposte agli errori](https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html) nei *riferimenti all'API di Amazon Simple Storage Service*.

Puoi abilitare i parametri delle richieste in Amazon CloudWatch per i tuoi access point Object Lambda. Queste metriche possono essere utilizzate per monitorare le prestazioni operative del punto di accesso. È possibile abilitare le metriche delle richieste durante o dopo la creazione del punto di accesso Lambda per oggetti. Per ulteriori informazioni, consulta [Metriche della richiesta S3 Object Lambda in CloudWatch](metrics-dimensions.md#olap-cloudwatch-metrics).

Puoi abilitare gli eventi di dati AWS CloudTrail per ottenere una registrazione più granulare sulle richieste effettuate ai punti di accesso Lambda per oggetti. Per ulteriori informazioni, consulta [Registrazione di eventi di dati per i percorsi](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html) nella *Guida per l'utente di AWS CloudTrail *.

Per i tutorial su S3 Object Lambda, consulta quanto segue:
+ [Tutorial: trasformazione dei dati per l'applicazione con S3 Object Lambda](tutorial-s3-object-lambda-uppercase.md)
+ [Tutorial: rilevamento e oscuramento dei dati PII con S3 Object Lambda e Amazon Comprehend](tutorial-s3-object-lambda-redact-pii.md)
+ [Tutorial: utilizzo di S3 Object Lambda per aggiungere filigrane alle immagini in modo dinamico man mano che vengono recuperate](https://aws.amazon.com/getting-started/hands-on/amazon-s3-object-lambda-to-dynamically-watermark-images/?ref=docs_gateway/amazons3/transforming-objects.html)

Per ulteriori informazioni sui punti di accesso standard, consulta la sezione [Gestione dell'accesso a set di dati condivisi con punti di accesso](access-points.md). 

Per informazioni sull'utilizzo di bucket, consulta [Panoramica dei bucket per uso generico](UsingBucket.md). Per informazioni sull'utilizzo di oggetti, consulta [Panoramica degli oggetti di Amazon S3](UsingObjects.md).