

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

# Configurar uma fila de mensagens não entregues do Amazon SNS para uma assinatura
<a name="sns-configure-dead-letter-queue"></a>

Uma fila de mensagens mortas é uma fila do Amazon SQS para a qual uma assinatura do Amazon SNS pode enviar mensagens que não podem ser entregues aos assinantes com êxito. As mensagens que não podem ser entregues devido a erros do cliente ou erros do servidor são mantidas na fila de mensagens mortas para análise ou reprocessamento adicionais. Para obter mais informações, consulte [Filas de mensagens não entregues do Amazon SNS](sns-dead-letter-queues.md) e [Novas tentativas de entrega de mensagens do Amazon SNS](sns-message-delivery-retries.md).

Esta página mostra como você pode usar o Console de gerenciamento da AWS, um AWS SDK AWS CLI, o e CloudFormation para configurar uma fila de mensagens mortas para uma assinatura do Amazon SNS.

**nota**  
Em um [tópico FIFO](sns-fifo-topics.md), você pode usar uma fila do Amazon SQS como uma fila de mensagens não entregues para a assinatura do Amazon SNS. As assinaturas de tópicos FIFO usam filas FIFO e as de tópicos padrão usam filas padrão.

## Pré-requisitos
<a name="dead-letter-queue-prerequisites"></a>

Antes de configurar uma fila de mensagens não entregues, complete os seguintes pré-requisitos:

1. [Crie um tópico do Amazon SNS](sns-create-topic.md) chamado `MyTopic`.

1. [Crie uma fila do Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-create-queue.html) chamada `MyEndpoint`, para ser usada como endpoint para a assinatura do Amazon SNS.

1. (Ignorar para CloudFormation) [Inscreva-se na fila do tópico](sns-sqs-as-subscriber.md).

1. [Crie outra fila do Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-create-queue.html) chamada `MyDeadLetterQueue`, para ser usada como a fila de mensagens mortas para a assinatura do Amazon SNS.

1. Para conceder à entidade principal do Amazon SNS acesso à ação da API do Amazon SQS, defina a seguinte política de fila para `MyDeadLetterQueue`.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "sns.amazonaws.com"
         },
         "Action": "SQS:SendMessage",
         "Resource": "arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue",
         "Condition": {
           "ArnEquals": {
             "aws:SourceArn": "arn:aws:sns:us-east-2:123456789012:MyTopic"
           }
         }
       }
     ]
   }
   ```

------

## Para configurar uma fila de mensagens mortas para uma assinatura do Amazon SNS usando o Console de gerenciamento da AWS
<a name="configure-dead-letter-queue-aws-console"></a>

Verifique os [pré-requisitos](#dead-letter-queue-prerequisites) antes de começar este tutorial.

1. Faça login no [console do Amazon SQS](https://console.aws.amazon.com/sqs/).

1. [Crie uma fila do Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-create-queue.html) ou use uma fila existente e anote o ARN da fila na guia **Detalhes** da fila, por exemplo:

   ```
   arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue
   ```

1. Faça login no [console do Amazon SNS](https://console.aws.amazon.com/sns/home).

1. No painel de navegação, escolha **Subscriptions (Assinaturas)**.

1. Na página **Assinaturas** selecione uma inscrição existente e escolha **Editar**.

1. Na *1234a567-bc89-012d-3e45-6fg7h890123i* página **Editar**, expanda a seção **Política do Redrive (fila de mensagens mortas)** e faça o seguinte:

   1. Selecione **Ativado**.

   1. Especifique o ARN de uma fila do Amazon SQS.

1. Escolha **Salvar alterações**.

   A inscrição estará configurada para usar uma fila de mensagens não entregues.

## Para configurar uma fila de mensagens mortas para uma assinatura do Amazon SNS usando um SDK AWS
<a name="configure-dead-letter-queue-aws-sdk"></a>

Antes de executar este exemplo, verifique se você preencheu os [pré-requisitos](#dead-letter-queue-prerequisites).

Para usar um AWS SDK, você deve configurá-lo com suas credenciais. Para obter mais informações, consulte [Os arquivos compartilhados de configuração e credenciais no Guia](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html) de *referência de ferramentas AWS SDKs e ferramentas*.

O código de exemplo a seguir mostra como usar `SetSubscriptionAttributesRedrivePolicy`.

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

**SDK para Java 1.x**  
 Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no [AWS Code Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/java/example_code/sns#code-examples). 

```
// Specify the ARN of the Amazon SNS subscription.
String subscriptionArn =
    "arn:aws:sns:us-east-2:123456789012:MyEndpoint:1234a567-bc89-012d-3e45-6fg7h890123i";

