

# Invocar uma função do Lambda de modo assíncrono
<a name="invocation-async"></a>

Vários Serviços da AWS, como o Amazon Simple Storage Service (Amazon S3) e o Amazon Simple Notiﬁcation Service (Amazon SNS), invocam funções de forma assíncrona para processar eventos. Você também pode invocar uma função do Lambda de modo assíncrono usando a AWS Command Line Interface (AWS CLI) ou um dos AWS SDKs. Ao invocar uma função de forma assíncrona, não aguarde uma resposta do código da função. Você entrega o evento para o Lambda e ele cuida do resto. Você pode configurar como o Lambda processa os erros e pode enviar registros de invocação para um recurso downstream, como o Amazon Simple Queue Service (Amazon SQS) ou o Amazon EventBridge (EventBridge), para encadear componentes da aplicação.

O diagrama a seguir mostra clientes invocando uma função do Lambda de forma assíncrona. O Lambda coloca os eventos em fila antes de enviá-los para a função.

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


Para invocação de forma assíncrona, o Lambda coloca o evento em uma fila e retorna uma resposta bem-sucedida sem informações adicionais. Um processo separado lê os eventos na fila e os envia para sua função.

 Para invocar uma função do Lambda de forma assíncrona usando a AWS Command Line Interface (AWS CLI) ou um dos AWS SDKs, defina o parâmetro [InvocationType](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html#lambda-Invoke-request-InvocationType) como `Event`. O exemplo a seguir mostra um comando AWS CLI para invocar uma função.

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

A seguinte saída deverá ser mostrada:

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

A opção **cli-binary-format** será necessária se você estiver usando a AWS CLI versão 2. Para que essa seja a configuração padrão, execute `aws configure set cli-binary-format raw-in-base64-out`. Para obter mais informações, consulte [A AWS CLI comporta opções de linha de comando globais](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html#cli-configure-options-list) no *Guia do usuário da AWS Command Line Interface versão 2*.

O arquivo de saída (`response.json`) não contém informações, mas continuará sendo criado quando esse comando for executado. Se o Lambda não conseguir adicionar o evento a uma fila, a mensagem de erro será exibida na saída do comando.

# Como o Lambda lida com erros e novas tentativas com invocação assíncrona
<a name="invocation-async-error-handling"></a>

O Lambda gerencia a fila de eventos assíncronos da função e realiza novas tentativas em caso de erro. Se a função retornar um erro, o Lambda, por padrão, tentará executá-la mais duas vezes, com um intervalo de um minuto entre a primeira e a segunda tentativa, e um intervalo de dois minutos entre a segunda e a terceira tentativa. Os erros de função incluem erros retornados pelo código e pelo runtime da função, como o tempo ser atingido.

Se a função não tiver simultaneidade suficiente disponível para processar todos os eventos, as solicitações adicionais serão limitadas. Para erros de controle de utilização (429) e de sistema (série 500), o Lambda retorna o evento para a fila e, por padrão, tenta executar a função novamente por até 6 horas. O intervalo de repetição aumenta exponencialmente de 1 segundo após a primeira tentativa para no máximo 5 minutos. Se a fila contém muitas entradas, o Lambda aumenta o intervalo de repetição e reduz a taxa em que lê eventos da fila.

Mesmo que a função não retorne um erro, é possível que ela receba o mesmo evento do Lambda várias vezes, porque a própria fila se tornará consistente. Se a função não conseguir acompanhar os eventos recebidos, é possível que eventos sejam excluídos da fila sem serem enviados para a função. Certifique-se de que seu código de função lide corretamente com eventos duplicados, e de que você tenhas simultaneidade suficiente disponível para lidar com todas as invocações.

Quando a fila é muito longa, novos eventos podem expirar antes de o Lambda ter a chance de enviá-los para sua função. Quando há falha em todas as tentativas de processamento de um evento ou ele expira, o Lambda o descarta. É possível [configurar o tratamento de erros](invocation-async-configuring.md) para uma função a fim de reduzir o número de tentativas que o Lambda executa ou descartar eventos não processados mais rapidamente. Para capturar eventos descartados, [configure uma fila de mensagens não entregues](invocation-async-retain-records.md#invocation-dlq) para a função. Para capturar registros de invocações com falha (como erros de tempo limite ou runtime), [crie um destino para caso de falha](invocation-async-retain-records.md#invocation-async-destinations). 

# Configurar o tratamento de erros para invocação assíncrona do Lambda
<a name="invocation-async-configuring"></a>

Use as configurações a seguir para definir como o Lambda lida com erros e novas tentativas para invocações de funções assíncronas:
+ [MaximumEventAgeInSeconds](https://docs.aws.amazon.com/lambda/latest/api/API_PutFunctionEventInvokeConfig.html#lambda-PutFunctionEventInvokeConfig-request-MaximumEventAgeInSeconds): o tempo máximo usado pelo Lambda, em segundos, para que o Lambda mantenha um evento na fila de eventos assíncronos antes de descartá-lo.
+ [MaximumRetryAttempts](https://docs.aws.amazon.com/lambda/latest/api/API_PutFunctionEventInvokeConfig.html#lambda-PutFunctionEventInvokeConfig-request-MaximumRetryAttempts): o número máximo de vezes que o Lambda tenta novamente quando a função retorna um erro.

Use o console do Lambda ou a AWS CLI para definir as configurações de tratamento de erros em uma função, uma versão ou um alias.

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

**Como configurar o tratamento de erros**

1. Abra a [página Funções](https://console.aws.amazon.com/lambda/home#/functions) do console do Lambda.

1. Escolha uma função.

1. Escolha **Configuration (Configuração)** e, em seguida, **Asynchronous invocation (Invocação assíncrona)**.

1. Em **Asynchronous invocation (Invocação assíncrona)**, escolha **Edit (Editar)**.

1. Configure as definições a seguir.
   + **Maximum age of event** (Idade máxima do evento): a quantidade máxima de tempo que o Lambda retém um evento na fila de eventos assíncronos, até 6 horas.
   + **Retry attempts** (Tentativas de repetição): o número de vezes que o Lambda tenta novamente quando a função retorna um erro, entre 0 e 2.

1. Escolha **Salvar**.

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

[Para configurar a invocação assíncrona com o AWS CLI, use o comando put-function-event-invoke-config](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/put-function-event-invoke-config.html). O exemplo a seguir configura uma função com uma idade máxima de evento de 1 hora e nenhuma repetição.

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

O comando `put-function-event-invoke-config` substitui qualquer configuração existente na função, versão ou alias. Para configurar uma opção sem redefinir outras, use [update-function-event-invoke-config](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-event-invoke-config.html). O exemplo a seguir configura o Lambda para enviar um registro a uma fila padrão do SQS denominada `destination` quando um evento não puder ser processado.

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

------

A seguinte saída deverá ser mostrada:

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

Quando um evento de invocação exceder a idade máxima ou falhar em todas as tentativas de repetição, o Lambda o descartará. Para reter uma cópia de eventos descartados, configure um [destino](invocation-async-retain-records.md#invocation-async-destinations) de evento com falha.

# Capturar registros de invocações assíncronas do Lambda
<a name="invocation-async-retain-records"></a>

O Lambda pode enviar os registros de invocações assíncronas a um dos Serviços da AWS a seguir.
+ **Amazon SQS**: uma fila do SQS padrão
+ **Amazon SNS**: um tópico do SNS padrão
+ **Amazon S3**: um bucket do Amazon S3 (somente em caso de falha)
+ **AWS Lambda**: uma função do Lambda
+ **Amazon EventBridge**: um barramento de eventos do EventBridge

O registro de invocação contém detalhes sobre a solicitação e a resposta no formato JSON. É possível configurar destinos separados para eventos que são processados com êxito e eventos em que há falha no processamento de todas as tentativas. Como alternativa, é possível configurar uma fila padrão do Amazon SQS ou um tópico padrão do Amazon SNS como uma fila de mensagens não entregues para os eventos descartados. Para filas de mensagens mortas, o Lambda envia somente o conteúdo do evento, sem detalhes sobre a resposta.

Se o Lambda não conseguir enviar um registro para um destino que você configurou, ele enviará uma métrica `DestinationDeliveryFailures` para o Amazon CloudWatch. Isso poderá acontecer se sua configuração incluir um tipo de destino incompatível, como uma fila do Amazon SQS FIFO ou um tópico do Amazon SNS FIFO. Os erros de entrega também podem ocorrer devido a erros de permissão e limites de tamanho. Para obter mais informações sobre as métricas de invocação do Lambda, consulte [Métricas de invocação](monitoring-metrics-types.md#invocation-metrics).

**nota**  
Para evitar que uma função seja acionada, você pode definir a simultaneidade reservada da função como zero. Quando você define a simultaneidade reservada como zero para uma função invocada de forma assíncrona, o Lambda começa a enviar novos eventos para a [fila de mensagens não entregues](#invocation-dlq) configurada ou para o [destino do evento](#invocation-async-destinations) em caso de falha, sem novas tentativas. Para processar eventos que foram enviados enquanto a simultaneidade reservada estava definida como zero, você precisa consumir os eventos da fila de mensagens não entregues ou do destino do evento em caso de falha.

## Adicionar um destino
<a name="invocation-async-destinations"></a>

Para reter registros de invocações assíncronas, adicione um destino à função. É possível optar por enviar invocações com êxito ou com falha para um destino. Cada função pode ter vários destinos para que você possa configurar destinos separados para eventos com êxito e com falha. Cada registro enviado ao destino é um documento JSON com detalhes sobre a invocação. Da mesma forma que as configurações de tratamento de erros, é possível configurar destinos em uma função, em uma versão de função ou em um alias.

**dica**  
Também é possível reter registros de invocações com falha para os tipos de mapeamento da origem do evento a seguir: [Amazon Kinesis](kinesis-on-failure-destination.md#kinesis-on-failure-destination-console), [Amazon DynamoDB](services-dynamodb-errors.md) e [Apache Kafka (Amazon MSK e Apache Kafka autogerenciado)](kafka-on-failure.md#kafka-onfailure-destination).<a name="destinations-permissions"></a>

A tabela a seguir lista os destinos aceitos para registros de invocação assíncrona. Para que o Lambda envie registros com êxito ao destino escolhido, certifique-se de que o [perfil de execução](lambda-intro-execution-role.md) da função também contenha as permissões relevantes. A tabela também descreve como cada tipo de destino recebe o registro de invocação JSON.


| Tipos de destino | Permissão obrigatória | Formato JSON específico para o destino | 
| --- | --- | --- | 
|  Fila do Amazon SQS  |  [sqs:SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)  |  O Lambda passa o registro de invocação como `Message` para o destino.  | 
|  Tópico do Amazon SNS  |  [sns:Publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html)  |  O Lambda passa o registro de invocação como `Message` para o destino.  | 
|  Bucket do Amazon S3 (somente em caso de falha)  |  [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/pt_br/lambda/latest/dg/invocation-async-retain-records.html)  | 
|  Função do Lambda  |  [lambda:InvokeFunction](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html)  |  O Lambda passa o registro de invocação como a carga útil para a função.  | 
|  EventBridge  |  [events: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/pt_br/lambda/latest/dg/invocation-async-retain-records.html)  | 

**nota**  
Para destinos do Amazon S3, se você habilitou a criptografia no bucket usando uma chave do KMS, sua função também precisará da permissão [kms:GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html).

**Importante**  
Ao usar o Amazon SNS como destino, esteja ciente de que o Amazon SNS tem um limite máximo de tamanho de mensagem de 256 KB. Se sua carga útil de invocação assíncrona se aproximar de 1 MB, o registro de invocação (que inclui a carga útil original mais metadados adicionais) pode exceder o limite do Amazon SNS e causar falhas na entrega. Considere usar destinos do Amazon SQS ou do Amazon S3 para cargas úteis maiores.

As etapas a seguir descrevem como configurar um destino para uma função usando o console do Lambda e a AWS CLI.

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

1. Abra a [página Funções](https://console.aws.amazon.com/lambda/home#/functions) do console do Lambda.

1. Escolha uma função.

1. Em **Function overview (Visão geral da função)**, escolha **Add destination (Adicionar destino)**.

1. Em **Source (Origem)**, escolha **Asynchronous invocation (Invocação assíncrona)**.

1. Em **Condition (Condição)**, escolha uma das seguintes opções:
   + **On failure** (Em caso de falha): envie um registro quando o evento falhar em todas as tentativas de processamento ou exceder a idade máxima.
   + **On success** (Em caso de êxito): envie um registro quando a função processa com êxito uma invocação assíncrona.

1. Em **Destination type (Tipo de destino)**, escolha o tipo de recurso que recebe o registro da invocação.

1. Em **Destination (Destino)**, escolha um recurso.

1. Escolha **Salvar**.

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

Para configurar um destino usando a AWS CLI, execute o comando [update-function-event-invoke-config](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-event-invoke-config.html). O exemplo a seguir configura o Lambda para enviar um registro a uma fila padrão do SQS denominada `destination` quando um evento não puder ser processado.

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

------

### Práticas recomendadas de segurança para destinos do Amazon S3
<a name="s3-destination-security"></a>

Excluir um bucket do S3 configurado como destino sem remover o destino da configuração da sua função pode criar um risco de segurança. Se outro usuário souber o nome do seu bucket de destino, ele poderá recriar o bucket na Conta da AWS dele. Registros de invocações com falha serão enviados para o bucket do usuário, potencialmente expondo dados da sua função.

**Atenção**  
Para garantir que os registros de invocação da sua função não possam ser enviados para um bucket do S3 em outra Conta da AWS, adicione uma condição ao perfil de execução da função que limite as permissões `s3:PutObject` aos buckets na sua conta. 

O exemplo a seguir mostra uma política do IAM que limita as permissões `s3:PutObject` da função aos bucket da conta. Essa política também dá ao Lambda a permissão `s3:ListBucket` necessária para usar um bucket do S3 como destino.

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

Para adicionar uma política de permissões ao perfil de execução da função usando o Console de gerenciamento da AWS ou a AWS CLI, consulte as instruções nos seguintes procedimentos:

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

**Para adicionar uma política de permissões ao perfil de execução de uma função (console)**

1. Abra a [página Funções](https://console.aws.amazon.com/lambda/home#/functions) do console do Lambda.

1. Selecione a função do Lambda cujo perfil de execução você queira modificar.

1. Na guia **Configuração**, escolha **Permissões**.

1. Na guia **Perfil de execução**, selecione o **Nome do perfil** da função para abrir a página do console do IAM do perfil.

1. Adicione uma política de permissões ao perfil da seguinte maneira:

   1. No painel **Políticas de permissões**, escolha **Adicionar permissões** e **Criar política em linha**.

   1. No **Editor de políticas**, selecione **JSON**.

   1. Cole a política que você deseja adicionar no editor (substituindo o JSON existente) e escolha **Próximo**.

   1. No campo **Detalhes da política**, insira o **Nome da política**.

   1. Escolha **Criar política**.

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

**Para adicionar uma política de permissões ao perfil de execução de uma função (CLI)**

1. Crie um documento de política de JSON com as permissões necessárias e salve-o em um diretório local.

1. Use o comando da CLI `put-role-policy` do IAM para adicionar permissões ao perfil de execução da função. Execute o comando a seguir no diretório em que você salvou o documento de política de JSON e substitua o nome do perfil, o nome da política e o documento da política pelos seus próprios valores.

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

------

### Exemplo de registro de invocação
<a name="destination-example-record"></a>

Quando uma invocação corresponde à condição, o Lambda envia [um documento JSON](#destinations-permissions) com detalhes sobre a invocação para o destino. O exemplo a seguir mostra um registro de invocação para um evento que teve três falhas de tentativa de processamento devido a um erro de função.

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

O registro de invocação contém detalhes sobre o evento, a resposta e o motivo pelo qual o registro foi enviado.

### Rastreamento de solicitações até destinos
<a name="destinations-tracing"></a>

É possível usar o AWS X-Ray para exibir uma visualização conectada de cada solicitação à medida que ela é adicionada à fila, processada por uma função do Lambda e passada para o serviço de destino. Quando você ativa o rastreamento com X-Ray para uma função ou um serviço que invoca uma função, o Lambda adiciona um cabeçalho X-Ray à solicitação e passa o cabeçalho para o serviço de destino. Os rastreamentos dos serviços de upstream são vinculados automaticamente aos rastreamentos de funções do Lambda e serviços de downstream, o que cria uma visão completa de toda a aplicação. Para obter mais informações sobre rastreamento, consulte [Visualizar as invocações da função do Lambda usando o AWS X-Ray](services-xray.md).

## Adicionar uma fila de mensagens não entregues
<a name="invocation-dlq"></a>

Como alternativa a um [destino em caso de falha](#invocation-async-destinations), é possível configurar a função com uma fila de mensagens mortas para salvar eventos descartados para processamento adicional. Uma fila de mensagens mortas age da mesma forma que um destino em caso de falha na medida em que é usado quando há falha em todas as tentativas de processamento de um evento ou ele expira sem ser processado. Porém, você só pode adicionar ou remover uma fila de mensagens não entregues no nível da função. As versões da função usam as mesmas configurações de fila de mensagens não entregues (\$1LATEST). Destinos em caso de falha também oferecem suporte a destinos adicionais e incluem detalhes sobre a resposta da função no registro de invocação.

Para reprocessar eventos em uma fila de mensagens não entregues, você poderá defini-la como uma [origem de eventos](invocation-eventsourcemapping.md) para a função do Lambda. Também é possível recuperar os eventos manualmente.

É possível escolher uma fila padrão do Amazon SQS ou um tópico padrão do Amazon SNS para a sua fila de mensagens não entregues. As filas FIFO e os tópicos do Amazon SNS FIFO são incompatíveis.
+ [Fila do Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-create-queue.html): uma fila suspende os eventos falhos até serem recuperados. Escolha uma fila padrão do Amazon SQS caso espere que uma única entidade, como uma função do Lambda ou um alarme do CloudWatch, processe o evento que falhou. Para obter mais informações, consulte [Usar o Lambda com o Amazon SQS](with-sqs.md).
+ [Tópico do Amazon SNS](https://docs.aws.amazon.com/sns/latest/gsg/CreateTopic.html): um tópico retransmite os eventos com falha para um ou mais destinos. Escolha um tópico padrão do Amazon SNS caso espere que várias entidades atuem em um evento com falha. Por exemplo, você pode configurar um tópico para enviar eventos a um endereço de email, uma função do Lambda e/ou um endpoint HTTP. Para obter mais informações, consulte [Invocar funções do Lambda com notificações do Amazon SNS](with-sns.md).

Sua função precisa de permissões adicionais para enviar eventos a uma fila ou um tópico. Adicione uma política com as [permissões necessárias](#destinations-permissions) ao [perfil de execução](lambda-intro-execution-role.md) da sua função. Se a fila ou o tópico de destino for criptografado com uma chave do AWS KMS gerenciada pelo cliente, certifique-se de que tanto a função de execução da sua função quanto a [política baseada em recursos](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) da chave contenham as permissões relevantes.

Depois de criar o destino e atualizar a função de execução de sua função, adicione a fila de mensagens mortas à função. É possível configurar várias funções para enviarem eventos ao mesmo destino.

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

1. Abra a [página Funções](https://console.aws.amazon.com/lambda/home#/functions) do console do Lambda.

1. Escolha uma função.

1. Escolha **Configuration (Configuração)** e, em seguida, **Asynchronous invocation (Invocação assíncrona)**.

1. Em **Asynchronous invocation (Invocação assíncrona)**, escolha **Edit (Editar)**.

1. Defina o **serviço de fila de mensagens não entregues** como **Amazon SQS** ou **Amazon SNS**.

1. Escolha a fila ou o tópico de destino.

1. Escolha **Salvar**.

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

Para configurar uma fila de mensagens não entregues com a AWS CLI, use o comando [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
```

------

O Lambda envia o evento para a fila de mensagens mortas no mesmo estado, mais informações adicionais nos atributos. É possível usar essas informações para identificar o erro retornado pela função, ou correlacionar o evento com logs ou um rastreamento do AWS X-Ray.

**Atributos de mensagens da fila de mensagens mortas**
+ **RequestID** (String): o ID de invocação da solicitação. Os IDs de solicitação aparecem nos logs de função. O X-Ray SDK também pode ser usado para registrar o ID de solicitação em um atributo no rastreamento. Em seguida, os rastreamentos podem ser procurados por ID de solicitação no console do X-Ray.
+ **ErrorCode** (Número): o código de status HTTP.
+ **ErrorMessage** (String): o primeiro 1 KB da mensagem de erro.

Se o Lambda não puder enviar uma mensagem para a fila de mensagens mortas, ele excluirá o evento e emitirá a métrica [DeadLetterErrors](monitoring-metrics-types.md). Isso pode acontecer por causa de falta de permissões, ou se o tamanho total da mensagem exceder o limite da fila ou do tópico de destino. Por exemplo, digamos que uma notificação do Amazon SNS com um tamanho de quase 1 MB acione uma função que resulte em erro. Nesse caso, os dados do evento incluídos pelo Amazon SNS, combinados aos atributos adicionados pelo Lambda, podem fazer com que a mensagem exceda o tamanho máximo permitido na fila de mensagens não entregues.

Se você está usando o Amazon SQS como uma fonte de eventos, configure uma fila de mensagens mortas na própria fila do Amazon SQS e não na função do Lambda. Para obter mais informações, consulte [Usar o Lambda com o Amazon SQS](with-sqs.md).