Configurazione di una coda Amazon SNS dead-letter per una sottoscrizione - Amazon Simple Notification Service

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

Configurazione di una coda Amazon SNS dead-letter per una sottoscrizione

Una coda DLQ è una coda Amazon SQS a cui un abbonamento Amazon SNS può mirare per i messaggi che non possono essere recapitati correttamente agli abbonati. I messaggi che non possono essere recapitati a causa di errori client o errori server vengono mantenuti nella coda DLQ per ulteriori analisi o elaborazione. Per ulteriori informazioni, consulta Code di lettere non ricevute di Amazon SNS e Tentativi di consegna dei messaggi di Amazon SNS.

Questa pagina mostra come utilizzare AWS Management Console, un AWS SDK AWS CLI, e configurare una coda di lettere non scritte AWS CloudFormation per un abbonamento Amazon SNS.

Nota

Per un Argomento FIFO, puoi utilizzare una coda di Amazon SQS come una coda DLQ per la sottoscrizione ad Amazon SNS. Le sottoscrizioni agli argomenti FIFO utilizzano le code FIFO e le sottoscrizioni agli argomenti standard utilizzano le code standard.

Prerequisiti

Prima di configurare una coda DLQ, completare i seguenti prerequisiti:

  1. Creare un argomento Amazon SNS, denominato MyTopic.

  2. Crear una coda Amazon SQS denominata MyEndpoint, da utilizzare come endpoint per l'abbonamento Amazon SNS.

  3. (Salta per AWS CloudFormation) Iscriviti alla coda per accedere all'argomento.

  4. Creare un'altra coda Amazon SQS denominata MyDeadLetterQueue, da utilizzare come coda dead-letter per la sottoscrizione Amazon SNS.

  5. Per concedere l'accesso Amazon SNS principale all'azione Amazon SQS API, impostare la policy della coda seguente per MyDeadLetterQueue.

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

Per configurare una coda di lettere non scritte per un abbonamento Amazon SNS utilizzando AWS Management Console

Prima di iniziare questo tutorial, completare i prerequisiti descritti di seguito.

  1. Accedere alla console Amazon SQS.

  2. Creare una coda Amazon SQS o utilizzare una coda esistente e prendere nota dell'ARN della coda nella scheda Details (Dettagli) della coda, ad esempio:

    arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue
  3. Accedi alla console Amazon SNS.

  4. Nel riquadro di navigazione, scegli Sottoscrizioni.

  5. Sulla pagina Subscriptions (Abbonamenti), selezionare una sottoscrizione esistente, quindi scegliere Edit (Modifica).

  6. Nella 1234a567-bc89-012d-3e45-6fg7h890123i pagina Modifica, espandi la sezione Redrive policy (dead-letter queue), quindi procedi come segue:

    1. Scegli Enabled (Abilitato).

    2. Specificare l'ARN di una coda Amazon SQS.

  7. Seleziona Save changes (Salva modifiche).

    La sottoscrizione è configurata per l'utilizzo di una coda dead-letter.

Per configurare una coda di lettere non scritte per un abbonamento Amazon SNS utilizzando un SDK AWS

Prima di eseguire questo esempio, completare i prerequisiti.

Per utilizzare un AWS SDK, devi configurarlo con le tue credenziali. Per ulteriori informazioni, consulta I file di configurazione e credenziali condivisi nella and Tools Reference AWS SDKs Guide.

Il seguente esempio di codice mostra come utilizzare. SetSubscriptionAttributesRedrivePolicy

Java
SDK per Java 1.x
Nota

C'è altro da fare GitHub. Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice 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);

Per configurare una coda di lettere non scritte per un abbonamento Amazon SNS utilizzando AWS CLI

Prima di iniziare questo tutorial, completare i prerequisiti descritti di seguito.

  1. Istalla e configura la AWS CLI. Per ulteriori informazioni, consulta la Guida per l'utente AWS Command Line Interface .

  2. Utilizza il seguente 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\"}"

Per configurare una coda di lettere non scritte per un abbonamento Amazon SNS utilizzando AWS CloudFormation

Prima di iniziare questo tutorial, completare i prerequisiti.

  1. Copia il seguente codice JSON in un file denominato 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" } } } } }
  2. Accedi alla console AWS CloudFormation.

  3. Nella pagina Select Template (Seleziona modello) scegliere Upload a template to Amazon S3 (Carica un modello in Amazon S3), selezionare il file MyDeadLetterQueue.json, quindi scegliere Next (Avanti).

  4. Nella pagina Specify Details (Specifica dettagli), digitare MyDeadLetterQueue per Stack Name (Nome stack), quindi scegliere Next (Avanti).

  5. Nella pagina Opzioni, scegli Next (Avanti).

  6. Nella pagina Revisione scegli Create (Crea).

    AWS CloudFormation inizia a creare lo MyDeadLetterQueue stack e visualizza lo stato CREATE_IN_PROGRESS. Quando il processo è completo, visualizza lo stato CREATE_COMPLETE. AWS CloudFormation