// Specify the ARN of the Amazon SQS queue to use as a dead-letter queue.
String redrivePolicy =
    "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue\"}";

// Set the specified Amazon SQS queue as a dead-letter queue
// of the specified Amazon SNS subscription by setting the RedrivePolicy attribute.
SetSubscriptionAttributesRequest request = new SetSubscriptionAttributesRequest()
    .withSubscriptionArn(subscriptionArn)
    .withAttributeName("RedrivePolicy")
    .withAttributeValue(redrivePolicy);
sns.setSubscriptionAttributes(request);
```

------

## Para configurar uma fila de mensagens mortas para uma assinatura do Amazon SNS usando o AWS CLI
<a name="configure-dead-letter-queue-aws-cli"></a>

Verifique os [pré-requisitos](#dead-letter-queue-prerequisites) antes de começar este tutorial.

1. Instale e configure a AWS CLI. Para obter mais informações, consulte o [Guia do usuário do *AWS Command Line Interface *](https://docs.aws.amazon.com/cli/latest/userguide/).

1. Use o seguinte comando.

   ```
   aws sns set-subscription-attributes \
   --subscription-arn arn:aws:sns:us-east-2:123456789012:MyEndpoint:1234a567-bc89-012d-3e45-6fg7h890123i
   --attribute-name RedrivePolicy
   --attribute-value "{\"deadLetterTargetArn\": \"arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue\"}"
   ```

## Para configurar uma fila de mensagens mortas para uma assinatura do Amazon SNS usando CloudFormation
<a name="configure-dead-letter-queue-aws-cloudformation"></a>

Verifique os [pré-requisitos](#dead-letter-queue-prerequisites) antes de começar este tutorial.

1. Copie o seguinte código JSON em um arquivo denominado `MyDeadLetterQueue.json`.

   ```
   {
     "Resources": {
       "mySubscription": {
         "Type" : "AWS::SNS::Subscription",
         "Properties" : {
           "Protocol": "sqs",
           "Endpoint": "arn:aws:sqs:us-east-2:123456789012:MyEndpoint",
           "TopicArn": "arn:aws:sns:us-east-2:123456789012:MyTopic",
           "RedrivePolicy": {
             "deadLetterTargetArn":
               "arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue"
           }
         }
       }
     }
   }
   ```

1. Faça login no [console do CloudFormation](https://console.aws.amazon.com/cloudformation/).

1. Na página **Selecionar modelo**, selecione **Fazer upload de um modelo no Amazon S3**, selecione o arquivo `MyDeadLetterQueue.json` e escolha **Próximo**. 

1. Na página **Especificar detalhes**, digite `MyDeadLetterQueue` em **Nome da pilha** e escolha **Próximo**. 

1. Na página **Options (Opções)**, escolha **Next (Avançar)**.

1. Na página **Revisar**, escolha **Criar**.

   CloudFormation começa a criar a `MyDeadLetterQueue` pilha e exibe o status **CREATE\$1IN\$1PROGRESS**. Quando o processo estiver concluído, CloudFormation exibirá o status **CREATE\$1COMPLETE**.