

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

# Richiamo di una funzione Lambda in modo sincrono
<a name="invocation-async"></a>

Diversi Servizi AWS, come Amazon Simple Storage Service (Amazon S3) e Amazon Simple Notification Service (Amazon SNS), chiamano le funzioni in modo asincrono per elaborare gli eventi. Puoi anche richiamare una funzione Lambda in modo asincrono utilizzando la AWS Command Line Interface (AWS CLI) o uno degli SDK AWS. Quando si richiama una funzione in modo asincrono, non si attende una risposta dal codice della funzione. Si passa l'evento a Lambda e Lambda si occupa del resto. È possibile configurare il modo in cui Lambda gestisce gli errori e invia i record di invocazione a una risorsa a valle come Amazon Simple Queue Service (Amazon SQS) o Amazon EventBridge (EventBridge) per concatenare i componenti dell'applicazione.

Il seguente diagramma mostra i client che richiamano una funzione Lambda in modo asincrono. Lambda accoda gli eventi prima di inviarli alla funzione.

![\[\]](http://docs.aws.amazon.com/it_it/lambda/latest/dg/images/features-async.png)


Per l'invocazione asincrona, Lambda inserisce l'evento in una coda e restituisce una risposta di esito positivo senza ulteriori informazioni. Un processo separato legge gli eventi dalla coda ed esegue la funzione.

 Per richiamare una funzione Lambda in modo asincrono utilizzando la AWS Command Line Interface (AWS CLI) o uno degli SDK AWS, imposta il parametro [InvocationType](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html#lambda-Invoke-request-InvocationType) su `Event`. L'esempio di codice seguente mostra un comando AWS CLI per invocare una funzione.

```
aws lambda invoke \
  --function-name my-function  \
  --invocation-type Event \
  --cli-binary-format raw-in-base64-out \
  --payload '{ "key": "value" }' response.json
```

Verrà visualizzato l'output seguente:

```
{
    "StatusCode": 202
}
```

L'opzione **cli-binary-format** è necessaria se si utilizza la versione 2 della AWS CLI. Per rendere questa impostazione come predefinita, esegui `aws configure set cli-binary-format raw-in-base64-out`. Per ulteriori informazioni, consulta la pagina [AWS CLI supported global command line options](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html#cli-configure-options-list) nella *Guida per l'utente di AWS Command Line Interface versione 2*.

Il file di output (`response.json`) non contiene informazioni, ma è comunque creato quando si esegue il comando. Se Lambda non è in grado di aggiungere l'evento alla coda, il messaggio di errore viene visualizzato nell'output del comando.

# In che modo Lambda gestisce gli errori e i nuovi tentativi con una invocazione asincrona
<a name="invocation-async-error-handling"></a>

Lambda gestisce la coda di eventi asincroni della funzione ed effettua nuovi tentativi in caso di errori. Se la funzione restituisce un errore, per impostazione predefinita Lambda prova a eseguirla altre due volte, con un minuto di attesa tra i primi due tentativi e due minuti tra il secondo e il terzo. Gli errori di funzione includono gli errori restituiti dal codice della funzione e gli errori restituiti dal runtime della funzione, ad esempio timeout.

Se la funzione non dispone di sufficiente concorrenza per elaborare tutti gli eventi, ulteriori richieste saranno sottoposte a throttling. Per gli errori di limitazione (429) e gli errori di sistema (serie 500), Lambda restituisce l'evento alla coda e prova a eseguire nuovamente la funzione per un massimo di 6 ore. L'intervallo tra i tentativi aumenta esponenzialmente da 1 secondo dopo il primo tentativo a un massimo di 5 minuti. Se la coda contiene molte voci, Lambda aumenta l'intervallo dei tentativi e riduce la velocità con cui legge gli eventi dalla coda.

Anche se la funzione non restituisce un errore, è possibile che riceva lo stesso evento da Lambda più volte perché la coda stessa alla fine è coerente. Se la funzione non è in grado di seguire gli eventi in entrata, gli eventi possono anche essere eliminati dalla coda senza essere inviati alla funzione. Verificare che il codice della funzione gestisca normalmente gli eventi duplicati e che si disponga di sufficiente concorrenza per gestire tutte le invocazioni.

Quando la coda è molto lunga, i nuovi eventi potrebbero diventare datati prima che Lambda abbia la possibilità di inviarli alla funzione. Quando un evento scade o fallisce tutti i tentativi di elaborazione, Lambda lo scarta. È possibile [configurare la gestione degli errori](invocation-async-configuring.md) per una funzione per ridurre il numero di tentativi eseguiti da Lambda o per eliminare più rapidamente gli eventi non elaborati. Configurare una coda DLQ per conservare gli eventi scartati. Per registrare le registrazioni delle chiamate non riuscite (ad esempio timeout o errori di runtime), [create](invocation-async-retain-records.md#invocation-async-destinations) una destinazione in caso di errore. 

# Configurazione delle impostazioni di gestione degli errori per le invocazioni asincrone Lambda
<a name="invocation-async-configuring"></a>

Usa le seguenti impostazioni per configurare il modo in cui Lambda gestisce gli errori e i nuovi tentativi per le invocazioni di funzioni asincrone:
+ [MaximumEventageInSeconds](https://docs.aws.amazon.com/lambda/latest/api/API_PutFunctionEventInvokeConfig.html#lambda-PutFunctionEventInvokeConfig-request-MaximumEventAgeInSeconds): il tempo massimo in secondi per cui Lambda conserva un evento nella coda degli eventi asincroni prima di eliminarlo.
+ [MaximumRetryAttempts](https://docs.aws.amazon.com/lambda/latest/api/API_PutFunctionEventInvokeConfig.html#lambda-PutFunctionEventInvokeConfig-request-MaximumRetryAttempts): il numero massimo di tentativi che Lambda effettua quando la funzione restituisce un errore.

Utilizza la console Lambda o AWS CLI per configurare le impostazioni di gestione degli errori per una funzione, una versione o un alias.

------
#### [ Console ]

**Per configurare la gestione degli errori**

1. Aprire la pagina [Funzioni](https://console.aws.amazon.com/lambda/home#/functions) della console Lambda.

1. Scegliere una funzione.

1. Scegliere **Configuration (Configurazione)**, quindi scegli **Asynchronous invocation (Chiamata asincrona)**.

1. In **Asynchronous invocation (Chiamata asincrona)**, scegliere **Edit (Modifica)**.

1. Configura le impostazioni seguenti.
   + **Maximum age of event (Età massima dell'evento)**: il tempo massimo per cui Lambda conserva un evento nella coda degli eventi asincroni, fino a 6 ore.
   + **Retry attempts (Nuovi tentativi):** il numero di tentativi che Lambda effettua quando la funzione restituisce un errore, tra 0 e 2.

1. Selezionare **Salva**.

------
#### [ AWS CLI ]

Per configurare l'invocazione asincrona con la AWS CLI, utilizza il comando [put-function-event-invoke-config](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/put-function-event-invoke-config.html). Nell'esempio seguente viene configurata una funzione con una durata massima dell'evento di 1 ora e senza ulteriori tentativi.

```
aws lambda put-function-event-invoke-config \ 
  --function-name error \
  --maximum-event-age-in-seconds 3600 \
  --maximum-retry-attempts 0
```

Il comando `put-function-event-invoke-config` sovrascrive qualsiasi configurazione esistente sulla funzione, versione o alias. Per configurare un'opzione senza reimpostarne altre, utilizza [update-function-event-invoke-config](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-event-invoke-config.html). Nell'esempio seguente Lambda viene configurato per inviare un record a una coda SQS standard denominata `destination` quando non è possibile elaborare un evento.

```
aws lambda update-function-event-invoke-config \
  --function-name my-function \
  --destination-config '{"OnFailure":{"Destination": "arn:aws:sqs:us-east-1:123456789012:destination"}}'
```

------

Verrà visualizzato l'output seguente:

```
{
    "LastModified": 1573686021.479,
    "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function:$LATEST",
    "MaximumRetryAttempts": 0,
    "MaximumEventAgeInSeconds": 3600,
    "DestinationConfig": {
        "OnSuccess": {},
        "OnFailure": {}
    }
}
```

Quando un evento di invocazione supera l'età massima o fallisce tutti i nuovi tentativi, Lambda lo scarta. Per conservare una copia degli eventi eliminati, configurare una [destinazione](invocation-async-retain-records.md#invocation-async-destinations) dell'evento non riuscito.

# Acquisizione dei record delle invocazioni asincrone Lambda
<a name="invocation-async-retain-records"></a>

Lambda può inviare record di chiamate asincrone a uno dei seguenti. Servizi AWS
+ **Amazon SQS**: una coda SQS standard
+ **Amazon SNS**: un argomento SNS standard
+ **Amazon S3**: un bucket Amazon S3 (solo in caso di errore)
+ **AWS Lambda**: una funzione Lambda
+ **Amazon EventBridge**: un bus per EventBridge eventi

Il record di invocazione contiene dettagli sulla richiesta e la risposta in formato JSON. È possibile configurare destinazioni separate per gli eventi che vengono elaborati correttamente e per quelli che restituiscono un errore a ogni tentativo di elaborazione. In alternativa, è possibile configurare una coda standard di Amazon SQS o un argomento standard di Amazon SNS come coda DLQ per gli eventi scartati. Per le code DLQ, Lambda invia solo il contenuto dell'evento, senza dettagli sulla risposta.

Se Lambda non è in grado di inviare un record a una destinazione che hai configurato, invia una `DestinationDeliveryFailures` metrica ad Amazon. CloudWatch Ciò può verificarsi se la configurazione include un tipo di destinazione non supportato, ad esempio una coda FIFO di Amazon SQS o un argomento FIFO di Amazon SNS. Gli errori di recapito possono verificarsi anche a causa di errori di autorizzazioni e limiti di dimensione. Per ulteriori informazioni sui parametri di invocazione Lambda, consulta [Parametri di invocazione](monitoring-metrics-types.md#invocation-metrics).

**Nota**  
Per impedire l'attivazione di una funzione, è possibile impostare la simultaneità riservata della funzione su zero. Quando si imposta la simultaneità riservata su zero per una funzione chiamata in modo asincrono, Lambda inizia a inviare i nuovi eventi alla [coda DLQ](#invocation-dlq) configurata o alla [destinazione degli eventi](#invocation-async-destinations) in caso di errore, senza nuovi tentativi. Per elaborare gli eventi inviati mentre la simultaneità riservata era impostata su zero, è necessario utilizzare gli eventi dalla coda DLQ o dalla destinazione degli eventi in caso di errore.

## Aggiunta di una destinazione
<a name="invocation-async-destinations"></a>

Per mantenere i record delle chiamate asincrone, aggiungi una destinazione alla funzione. È possibile scegliere di inviare a una destinazione le chiamate riuscite o non riuscite. Ogni funzione può avere più destinazioni, quindi è possibile configurare destinazioni separate per eventi riusciti e non riusciti. Ogni record inviato alla destinazione è un documento JSON con i dettagli relativi alla chiamata. Come per le impostazioni di gestione degli errori, è possibile impostare le destinazioni su una funzione, una versione della funzione o un alias.

**Suggerimento**  
Puoi anche conservare i record delle chiamate non riuscite per i seguenti tipi di mappatura delle sorgenti degli eventi: Amazon Kinesis[, Amazon](kinesis-on-failure-destination.md#kinesis-on-failure-destination-console) [DynamoDB e Apache Kafka (Amazon](services-dynamodb-errors.md) MSK [e Apache Kafka](kafka-on-failure.md#kafka-onfailure-destination) autogestito).<a name="destinations-permissions"></a>

La tabella seguente elenca le destinazioni supportate per i record di chiamata asincrona. Affinché Lambda invii correttamente i record alla destinazione prescelta, assicurati che il [ruolo di esecuzione](lambda-intro-execution-role.md) della funzione disponga anche delle autorizzazioni pertinenti. La tabella descrive anche il modo in cui ogni tipo di destinazione riceve il record di chiamata JSON.


| Tipo di destinazione | Autorizzazione richiesta | Formato JSON specifico della destinazione | 
| --- | --- | --- | 
|  Coda Amazon SQS  |  [come: SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)  |  Lambda passa il record di chiamata come `Message` alla destinazione.  | 
|  Argomento Amazon SNS  |  [sns:Publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html)  |  Lambda passa il record di chiamata come `Message` alla destinazione.  | 
|  Bucket Amazon S3 (solo in caso di errore)  |  [s3: PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) [s3: ListBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/lambda/latest/dg/invocation-async-retain-records.html)  | 
|  funzione Lambda  |  [lambda: InvokeFunction](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html)  |  Lambda passa il record di chiamata come payload alla funzione.  | 
|  EventBridge  |  [eventi: PutEvents](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/lambda/latest/dg/invocation-async-retain-records.html)  | 

**Nota**  
[Per le destinazioni Amazon S3, se hai abilitato la crittografia sul bucket utilizzando una chiave KMS, la tua funzione necessita anche dell'autorizzazione kms:. GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)

**Importante**  
Quando usi Amazon SNS come destinazione, tieni presente che Amazon SNS ha un limite massimo di dimensione dei messaggi di 256 KB. Se il payload di chiamata asincrona si avvicina a 1 MB, il record di chiamata (che include il payload originale più metadati aggiuntivi) potrebbe superare il limite di Amazon SNS e causare errori di consegna. Prendi in considerazione l'utilizzo di destinazioni Amazon SQS o Amazon S3 per payload più grandi.

La procedura seguente descrive come configurare una destinazione per una funzione che utilizza la console Lambda e la AWS CLI.

------
#### [ Console ]

1. Aprire la pagina [Funzioni](https://console.aws.amazon.com/lambda/home#/functions) della console Lambda.

1. Scegliere una funzione.

1. In **Function overview (Panoramica delle funzioni)**, scegliere **Add destination (Aggiungi destinazione)**.

1. Per **Source (Origine)**, scegliere **Asynchronous invocation (Chiamata asincrona)**.

1. Per **Condition (Condizione)** scegliere tra le seguenti opzioni:
   + **In caso di errore**: viene inviato un record quando l'evento fallisce tutti i tentativi di elaborazione o supera l'età massima.
   + **On success (In caso di esito positivo):** viene inviato un record quando la funzione elabora correttamente un'invocazione asincrona.

1. Per **Destination type (Tipo di destinazione)**, scegliere il tipo di risorsa che riceve il record di invocazione.

1. Per **Destination (Destinazione)**, scegliere una risorsa.

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

------
#### [ AWS CLI ]

[Per configurare una destinazione utilizzando AWS CLI, esegui il comando -config. update-function-event-invoke](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-event-invoke-config.html) Nell'esempio seguente Lambda viene configurato per inviare un record a una coda SQS standard denominata `destination` quando non è possibile elaborare un evento.

```
aws lambda update-function-event-invoke-config \
  --function-name my-function \
  --destination-config '{"OnFailure":{"Destination": "arn:aws:sqs:us-east-1:123456789012:destination"}}'
```

------

### Best practice di sicurezza per destinazioni Amazon S3
<a name="s3-destination-security"></a>

L'eliminazione di un bucket S3 configurato come destinazione senza rimuovere la destinazione dalla configurazione della funzione può creare un rischio per la sicurezza. Se un altro utente conosce il nome del bucket di destinazione, può ricreare il bucket nel proprio Account AWS. I record delle invocazioni non riuscite verranno inviati al relativo bucket, esponendo potenzialmente i dati della tua funzione.

**avvertimento**  
Per assicurarti che i record di invocazione della tua funzione non possano essere inviati a un bucket S3 in un altro Account AWS, aggiungi una condizione al ruolo di esecuzione della funzione che limiti le `s3:PutObject` autorizzazioni ai bucket del tuo account. 

Di seguito viene illustrato un esempio di policy IAM che limita le autorizzazioni `s3:PutObject` della funzione ai bucket presenti nell'account. Questa policy fornisce inoltre a Lambda l'autorizzazione `s3:ListBucket` necessaria per utilizzare un bucket S3 come destinazione.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3BucketResourceAccountWrite",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::*/*",
                "arn:aws:s3:::*"
            ],
            "Condition": {
                "StringEquals": {
                    "s3:ResourceAccount": "111122223333"
                }
            }
        }
    ]
}
```

Per aggiungere una politica di autorizzazioni al ruolo di esecuzione della tua funzione utilizzando Console di gestione AWS o AWS CLI, consulta le istruzioni nelle seguenti procedure:

------
#### [ Console ]

**Per aggiungere una policy di autorizzazioni al ruolo di esecuzione di una funzione (console)**

1. Aprire la pagina [Funzioni](https://console.aws.amazon.com/lambda/home#/functions) della console Lambda.

1. Seleziona la funzione Lambda di cui si desidera modificare il ruolo di esecuzione.

1. Nella scheda **Configurazione** scegli **Autorizzazioni**.

1. Nella scheda **Ruolo di esecuzione**, seleziona il **nome del ruolo** della funzione per aprire la pagina della console IAM del ruolo.

1. Aggiungi una policy di autorizzazioni di base al ruolo completando le seguenti operazioni:

   1. Nel riquadro **Policy di autorizzazioni**, scegli **Aggiungi autorizzazioni**, poi **Crea policy in linea**.

   1. Nell'**editor delle policy**, seleziona **JSON**.

   1. Incolla la policy che desideri aggiungere nell'editor (sostituendo il codice JSON esistente), quindi scegli **Avanti**.

   1. In **Dettagli della policy**, specifica un **nome per la policy**.

   1. Scegli **Crea policy**.

------
#### [ AWS CLI ]

**Per aggiungere una policy di autorizzazioni al ruolo di esecuzione di una funzione (CLI)**

1. Crea un documento di policy JSON con le autorizzazioni richieste e salvalo in una directory locale.

1. Utilizza il comando della CLI `put-role-policy` di IAM per aggiungere le autorizzazioni per il ruolo di esecuzione di una funzione. Esegui il comando seguente dalla directory in cui hai salvato il documento di policy JSON e sostituisci il nome del ruolo, il nome della policy e il documento di policy con i tuoi valori.

   ```
   aws iam put-role-policy \
   --role-name my_lambda_role \
   --policy-name LambdaS3DestinationPolicy \
   --policy-document file://my_policy.json
   ```

------

### Record di invocazione di esempio
<a name="destination-example-record"></a>

Quando un'invocazione corrisponde alla condizione, Lambda invia un [documento JSON](#destinations-permissions) con i dettagli sull'invocazione alla destinazione. L'esempio seguente mostra un record di invocazione per un evento che non è stato possibile elaborare per tre volte a causa di un errore di funzione.

**Example**  

```
{
    "version": "1.0",
    "timestamp": "2019-11-14T18:16:05.568Z",
    "requestContext": {
        "requestId": "e4b46cbf-b738-xmpl-8880-a18cdf61200e",
        "functionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function:$LATEST",
        "condition": "RetriesExhausted",
        "approximateInvokeCount": 3
    },
    "requestPayload": {
        "ORDER_IDS": [
            "9e07af03-ce31-4ff3-xmpl-36dce652cb4f",
            "637de236-e7b2-464e-xmpl-baf57f86bb53",
            "a81ddca6-2c35-45c7-xmpl-c3a03a31ed15"
        ]
    },
    "responseContext": {
        "statusCode": 200,
        "executedVersion": "$LATEST",
        "functionError": "Unhandled"
    },
    "responsePayload": {
        "errorMessage": "RequestId: e4b46cbf-b738-xmpl-8880-a18cdf61200e Process exited before completing request"
    }
}
```

Il record di invocazione contiene dettagli sull'evento, la risposta e il motivo per cui il record è stato inviato.

### Tracciamento delle richieste verso le destinazioni
<a name="destinations-tracing"></a>

È possibile utilizzare AWS X-Ray per visualizzare una vista connessa di ogni richiesta mentre viene messa in coda, elaborata da una funzione Lambda e inviata al servizio di destinazione. Quando si attiva il tracciamento X-Ray per una funzione o un servizio che richiama una funzione, Lambda aggiunge un'intestazione X-Ray alla richiesta e passa l'intestazione al servizio di destinazione. Le tracce dei servizi upstream vengono collegate automaticamente alle tracce delle funzioni Lambda a valle e dei servizi di destinazione, creando una end-to-end visualizzazione dell'intera applicazione. Per ulteriori informazioni sul tracciamento, consulta [Visualizza le chiamate alla funzione Lambda utilizzando AWS X-Ray](services-xray.md).

## Aggiunta di una coda DLQ
<a name="invocation-dlq"></a>

In alternativa a una [destinazione in caso di errore](#invocation-async-destinations), è possibile configurare la funzione con una coda DLQ per salvare gli eventi eliminati per ulteriori elaborazioni. Una coda DLQ agisce allo stesso modo di una destinazione in caso di errore in quanto viene utilizzata quando un evento non riesce a tutti i tentativi di elaborazione o scade senza essere elaborato. Tuttavia, è possibile aggiungere o rimuovere una coda DLQ solo a livello di funzione. Le versioni della funzione utilizzano le stesse impostazioni della coda DLQ della versione non pubblicata (\$1LATEST). Le destinazioni in caso di errore supportano anche destinazioni aggiuntive e includono dettagli sulla risposta della funzione nel record di invocazione.

Per rielaborare gli eventi in una coda DLQ, è possibile impostarla come [origine eventi](invocation-eventsourcemapping.md) per la funzione Lambda. In alternativa, è possibile recuperare gli eventi manualmente.

È possibile scegliere una coda standard di Amazon SQS o un argomento standard di Amazon SNS per la coda DLQ. Le code FIFO e gli argomenti FIFO di Amazon SNS non sono supportati.
+ [Coda Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-create-queue.html): una coda conserva gli eventi non riusciti finché non vengono richiamati. Scegli una coda standard Amazon SQS se prevedi che una singola entità, come una funzione Lambda o un CloudWatch allarme, elabori l'evento non riuscito. Per ulteriori informazioni, consulta [Utilizzo di Lambda con Amazon SQS](with-sqs.md).
+ [Argomento Amazon SNS](https://docs.aws.amazon.com/sns/latest/gsg/CreateTopic.html) – Un argomento invia gli eventi non riusciti a una o più destinazioni. Scegli un argomento standard di Amazon SNS se ti aspetti che più entità agiscano su un evento non riuscito. Ad esempio, puoi configurare un argomento per inviare eventi a un indirizzo e-mail, una funzione Lambda, and/or un endpoint HTTP. Per ulteriori informazioni, consulta [Richiamo di funzioni Lambda mediante notifiche Amazon SNS](with-sns.md).

Per inviare gli eventi a una coda o argomento, la funzione necessita di autorizzazioni aggiuntive. Aggiungi una policy con le [autorizzazioni necessarie](#destinations-permissions) per il [ruolo di esecuzione](lambda-intro-execution-role.md) di una funzione. Se la coda o l'argomento di destinazione è crittografato con una AWS KMS chiave gestita dal cliente, assicurati che sia il ruolo di esecuzione della funzione che la politica [basata sulle risorse](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) della chiave contengano le autorizzazioni pertinenti.

Dopo aver creato il target e l'aggiornamento del ruolo di esecuzione della funzione, aggiungere la coda DLQ alla funzione. È possibile configurare più funzioni per l'invio di eventi allo stesso oggetto.

------
#### [ Console ]

1. Aprire la pagina [Funzioni](https://console.aws.amazon.com/lambda/home#/functions) della console Lambda.

1. Scegliere una funzione.

1. Scegliere **Configuration (Configurazione)**, quindi scegli **Asynchronous invocation (Chiamata asincrona)**.

1. In **Asynchronous invocation (Chiamata asincrona)**, scegliere **Edit (Modifica)**.

1. Imposta il **servizio coda DLQ** su **Amazon SQS** o **Amazon SNS**.

1. Scegliere l'argomento o la coda target.

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

------
#### [ AWS CLI ]

Per configurare una coda di lettere morte con, usa il comando. AWS CLI[update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html)

```
aws lambda update-function-configuration \
  --function-name my-function \
  --dead-letter-config TargetArn=arn:aws:sns:us-east-1:123456789012:my-topic
```

------

Lambda invia l'evento alla coda DLQ così com'è, con ulteriori informazioni negli attributi. Queste informazioni possono essere utilizzate per identificare l'errore restituito dalla funzione o correlare l'evento ai log o a una traccia AWS X-Ray .

**Attributi dei messaggi della coda DLQ**
+ **RequestID** (String) – L'ID della richiesta di invocazione. La richiesta IDs viene visualizzata nei registri delle funzioni. È inoltre possibile utilizzare l'SDK X-Ray per registrare l'ID di richiesta su un attributo nella traccia. Si possono quindi cercare le tracce in base all'ID richiesta nella console X-Ray.
+ **ErrorCode**(Numero): il codice di stato HTTP.
+ **ErrorMessage**(String) — Il primo 1 KB del messaggio di errore.

Se Lambda non riesce a inviare un messaggio alla coda delle lettere non scritte, elimina l'evento ed emette la metrica. [DeadLetterErrors](monitoring-metrics-types.md) Questo può accadere a causa di mancanza di autorizzazioni oppure se le dimensioni totali del messaggio superano il limite per la coda o l'argomento target. Ad esempio, supponiamo che una notifica Amazon SNS con un corpo di dimensioni prossime a 1 MB attivi una funzione che genera un errore. In tal caso, i dati relativi a eventi aggiunti da Amazon SNS, combinati con gli attributi aggiunti da Lambda, possono far sì che il messaggio superi le dimensioni massime consentite nella coda DLQ.

Se si utilizza Amazon SQS come origine eventi, configurare una coda DLQ sulla coda Amazon SQS stessa e non sulla funzione Lambda. Per ulteriori informazioni, consulta [Utilizzo di Lambda con Amazon SQS](with-sqs.md).