Configurando uma fila de mensagens SNS mortas da Amazon para uma assinatura - Amazon Simple Notification Service

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 uma fila de mensagens SNS mortas da Amazon para uma assinatura

Uma fila de cartas mortas é uma fila da Amazon SQS que uma SNS assinatura da Amazon pode direcionar para mensagens que não podem ser entregues aos assinantes com sucesso. 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 ter mais informações, consulte Filas de SNS cartas mortas da Amazon e Tentativas de entrega de SNS mensagens da Amazon.

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

nota

Para um FIFOtópico, você pode usar uma SQS fila da Amazon como uma fila de cartas mortas para a assinatura da Amazon. SNS FIFOas assinaturas de tópicos usam FIFO filas e as assinaturas de tópicos padrão usam filas padrão.

Pré-requisitos

Antes de configurar uma fila de mensagens mortas, complete os seguintes pré-requisitos:

  1. Crie um SNS tópico da Amazon chamadoMyTopic.

  2. Crie uma SQS fila da Amazon chamadaMyEndpoint, para ser usada como ponto final da assinatura da AmazonSNS.

  3. (Ignorar para AWS CloudFormation) Inscreva-se na fila do tópico.

  4. Crie outra SQS fila da Amazon chamadaMyDeadLetterQueue, para ser usada como fila de mensagens mortas para a assinatura da Amazon. SNS

  5. Para dar acesso SNS principal à Amazon à SQS API ação da Amazon, defina a seguinte política de fila paraMyDeadLetterQueue.

    { "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 da Amazon SNS usando o AWS Management Console

Verifique os pré-requisitos antes de começar este tutorial.

  1. Faça login no SQSconsole da Amazon.

  2. Crie uma SQS fila da Amazon ou use uma fila existente e anote o ARN número da fila na guia Detalhes da fila, por exemplo:

    arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue
  3. Faça login no SNSconsole da Amazon.

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

  5. Na página Subscriptions (Inscrições) selecione uma inscrição existente e escolha Edit (Editar).

  6. Na edição 1234a567-bc89-012d-3e45-6fg7h890123ipágina, expanda a seção Política do Redrive (fila de cartas mortas) e faça o seguinte:

    1. Selecione Ativado.

    2. Especifique o ARN de uma SQS fila da Amazon.

  7. Escolha Salvar alterações.

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

Para configurar uma fila de mensagens mortas para uma assinatura da Amazon SNS usando um AWS SDK

Antes de executar este exemplo, verifique se você preencheu os pré-requisitos.

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 de referência de ferramentas AWS SDKs e ferramentas.

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

Java
SDKpara Java 1.x
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS.

// 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 da Amazon SNS usando o AWS CLI

Verifique os pré-requisitos 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 .

  2. 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 da Amazon usando SNS AWS CloudFormation

Verifique os pré-requisitos antes de começar este tutorial.

  1. Copie o JSON código a seguir em um arquivo chamadoMyDeadLetterQueue.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" } } } } }
  2. Faça login no console do AWS CloudFormation.

  3. Na página Select Template (Selecionar modelo), selecione Upload a template to Amazon S3 (Fazer upload de um modelo no Amazon S3), selecione o arquivo MyDeadLetterQueue.json e escolha Next (Próximo).

  4. Na página Specify Details (Especificar detalhes), digite MyDeadLetterQueue em Stack Name (Nome da pilha) e escolha Next (Próximo).

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

  6. Na página Review (Revisar), escolha Create (Criar).

    AWS CloudFormation começa a criar a MyDeadLetterQueue pilha e exibe o status CREATE_IN_ PROGRESS. Quando o processo estiver concluído, AWS CloudFormation exibirá o COMPLETE status CREATE_.