Utilisation de files d'attente de lettres mortes pour traiter les événements non livrés dans EventBridge - Amazon EventBridge

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.

Utilisation de files d'attente de lettres mortes pour traiter les événements non livrés dans EventBridge

Pour éviter de perdre des événements lorsqu'ils ne sont pas transmis à une cible, vous pouvez configurer une file d'attente contenant des lettres mortes (DLQ) et lui envoyer tous les événements ayant échoué pour qu'ils soient traités ultérieurement.

EventBridge DLQssont des SQS files d'attente Amazon standard EventBridge utilisées pour stocker des événements qui n'ont pas pu être transmis avec succès à une cible. Lorsque vous créez une règle et ajoutez une cible, vous pouvez choisir d'utiliser ou non unDLQ. Lorsque vous configurez unDLQ, vous pouvez conserver tous les événements qui n'ont pas été correctement transmis. Vous pouvez ensuite résoudre le problème ayant provoqué l’échec de la livraison des événements et traiter les événements ultérieurement.

Lorsque vous configurez un DLQ pour la cible d'une règle, EventBridge envoie les événements dont les appels ont échoué à la SQS file d'attente Amazon sélectionnée.

Les erreurs d’événement sont traitées de différentes façons. Certains événements sont abandonnés ou envoyés à un DLQ sans aucune nouvelle tentative. Par exemple, pour les erreurs résultant de l'absence d'autorisations sur une cible, ou si une ressource cible n'existe plus, aucune nouvelle tentative n'aura lieu tant que des mesures ne seront pas prises pour résoudre le problème sous-jacent. EventBridge envoie ces événements directement à la cibleDLQ, si vous en avez spécifié un.

En cas d'échec de la diffusion d'un événement, EventBridge publie un événement sur Amazon CloudWatch Metrics indiquant qu'un objectif invocation a échoué. Si vous utilisez unDLQ, des métriques supplémentaires sont envoyées à, CloudWatch y compris InvocationsSentToDLQ etInvocationsFailedToBeSentToDLQ.

Vous pouvez également spécifier DLQs des bus d'événements, si vous les utilisez AWS KMS clés gérées par le client pour chiffrer des événements au repos. Pour de plus amples informations, veuillez consulter Utilisation de files d'attente contenant des lettres mortes pour capturer les erreurs d'événements chiffrées dans EventBridge.

Chaque message de votre DLQ testament inclura les attributs personnalisés suivants :

  • RULE_ARN

  • TARGET_ARN

  • ERROR_CODE

    Voici un exemple des codes d'erreur que je DLQ peux renvoyer :

    • CONNECTION_FAILURE

    • CROSS_ACCOUNT_INGESTION_FAILED

    • CROSS_REGION_INGESTION_FAILED

    • ERROR_FROM_TARGET

    • EVENTS_IN_BATCH_REQUEST_REJECTED

    • EVENTS_IN_BATCH_REQUEST_REJECTED

    • FAILED_TO_ASSUME_ROLE

    • INTERNAL_ERROR

    • INVALID_JSON

    • INVALID_PARAMETER

    • NO_PERMISSIONS

    • NO_RESOURCE

    • RESOURCE_ALREADY_EXISTS

    • RESOURCE_LIMIT_EXCEEDED

    • RESOURCE_MODIFICATION_COLLISION

    • SDK_CLIENT_ERROR

    • THIRD_ACCOUNT_HOP_DETECTED

    • THIRD_REGION_HOP_DETECTED

    • THROTTLING

    • TIMEOUT

    • TRANSIENT_ASSUME_ROLE

    • UNKNOWN

  • ERROR_MESSAGE

  • EXHAUSTED_RETRY_CONDITION

    Les conditions suivantes peuvent être renvoyées :

    • MaximumRetryAttempts

    • MaximumEventAgeInSeconds

  • RETRY_ATTEMPTS

La vidéo suivante décrit les paramètres DLQs :

Considérations relatives à l’utilisation d’une file d’attente de lettres mortes

