Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Files d'attente aux lettres mortes Amazon SNS
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 Configuration d'une file d'attente de lettres mortes Amazon SNS pour un abonnement et Nouvelle tentative de distribution des messages Amazon SNS.
Note
L'abonnement Amazon SNS et la file d'attente Amazon SQS doivent appartenir au même AWS compte et à la même région.
-
Pour une rubrique FIFO, vous pouvez utiliser une file d'attente Amazon SQS en tant que file d'attente de lettres mortes pour l'abonnement Amazon SNS. Les abonnements aux rubriques FIFO utilisent des files d'attente FIFO, tandis que les abonnements aux rubriques standard utilisent des files d'attente standard.
Pour utiliser une file d'attente Amazon SQS chiffrée comme file d'attente de lettres mortes, vous devez utiliser un KMS personnalisé avec une politique clé qui accorde au service Amazon SNS l'accès principal aux actions d'API. AWS KMS Pour plus d'informations, consultez Sécurisation des données Amazon SNS grâce au chiffrement côté serveur ce guide et la section Protection des données Amazon SQS à l'aide du Server-Side chiffrement (SSE), ainsi AWS KMS que le guide du développeur Amazon Simple Queue Service.
Pourquoi les distributions de messages échouent-elles ?
En général, la distribution des messages échoue lorsqu'Amazon SNS ne peut pas accéder à un point de terminaison souscrit en raison d'une erreur côté client ou côté serveur. Lorsqu'Amazon SNS reçoit une erreur côté client ou continue de recevoir une erreur côté serveur pour un message au-delà du nombre de tentatives spécifié par la politique de nouvelle tentative correspondante, Amazon SNS rejette le message – sauf si une file d'attente de lettres mortes est attachée à l'abonnement. Les distributions qui échouent ne modifient pas le statut de vos abonnements. Pour plus d’informations, consultez Nouvelle tentative de distribution des messages Amazon SNS.
Client-side erreurs
Client-side des erreurs peuvent survenir lorsqu'Amazon SNS possède des métadonnées d'abonnement obsolètes. Ces erreurs se produisent généralement lorsqu'un propriétaire supprime le point de terminaison (par exemple une fonction Lambda abonnée à une rubrique Amazon SNS) ou lorsqu'un propriétaire modifie la politique attachée au point de terminaison souscrit d'une manière qui empêche Amazon SNS de délivrer des messages au point de terminaison. Amazon SNS ne réessaie pas de remettre le message qui échoue en raison d'une erreur côté client.
Server-side erreurs
Server-side des erreurs peuvent survenir lorsque le système responsable du point de terminaison abonné devient indisponible ou renvoie une exception indiquant qu'il ne peut pas traiter une demande valide provenant d'Amazon SNS. Lorsque des erreurs côté serveur se produisent, Amazon SNS relance les distributions échouées à l'aide d'une fonction backoff exponentiel ou linéaire. Pour les erreurs côté serveur causées par des points de terminaison AWS gérés soutenus par Amazon SQS ou Amazon SNS retente la livraison jusqu'à 100 015 fois AWS Lambda, en 23 jours.
Les points de terminaison gérés par le client (notamment HTTP, SMTP, SMS ou push mobile) peuvent également provoquer des erreurs côté serveur. Amazon SNS tente de nouveau l'envoi vers ces types de points de terminaison également. Alors que les points de terminaison HTTP prennent en charge les politiques de nouvelle tentative définies par le client, Amazon SNS définit une politique de nouvelle tentative de distribution interne à 50 fois sur 6 heures, pour les points de terminaison SMTP, SMS et push mobiles.
Fonctionnement des files d'attente de lettres mortes
Une file d'attente de lettres mortes est attachée à un abonnement Amazon SNS (plutôt qu'à une rubrique), car les messages sont délivrés au niveau de l'abonnement. Cela vous permet d'identifier plus facilement le point de terminaison cible d'origine pour chaque message.
Une file d'attente de lettres mortes associée à un abonnement Amazon SNS est une file d'attente Amazon SQS ordinaire. Pour de plus amples informations sur la période de rétention des messages, consultez Quotas liés aux messages dans le Guide du développeur Amazon Simple Queue Service. Vous pouvez modifier la période de rétention des messages à l'aide de l'action d'API SetQueueAttributes d'Amazon SQS. Pour rendre vos applications plus résilientes, nous vous recommandons de fixer à 14 jours la période de rétention maximale pour les files d'attente de lettres mortes.
Comment les messages sont-ils déplacés dans une file d'attente de lettres mortes ?
Vos messages sont déplacés dans une file d'attente de lettres mortes à l'aide d'une politique de redirection. Une politique de redirection est un objet JSON qui fait référence à l'ARN de la file d'attente de lettres mortes. L'attribut deadLetterTargetArn spécifie l’ARN. L'ARN doit pointer vers une file d'attente Amazon SQS située dans la même Compte AWS région que celle de votre abonnement Amazon SNS. Pour plus d’informations, consultez Configuration d'une file d'attente de lettres mortes Amazon SNS pour un abonnement.
L'objet JSON suivant est un exemple de politique de redirection attachée à un abonnement SNS.
{
"deadLetterTargetArn": "arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue"
}
Comment puis-je déplacer des messages hors d'une file d'attente de lettres mortes ?
Vous pouvez déplacer les messages hors d'une file d'attente de lettres mortes de deux façons :
-
Éviter d'écrire une logique de consommateur Amazon SQS – Définissez votre file d'attente de lettres mortes comme source d'évènement pour la fonction Lambda afin de purger votre file d'attente de lettres mortes.
-
Écrivez la logique client Amazon SQS : utilisez l'API Amazon SQS, le AWS SDK ou AWS CLI pour écrire une logique client personnalisée pour interroger, traiter et supprimer les messages de la file d'attente de lettres mortes.
Comment puis-je contrôler et consigner les files d'attente de lettres mortes ?
Vous pouvez utiliser CloudWatch les métriques Amazon pour surveiller les files d'attente associées à vos abonnements Amazon SNS. Toutes les files d'attente Amazon SQS émettent CloudWatch des métriques à intervalles d'une minute. Pour plus d'informations, consultez la section CloudWatch Statistiques disponibles pour Amazon SQS dans le guide du développeur Amazon Simple Queue Service. Tous les abonnements Amazon SNS dont les files d'attente sont réservées aux lettres mortes émettent également des métriques. CloudWatch Pour plus d’informations, consultez Surveillance des sujets Amazon SNS à l'aide de CloudWatch.
Pour être informé de l'activité de vos files d'attente aux lettres mortes, vous pouvez utiliser CloudWatch des métriques et des alarmes. La configuration d'une alarme pour la NumberOfMessagesSent métrique n'est pas appropriée car cette métrique ne capture pas les messages envoyés à un DLQ en raison de tentatives de traitement infructueuses. Utilisez plutôt la ApproximateNumberOfMessagesVisible métrique, qui capture tous les messages actuellement disponibles dans le DLQ, y compris ceux déplacés en raison d'échecs de traitement.
Exemple de configuration CloudWatch d'alarme
-
Créez une CloudWatch alarme pour la
ApproximateNumberOfMessagesVisiblemétrique. -
Réglez le seuil d'alarme sur 1 (ou une autre valeur appropriée en fonction de vos attentes et du trafic DLQ).
-
Spécifiez une rubrique Amazon SNS pour être averti lorsque l'alarme se déclenche. Cette rubrique Amazon SNS peut délivrer votre notification d'alarme à n'importe quel type de point de terminaison (par exemple, une adresse e-mail, un numéro de téléphone ou une application de téléavertisseur mobile).
Vous pouvez utiliser CloudWatch les journaux pour étudier les exceptions à l'origine de l'échec de toute livraison Amazon SNS et pour l'envoi de messages vers des files d'attente réservées aux lettres mortes. Amazon SNS peut enregistrer à la fois les livraisons réussies et les livraisons échouées CloudWatch. Pour plus d'informations, consultez Attributs de l'application mobile Amazon SNS.