

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configurando a fila de mensagens mortas de uma agenda no Scheduler EventBridge
<a name="configuring-schedule-dlq"></a>

 O Amazon EventBridge Scheduler oferece suporte a filas de cartas mortas (DLQ) usando o Amazon Simple Queue Service. Quando um EventBridge agendamento falha em invocar seu destino, o Scheduler entrega uma carga JSON contendo detalhes da invocação e qualquer resposta recebida do destino para uma fila padrão do Amazon SQS que você especificar. 

 O tópico a seguir se refere a esse JSON como um *evento de mensagens não entregues*. Um evento de mensagens não entregues permite que você solucione problemas com seu agendamento ou metas. Se você configurar uma política de repetição para sua agenda, o EventBridge Scheduler entregará o evento de carta morta que ele tem, esgotando o número máximo de novas tentativas que você definiu. 

 Os tópicos a seguir descrevem como você pode configurar uma fila do Amazon SQS como DLQ para sua programação, configurar as permissões que o EventBridge Agendador precisa para entregar mensagens ao Amazon SQS e receber eventos de carta morta do DLQ. 

**Topics**
+ [Criar uma fila do Amazon SQS](#configuring-schedule-dlq-create-queue)
+ [Configure as permissões da função de execução](#configuring-schedule-dlq-permissions)
+ [Especificar uma fila de mensagens não entregues](#configuring-schedule-dlq-console)
+ [Recuperar o evento de mensagens não entregues](#configuring-schedule-dlq-dead-letter-event)

## Criar uma fila do Amazon SQS
<a name="configuring-schedule-dlq-create-queue"></a>

 Antes de configurar uma DLQ para seu agendamento, você deve criar uma fila padrão do Amazon SQS. Para obter instruções sobre criar uma fila utilizando o Amazon SQS, consulte o tópico sobre como [Criar uma fila do Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/step-create-queue.html), no *Guia do desenvolvedor do Amazon Simple Queue Service*. 

**nota**  
 EventBridge O Scheduler não suporta o uso de uma fila FIFO como DLQ da sua agenda. 

 Use o AWS CLI comando a seguir para criar uma fila padrão. 

```
$ aws sqs create-queue --queue-name {{queue-name}}
```

Se o for bem-sucedido, você verá `QueueURL` no resultado.

```
{
    "QueueUrl": "https://sqs.us-west-2.amazonaws.com/123456789012/scheduler-dlq-test"
}
```

 Depois de criar a fila, anote o ARN da fila. Você precisará do ARN ao especificar uma DLQ para sua EventBridge programação do Scheduler. Você pode encontrar o ARN da fila no console do Amazon SQS ou usando o comando. [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sqs/get-queue-attributes.html#get-queue-attributes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sqs/get-queue-attributes.html#get-queue-attributes) AWS CLI 

```
$ aws sqs get-queue-attributes --queue-url {{your-dlq-url}} --attribute-names QueueArn
```

 Se for bem-sucedido, você verá o ARN da fila na saída. 

```
{
    "Attributes": {
        "QueueArn": "arn:aws:sqs:us-west-2:123456789012:scheduler-dlq-test"
    }
}
```

 Na próxima seção, você adicionará as permissões necessárias à sua função de execução do cronograma para permitir que o EventBridge Scheduler entregue eventos sem saída para o Amazon SQS. 

## Configure as permissões da função de execução
<a name="configuring-schedule-dlq-permissions"></a>

 Para permitir que o EventBridge Scheduler entregue eventos sem saída para o Amazon SQS, sua função de execução do cronograma precisa da seguinte política de permissão. Para obter mais informações sobre como anexar uma nova política de permissão à sua função de execução do agendamento, consulte [Configurando a função de execução](setting-up.md#setting-up-execution-role). 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "sqs:SendMessage"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
```

------

**nota**  
 Sua função de execução do cronograma pode já ter as permissões necessárias anexadas se você usar o EventBridge Scheduler para invocar um destino de API do Amazon SQS. 

 Na próxima seção, você usará o console do EventBridge Scheduler e especificará uma DLQ para sua agenda. 

## Especificar uma fila de mensagens não entregues
<a name="configuring-schedule-dlq-console"></a>

 Para especificar um DLQ, use o console do EventBridge Scheduler ou o AWS CLI para atualizar um agendamento existente ou criar um novo. 

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

**Para especificar uma DLQ usando o console**

1. [Faça login no e escolha o Console de gerenciamento da AWS link a seguir para abrir a seção EventBridge Agendador do EventBridge console: home https://console.aws.amazon.com/scheduler/](https://console.aws.amazon.com/scheduler/home) 

1.  No console do EventBridge Agendador, crie uma nova agenda ou escolha uma agenda existente na sua lista de agendas para editar. 

1.  Na página **Configurações**, para a **fila de mensagens não entregues (DLQ)**, faça o seguinte: 
   +  Escolha **Selecionar uma fila do Amazon SQS em minha AWS conta como DLQ** e, em seguida, escolha o ARN da fila para seu DLQ na lista suspensa. 
   +  Escolha **Especificar uma fila do Amazon SQS em outras AWS contas como DLQ e, em seguida, insira o ARN da fila para sua DLQ**. Se você escolher uma fila em outra AWS conta, o console do EventBridge Scheduler não poderá exibir a fila ARNs em uma lista suspensa. 

1.  Revise suas seleções e escolha **Criar agendamento** ou **Salvar agendamento** para concluir a configuração de uma DLQ. 

1.  (Opcional) Para ver os detalhes da DLQ de um agendamento, escolha o nome do agendamento na lista e, em seguida, escolha a guia **fila de mensagens não entregues** na página de **detalhes do agendamento**. 

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

**Para atualizar um cronograma existente usando o AWS CLI**
+  Use o comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/scheduler/update-schedule.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/scheduler/update-schedule.html) para atualizar sua agenda. Especifique a fila do Amazon SQS que você criou anteriormente como DLQ. Especifique o ARN do perfil do IAM ao qual você anexou as permissões necessárias do Amazon SQS como função de execução. Substitua todos os outros valores de espaço reservado por suas informações. 

  ```
  $ aws scheduler update-schedule --name {{existing-schedule}} \
      --schedule-expression '{{rate(5 minutes)}}' \
      --target '{"DeadLetterConfig": {"Arn": "{{DLQ_ARN}}"}, "RoleArn": "{{ROLE_ARN}}", "Arn":"{{QUEUE_ARN}}", "Input": "Hello world!" }' \
      --flexible-time-window '{ "Mode": "OFF"}'
  ```

**Para criar um novo agendamento com um DLQ usando o AWS CLI**
+  Para criar um agendamento, use o comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/scheduler/create-schedule.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/scheduler/create-schedule.html). Substitua todos os valores de espaço reservado por suas informações. 

  ```
  $ aws scheduler create-schedule --name {{new-schedule}} \
      --schedule-expression '{{rate(5 minutes)}}' \
      --target '{"DeadLetterConfig": {"Arn": "{{DLQ_ARN}}"}, "RoleArn": "{{ROLE_ARN}}", "Arn":"{{QUEUE_ARN}}", "Input": "Hello world!" }' \
      --flexible-time-window '{ "Mode": "OFF"}'
  ```

------

 Na próxima seção, você usará o AWS CLI para receber um evento de carta morta do DLQ. 

## Recuperar o evento de mensagens não entregues
<a name="configuring-schedule-dlq-dead-letter-event"></a>

 Use o comando [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sqs/receive-message.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sqs/receive-message.html), conforme mostrado a seguir, para recuperar um evento de mensagens não entregues da DLQ. Você pode definir o número de mensagens a serem recuperadas usando o atributo `--max-number-of-messages`. 

```
$ aws sqs receive-message --queue-url {{your-dlq-url}} --attribute-names All --message-attribute-names All --max-number-of-messages 1
```

 Se for bem-sucedido, você verá uma saída semelhante à seguinte: 

```
{
    "Messages": [
        {
            "MessageId": "2aeg3510-fe3a-4f5a-ab6a-6906560eaf7e",
            "ReceiptHandle": "AQEBkNKTdOMrWgHKPoITRBwrPoK3eCSZIcZwVqCY0BZ+FfTcORFpopJbtCqj36VbBTlHreM8+qM/m5jcwqSlAlGmIJO/hYmMgn/+dwIty9izE7HnpvRhhEyHxbeTZ5V05RbeasYaBdNyi9WLcnAHviDh6MebLXXNWoFyYNsxdwJuG0f/w3htX6r3dxpXvvFNPGoQb8ihY37+u0gtsbuIwhLtUSmE8rbldEEwiUfi3IJ1zEZpUS77n/k1GWrMrnYg0Gx/BuaLzOrFi2F738XI/Hnh45uv3ca6OYwS1ojPQ1LtX2URg1haV5884FYlaRvY8jRlpCZabTkYRTZKSXG5KNgYZnHpmsspii6JNkjitYVFKPo0H91w5zkHlSx3REAuWk7m3r7PmOMvTNPMhctbD3CkTw==",
            "MD5OfBody": "07adc3fc889d6107d8bb8fda42fe0573",
            "Body": "{\"MessageBody\":\"Hello, world!",\"QueueUrl\":\"https://sqs.us-west-2.amazonaws.com/123456789012/does-not-exist\"}",
            "Attributes": {
                "SenderId": "AROA2DZE3W4CTL5ZR7EIN:ff00212d8c453aaaae644bc6846d4723",
                "ApproximateFirstReceiveTimestamp": "1652499058144",
                "ApproximateReceiveCount": "2",
                "SentTimestamp": "1652490733042"
            },
            "MD5OfMessageAttributes": "f72c1d78100860e00403d849831d4895",
            "MessageAttributes": {
                "ERROR_CODE": {
                    "StringValue": "AWS.SimpleQueueService.NonExistentQueue",
                    "DataType": "String"
                },
                "ERROR_MESSAGE": {
                    "StringValue": "The specified queue does not exist for this wsdl version.",
                    "DataType": "String"
                },
                "EXECUTION_ID": {
                    "StringValue": "ad06616e51cdf74a",
                    "DataType": "String"
                },
                "EXHAUSTED_RETRY_CONDITION": {
                    "StringValue": "MaximumEventAgeInSeconds",
                    "DataType": "String"
                }
                "IS_PAYLOAD_TRUNCATED": {
                    "StringValue": "false",
                    "DataType": "String"
                },
                "RETRY_ATTEMPTS": {
                    "StringValue": "0",
                    "DataType": "String"
                },
                "SCHEDULED_TIME": {
                    "StringValue": "2022-05-14T01:12:00Z",
                    "DataType": "String"
                },
                "SCHEDULE_ARN": {
                    "StringValue": "arn:aws:scheduler:us-west-2:123456789012:schedule/DLQ-test",
                    "DataType": "String"
                },
                "TARGET_ARN": {
                    "StringValue": "arn:aws:scheduler:::aws-sdk:sqs:sendMessage",
                    "DataType": "String"
                }
            }
        }
    ]
}
```

 Observe os atributos a seguir no evento de mensagens não entregues para ajudá-lo a identificar e solucionar possíveis motivos pelos quais a inovação do destino falhou. 
+  **`ERROR_CODE`**— Contém o código de erro que o EventBridge Scheduler recebe da API de serviço do alvo. No exemplo anterior, o código de erro retornado pelo Amazon SQS é `AWS.SimpleQueueService.NonExistentQueue`. Se o agendamento falhar em invocar um alvo devido a um problema com o EventBridge Scheduler, você verá o seguinte código de erro em vez disso:. `AWS.Scheduler.InternalServerError` 
+  **`ERROR_MESSAGE`**— Contém a mensagem de erro que o EventBridge Scheduler recebe da API de serviço do alvo. No exemplo anterior, a mensagem de erro retornada pelo Amazon SQS é `The specified queue does not exist for this wsdl version`. Se o agendamento falhar devido a um problema com o EventBridge Scheduler, você verá a seguinte mensagem de erro em vez disso:`Unexpected error occurred while processing the request`. 
+  **`TARGET_ARN`**: O ARN do destino que seu agendamento invoca, no seguinte formato de ARN de serviço: `arn:aws:scheduler:::aws-sdk:{{service}}:{{apiAction}}`. 
+  **`EXHAUSTED_RETRY_CONDITION`**: Indica por que o evento foi entregue à DLQ. Esse atributo estará presente se o erro da API-destino for um erro que pode ser repetido e não permanente. O atributo pode conter os valores `MaximumRetryAttempts` se o EventBridge Scheduler o tiver enviado para a DLQ depois de exceder o máximo de tentativas que você configurou para o agendamento ou`MaximumEventAgeInSeconds`, se o evento for maior que a idade máxima que você configurou na programação e ainda não está sendo entregue. 

 No exemplo anterior, podemos determinar, com base no código de erro e na mensagem de erro, que a fila de destino que especificamos para o agendamento não existe. 

**nota**  
Se você usa [destinos universais](managing-targets-universal.md), saiba que o EventBridge Scheduler não valida o conteúdo do `Input` campo no momento da criação do cronograma. Um agendamento com parâmetros de entrada inválidos será criado com sucesso, mas falhará em cada invocação. A mensagem DLQ conterá o código de erro e a mensagem do serviço de destino, o que pode ajudá-lo a identificar o parâmetro inválido. Para obter mais informações, consulte [Configurações inválidas de entrada de destino universal](troubleshooting.md#troubleshooting-usi-target-input).