Tenez compte des points suivants lors de la configuration d'un DLQ pour EventBridge.

  • Seules les files d’attente standard sont prises en charge. Vous ne pouvez pas utiliser une FIFO file d'attente pour DLQ entrer EventBridge.

  • EventBridge inclut les métadonnées de l'événement et les attributs du message dans le message, notamment : le code d'erreur, le message d'erreur, la condition de tentative épuisée, la règleARN, les tentatives de nouvelle tentative et la cible. ARN Vous pouvez utiliser ces valeurs pour identifier un événement et la cause de l’échec.

  • Autorisations pour DLQs le même compte :

    • Si vous ajoutez une cible à une règle à l'aide de la console et que vous choisissez une SQS file d'attente Amazon dans le même compte, une politique basée sur les ressources qui autorise l' EventBridge accès à la file d'attente est attachée à la file d'attente pour vous.

    • Si vous utilisez l'PutTargetsopération pour ajouter ou mettre EventBridge API à jour une cible pour une règle et que vous choisissez une SQS file d'attente Amazon dans le même compte, vous devez accorder manuellement des autorisations à la file d'attente sélectionnée. Pour en savoir plus, consultez Octroi d’autorisations à la file d’attente de lettres mortes.

  • Autorisations d'utilisation des SQS files d'attente Amazon à partir d'un autre AWS compte.

    • Si vous créez une règle à partir de la console, les files d’attente des autres comptes ne sont pas affichées pour que vous puissiez les sélectionner. Vous devez fournir la ARN file d'attente dans l'autre compte, puis associer manuellement une politique basée sur les ressources pour accorder l'autorisation à la file d'attente. Pour en savoir plus, consultez Octroi d’autorisations à la file d’attente de lettres mortes.

    • Si vous créez une règle à l'aide duAPI, vous devez associer manuellement une politique basée sur les ressources aux SQS files d'attente d'un autre compte utilisé comme file d'attente de lettres mortes. Pour en savoir plus, consultez Octroi d’autorisations à la file d’attente de lettres mortes.

  • La SQS file d'attente Amazon que vous utilisez doit se trouver dans la même région que celle dans laquelle vous avez créé la règle.

Octroi d’autorisations à la file d’attente de lettres mortes

Pour transmettre correctement les événements à la file d'attente, vous EventBridge devez être autorisé à le faire. Lorsque vous spécifiez une DLQ utilisation de la EventBridge console, les autorisations sont automatiquement ajoutées. Cela consiste notamment à :

Si vous spécifiez un compte DLQ utilisant ou utilisez une file d'attente se trouvant dans un autre AWS compte, vous devez créer manuellement une politique basée sur les ressources qui accorde les autorisations requises, puis l'associer à la file d'attente. API

Exemple d'autorisations de file d'attente pour les lettres mortes

La politique basée sur les ressources suivante explique comment accorder les autorisations requises pour envoyer des messages d'événements EventBridge à une file d'attente AmazonSQS. L'exemple de politique accorde au EventBridge service l'autorisation d'utiliser l'SendMessageopération pour envoyer des messages à une file d'attente nommée « MyEvent DLQ ». La file d'attente doit se trouver dans la région us-west-2 sur le compte 123456789012. AWS La Condition déclaration autorise uniquement les demandes provenant d'une règle nommée « MyTestRule » créée dans la région us-west-2 sur le compte 123456789012. AWS

{ "Sid": "Dead-letter queue permissions", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-west-2:123456789012:MyEventDLQ", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:events:us-west-2:123456789012:rule/MyTestRule" } } }

Exemple d'autorisations de file d'attente de lettres mortes dans un bus d'événements

La politique basée sur les ressources suivante montre comment accorder les autorisations requises lors de la spécification d'un DLQ bus d'événements. Dans ce cas, aws:SourceArn indique le bus ARN d'événements qui envoie les événements auDLQ. Ici encore, dans cet exemple, la file d'attente doit se trouver dans la même région que le bus d'événements.

{ "Sid": "Dead-letter queue permissions", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:region:account-id:queue-name", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:events:region:account-id:event-bus/event-bus-arn" } } }

Pour associer la politique à la file d'attente, utilisez la SQS console Amazon, ouvrez la file d'attente, puis choisissez la politique d'accès et modifiez-la. Vous pouvez également utiliser AWS CLI. Pour en savoir plus, consultez SQSAutorisations Amazon.

Comment renvoyer des événements à partir d’une file d’attente de lettres mortes

Vous pouvez déplacer des messages depuis un DLQ de deux manières :

  • Évitez d'écrire Amazon SQS Consumer Logic : DLQ définissez votre source d'événements sur la fonction Lambda pour épuiser votre. DLQ

  • Rédigez la logique du SQS consommateur Amazon — Utilisez Amazon SQS API AWS SDK, ou AWS CLI pour écrire une logique de consommateur personnalisée pour interroger, traiter et supprimer les messages contenus dans leDLQ.