Configuration d'une file d'attente de lettres mortes Amazon SNS pour un abonnement - Amazon Simple Notification Service

Configuration d'une file d'attente de lettres mortes Amazon SNS pour un abonnement

Une file d'attente de lettres mortes est une file d'attente Amazon SQS qu'un abonnement Amazon SNS peut cibler pour les messages qui ne peuvent pas être remis aux abonnés avec succès. Les messages qui ne peuvent pas être remis en raison d'erreurs du client ou d'erreurs de serveur sont conservés dans la file d'attente de lettres mortes pour une analyse ou un retraitement ultérieur. Pour plus d'informations, consultez Files d'attente de lettres mortes (DLQ)) d'Amazon SNS et Nouvelle tentative de distribution des messages Amazon SNS.

Cette page montre comment utiliser la AWS Management Console, un kit SDK AWS, la AWS CLI et AWS CloudFormation pour configurer une file d'attente de lettres mortes pour un abonnement Amazon SNS.

Prérequis

Avant de configurer une file d'attente de lettres mortes, remplissez les conditions préalables suivantes :

  1. Créez une rubrique Amazon SNS nommée MyTopic.

  2. Créez une file d'attente Amazon SQS nommée MyEndpoint, à utiliser comme point de terminaison pour l'abonnement Amazon SNS.

  3. (Ignorer pour AWS CloudFormation) Abonnez la file d'attente à la rubrique.

  4. Créez une autre file d'attente Amazon SQS nommée MyDeadLetterQueue, que vous utiliserez en tant que file d'attente de lettres mortes pour l'abonnement Amazon SNS.

  5. Pour accorder au principal Amazon SNS l'accès à l'action d'API Amazon SQS, définissez la politique de file d'attente suivante pour 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" } } }] }

Configurer une file d'attente de lettres mortes pour un abonnement Amazon SNS à l'aide de AWS Management Console

Avant de commencer le tutoriel, assurez-vous que vous remplissez les conditions préalables.

  1. Connectez-vous à la console Amazon SQS.

  2. Créez une file d'attente Amazon SQS ou utilisez une file d'attente existante et notez l'ARN de la file d'attente sous l'onglet Détails de la file d'attente, par exemple :

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

    Pour une rubrique FIFO, utilisez une file d'attente FIFO d'Amazon SQS en tant que file d'attente de lettres mortes pour l'abonnement Amazon SNS.

  3. Connectez-vous à la console Amazon SNS.

  4. Dans le panneau de navigation, choisissez Abonnements.

  5. Sur la page Subscriptions (Abonnements), sélectionnez un abonnement existant, puis choisissez Edit (Modifier).

  6. Sur la page Modifier 1234a567-bc89-012d-3e45-6fg7h890123i, développez la section Politique de redirection (file d'attente de lettres mortes), puis procédez comme suit :

    1. Choisissez Enabled (Activé).

    2. Spécifiez l'ARN d'une file d'attente Amazon SQS.

  7. Choisissez Enregistrer les modifications.

    Votre abonnement est configuré pour utiliser une file d'attente de lettres mortes.

Pour configurer une file d'attente de lettres mortes pour un abonnement Amazon SNS à l'aide d'un kit SDK AWS

Avant d'exécuter cet exemple, assurez-vous de respecter les conditions préalables requises.

Pour utiliser un kit SDK AWS, vous devez le configurer avec vos informations d'identification. Pour de plus amples informations, consultez Les fichiers de configuration et d’informations d’identification partagés dans le Guide de référence des kits SDK et des outils AWS.

L’exemple de code suivant montre comment définir une file d’attente Amazon SQS comme file d’attente de lettres mortes pour un abonnement Amazon SNS.

Java
Kit SDK pour Java 1.x
Astuce

Pour découvrir comment configurer et exécuter cet exemple, consultez GitHub.

// 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);

Configurer une file d'attente de lettres mortes pour un abonnement Amazon SNS à l'aide de AWS CLI

Avant de commencer le tutoriel, assurez-vous que vous remplissez les conditions préalables.

  1. Installation et configuration de l'AWS CLI. Pour de plus amples informations, consultez le AWS Command Line InterfaceGuide de l’utilisateur.

  2. Utilisez la commande suivante.

    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\"}"

Pour configurer une file d'attente de lettres mortes pour un abonnement Amazon SNS à l'aide de AWS CloudFormation

Avant de commencer le tutoriel, assurez-vous que vous remplissez les conditions préalables.

  1. Copiez le code JSON suivant dans un fichier nommé 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. Connectez-vous à la console AWS CloudFormation.

  3. Sur la page Select Template (Sélectionner un modèle), choisissez Upload a template to Amazon S3 (Télécharger un modèle sur Amazon S3), puis votre fichier MyDeadLetterQueue.json, puis Next (Suivant).

  4. Sur la page Specify Details (Spécifier les détails), saisissez MyDeadLetterQueue comme Stack Name (Nom de pile), puis choisissez Next (Suivant).

  5. Dans la page Options, choisissez Next (Suivant).

  6. Sur la page Review (Vérification), choisissez Create (Créer).

    AWS CloudFormation commence à créer la MyDeadLetterQueue pile et affiche l’état CREATE_IN_PROGRESS. Lorsque le processus est terminé, AWS CloudFormation affiche l'état CREATE_COMPLETE.