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.
Débogage de la livraison d’événements
Les problèmes de diffusion d'événements peuvent être difficiles à identifier. EventBridge Il existe plusieurs moyens de déboguer et de récupérer en cas d'échec de livraison d'événements.
Comment EventBridge réessaie d'organiser des événements
Parfois, un événement n’est pas correctement livré à la cible spécifiée dans une règle. Cela peut se produire, par exemple :
Si la ressource cible n'est pas disponible
En raison de l'état du réseau
Lorsqu'un événement n'est pas correctement transmis à une cible en raison d'erreurs récupérables, EventBridge réessaie d'envoyer l'événement. Vous définissez la durée des tentatives et le nombre de nouvelles tentatives dans les paramètres Politique de nouvelles tentatives de la cible. Par défaut, EventBridge réessaie d'envoyer l'événement pendant 24 heures et jusqu'à 185 fois avec un retard exponentiel ou un délai
Si un événement n'est pas délivré une fois toutes les tentatives épuisées, l'événement est abandonné et son traitement EventBridge ne se poursuit pas.
Utilisation de files d'attente de lettres mortes pour traiter les événements non livrés
Pour éviter de perdre des événements qui ne parviennent pas à être livrés à une cible, vous pouvez configurer une file d’attente de lettres mortes (DLQ) et lui envoyer tous les événements ayant échoué pour qu’ils soient traités ultérieurement.
EventBridge Les DLQ sont des files d'attente EventBridge Amazon SQS standard utilisées pour stocker des événements qui n'ont pas pu être transmis à une cible. Lorsque vous créez une règle et ajoutez une cible, vous pouvez choisir d’utiliser ou non une DLQ. Lorsque vous configurez une DLQ, vous pouvez conserver tous les événements qui n’ont pas été correctement livrés. 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 une DLQ pour la cible d'une règle, EventBridge envoie les événements ayant échoué à la file d'attente Amazon SQS sélectionnée.
Les erreurs d’événement sont traitées de différentes façons. Certains événements sont supprimés ou envoyés à une DLQ sans effectuer de 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 au DLQ cible, 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 un DLQ, des métriques supplémentaires sont envoyées aux adresses suivantes : CloudWatch y compris InvocationsSentToDLQ
etInvocationsFailedToBeSentToDLQ
.
Vous pouvez également spécifier des DLQ pour les 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 plus d’informations, consultez Utilisation de files d'attente contenant des lettres mortes pour capturer les erreurs liées aux événements chiffrés.
Chaque message de votre DLQ inclura les attributs personnalisés suivants :
RULE_ARN
TARGET_ARN
ERROR_CODE
Voici des exemples de code d’erreur qu’une DLQ peut 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 la configuration des DLQ :
Rubriques
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 file d'attente FIFO pour un DLQ dans. 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 nouvelle tentative épuisée, l'ARN de la règle, les tentatives de nouvelle tentative et l'ARN cible. Vous pouvez utiliser ces valeurs pour identifier un événement et la cause de l’échec.
-
Autorisations pour les DLQ dans le même compte :
-
Si vous ajoutez une cible à une règle à l'aide de la console et que vous choisissez une file d'attente Amazon SQS dans le même compte, une politique basée sur les ressources qui accorde l' EventBridge accès à la file d'attente est attachée à la file d'attente pour vous.
-
Si vous utilisez l' EventBridge API
PutTargets
pour ajouter ou mettre à jour une cible pour une règle, et que vous choisissez une file d'attente Amazon SQS dans le même compte, vous devez accorder manuellement des autorisations à la file d'attente sélectionnée. Pour en savoir plus, veuillez consulter la section Octroi d’autorisations à la file d’attente de lettres mortes.
-
-
Autorisations d'utilisation des files d'attente Amazon SQS à partir d'un autre compte. AWS
-
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 l’ARN de la file d’attente dans l’autre compte, puis attacher manuellement une politique basée sur les ressources pour accorder l’autorisation à la file d’attente. Pour en savoir plus, veuillez consulter la section Octroi d’autorisations à la file d’attente de lettres mortes.
-
Si vous créez une règle à l’aide de l’API, vous devez attacher manuellement une politique basée sur les ressources aux files d’attente SQS d’un autre compte utilisé comme file d’attente de lettres mortes. Pour en savoir plus, veuillez consulter la section Octroi d’autorisations à la file d’attente de lettres mortes.
-
-
La file d’attente Amazon SQS que vous utilisez doit se trouver dans la même région que celle dans laquelle vous créez 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 un DLQ à l'aide de la EventBridge console, les autorisations sont automatiquement ajoutées. Cela consiste notamment à :
Lorsque vous configurez une DLQ pour la cible d'une règle.
Lorsque vous configurez un DLQ pour un bus d'événements lorsque vous avez spécifié l' EventBridge utilisation d'un AWS KMS clé gérée par le client pour chiffrer les événements au repos.
Pour plus d’informations, consultez Utilisation de files d'attente contenant des lettres mortes pour capturer les erreurs liées aux événements chiffrés.
Si vous spécifiez un DLQ à l'aide de l'API, ou si vous utilisez une file d'attente qui se trouve 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.
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 Amazon SQS. L'exemple de politique accorde au EventBridge service l'autorisation d'utiliser l'SendMessage
opé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 pour un bus d'événements. Dans ce cas, aws:SourceArn
spécifie l'ARN du bus d'événements qui envoie les événements au DLQ. 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 attacher la politique à la file d’attente, utilisez la console Amazon SQS, ouvrez la file d’attente, puis choisissez la stratégie d’accès et modifiez-la. Vous pouvez également utiliser AWS CLI. Pour en savoir plus, veuillez consulter la section Autorisations Amazon SQS.
Comment renvoyer des événements à partir d’une file d’attente de lettres mortes
Vous pouvez déplacer les messages hors d’une DLQ de deux façons :
-
Éviter d’écrire une logique de consommateur Amazon SQS : définissez votre DLQ en tant que source d’évènement pour la fonction Lambda afin de purger votre DLQ.
-
Rédigez la logique client Amazon SQS : utilisez l'API Amazon SQS AWS , le SDK AWS CLI ou écrivez une logique client personnalisée pour interroger, traiter et supprimer les messages dans le DLQ.