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.
Configuration d'une file d'attente lettres mortes pour un calendrier
Amazon EventBridge Scheduler prend en charge les files d'attente mortes (DLQ) à l'aide Amazon Simple Queue Service. Lorsqu'un calendrier ne parvient pas à appeler sa cible, EventBridge Scheduler envoie une charge utile JSON contenant les détails de l'appel et toute réponse reçue de la cible à une file d'attente standard Amazon SQS que vous spécifiez.
La rubrique suivante fait référence à ce JSON en tant qu'événement lettre morte. Un événement lettre morte vous permet de résoudre les problèmes liés à votre calendrier ou à vos objectifs. Si vous configurez une politique de nouvelles tentatives en fonction de votre calendrier, EventBridge Scheduler envoie l'événement lettre morte correspondant à l'épuisement du nombre maximum de tentatives que vous avez défini.
Les rubriques suivantes décrivent comment configurer une file d'attente Amazon SQS en tant que DLQ adaptée à votre emploi du temps, définir les autorisations dont le EventBridge planificateur a besoin pour envoyer des messages à Amazon SQS et recevoir des événements inactifs provenant du DLQ.
Rubriques
Créez une file d'attente Amazon SQS.
Avant de configurer une DLQ pour votre planning, vous devez créer une file d'attente Amazon SQS standard. Pour obtenir les instructions sur la création d'une file d'attente à l'aide de la console Amazon SQS, veuillez consulter la section Création d'une file d'attente Amazon SQS dans le guide du développeur Amazon Simple Queue Service.
Note
EventBridge Le planificateur ne prend pas en charge l'utilisation d'une file d'attente FIFO comme DLQ de votre calendrier.
Utilisez laAWS CLI commande suivante pour créer une file d'attente standard.
$
aws sqs create-queue --queue-name
queue-name
Si l'opération aboutit, vous verrez leQueueURL
dans la sortie.
{
"QueueUrl": "https://sqs.us-west-2.amazonaws.com/123456789012/scheduler-dlq-test"
}
Après avoir créé la file d'attente, notez l'ARN de la file d'attente. Vous aurez besoin de l'ARN lorsque vous spécifierez un DLQ pour votre planning EventBridge Scheduler. Vous pouvez trouver l'ARN de votre file d'attente dans la console Amazon SQS ou à l'aide de la get-queue-attributes
$
aws sqs get-queue-attributes --queue-url
your-dlq-url
--attribute-names QueueArn
En cas de succès, vous verrez l'ARN de la file d'attente dans la sortie.
{ "Attributes": { "QueueArn": "arn:aws:sqs:us-west-2:123456789012:scheduler-dlq-test" } }
Dans la section suivante, vous allez ajouter les autorisations requises à votre rôle d'exécution du planning pour permettre à EventBridge Scheduler de transmettre des événements lettre morte à Amazon SQS.
Configurer les autorisations de rôle d'exécution
Pour permettre à EventBridge Scheduler de transmettre des événements lettre morte à Amazon SQS, votre rôle d'exécution du planning doit respecter la politique d'autorisation suivante. Pour plus d'informations sur l'association d'une nouvelle politique d'autorisation à votre rôle d'exécution du planning, consultez la section Configuration du rôle d'exécution.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sqs:SendMessage" ], "Effect": "Allow", "Resource": "*" } ] }
Note
Votre rôle d'exécution du planning est peut-être déjà associé aux autorisations requises si vous utilisez EventBridge Scheduler pour appeler une cible d'API Amazon SQS.
Dans la section suivante, vous allez utiliser la console du EventBridge planificateur et définir un DLQ pour votre planning.
Spécifier une file d'attente de lettres mortes mortes mortes mortes mortes
Pour spécifier un DLQ, utilisez la console EventBridge Scheduler ouAWS CLI pour mettre à jour un calendrier existant ou en créer un nouveau.
Dans la section suivante, vous allez utiliser leAWS CLI pour recevoir un événement de lettres mortes de la part du DLQ.
Récupérez l'événement de lettres mortes mortes mortes
Utilisez la receive-message
--max-number-of-messages
attribut.
$
aws sqs receive-message --queue-url
your-dlq-url
--attribute-names All --message-attribute-names All --max-number-of-messages 1
Si l'opération aboutit, vous verrez des résultats similaires à ce qui suit.
{ "Messages": [ { "MessageId": "2aeg3510-fe3a-4f5a-ab6a-6906560eaf7e", "ReceiptHandle": "AQEBkNKTdOMrWgHKPoITRBwrPoK3eCSZIcZwVqCY0BZ+FfTcORFpopJbtCqj36VbBTlHreM8+qM/m5jcwqSlAlGmIJO/hYmMgn/+dwIty9izE7HnpvRhhEyHxbeTZ5V05RbeasYaBdNyi9WLcnAHviDh6MebLXXNWoFyYNsxdwJuG0f/w3htX6r3dxpXvvFNPGoQb8ihY37+u0gtsbuIwhLtUSmE8rbldEEwiUfi3IJ1zEZpUS77n/k1GWrMrnYg0Gx/BuaLzOrFi2F738XI/Hnh45uv3ca6OYwS1ojPQ1LtX2URg1haV5884FYlaRvY8jRlpCZabTkYRTZKSXG5KNgYZnHpmsspii6JNkjitYVFKPo0H91w5zkHlSx3REAuWk7m3r7PmOMvTNPMhctbD3CkTw==", "MD5OfBody": "07adc3fc889d6107d8bb8fda42fe0573", "Body": "{\"MessageBody\":\"Hello, world!",\"QueueUrl\":\"https://sqs.us-west-2.amazonaws.com/123456789012/does-not-exist\"}", "Attributes": { "SenderId": "AROA2DZE3W4CTL5ZR7EIN:ff00212d8c453aaaae644bc6846d4723", "ApproximateFirstReceiveTimestamp": "1652499058144", "ApproximateReceiveCount": "2", "SentTimestamp": "1652490733042" }, "MD5OfMessageAttributes": "f72c1d78100860e00403d849831d4895", "MessageAttributes": { "ERROR_CODE": { "StringValue": "AWS.SimpleQueueService.NonExistentQueue", "DataType": "String" }, "ERROR_MESSAGE": { "StringValue": "The specified queue does not exist for this wsdl version.", "DataType": "String" }, "EXECUTION_ID": { "StringValue": "ad06616e51cdf74a", "DataType": "String" }, "EXHAUSTED_RETRY_CONDITION": { "StringValue": "MaximumEventAgeInSeconds", "DataType": "String" } "IS_PAYLOAD_TRUNCATED": { "StringValue": "false", "DataType": "String" }, "RETRY_ATTEMPTS": { "StringValue": "0", "DataType": "String" }, "SCHEDULED_TIME": { "StringValue": "2022-05-14T01:12:00Z", "DataType": "String" }, "SCHEDULE_ARN": { "StringValue": "arn:aws:scheduler:us-west-2:123456789012:schedule/DLQ-test", "DataType": "String" }, "TARGET_ARN": { "StringValue": "arn:aws:scheduler:::aws-sdk:sqs:sendMessage", "DataType": "String" } } } ] }
Notez les attributs suivants dans l'événement lettre morte pour vous aider à identifier et à résoudre les causes possibles de l'échec de l'inovcation cible.
-
ERROR_CODE
— Contient le code d'erreur que EventBridge Scheduler reçoit de l'API de service de la cible. Dans l'exemple précédent, le code d'erreur renvoyé par Amazon SQS estAWS.SimpleQueueService.NonExistentQueue
. Si le calendrier ne parvient pas à appeler une cible en raison d'un problème avec le EventBridge planificateur, le code d'erreur suivant s'affichera à la place :AWS.Scheduler.InternalServerError
. -
ERROR_MESSAGE
— Contient le message d'erreur que EventBridge Scheduler reçoit de l'API de service de la cible. Dans l'exemple précédent, le message d'erreur renvoyé par Amazon SQS estThe specified queue does not exist for this wsdl version
. Si le planning échoue en raison d'un problème avec EventBridge Scheduler, le message d'erreur suivant s'affichera à la place :Unexpected error occurred while processing the request
. -
TARGET_ARN
— L'ARN de la cible invoquée par votre planning, au format ARN de service suivant :arn:aws:scheduler:::aws-sdk:
.service
:apiAction
-
EXHAUSTED_RETRY_CONDITION
— Indique pourquoi l'événement a été transmis au DLQ. Cet attribut sera présent si l'erreur provenant de l'API cible est une erreur réessayable et non une erreur permanente. L'attribut peut contenir les valeursMaximumRetryAttempts
si EventBridge Scheduler l'a envoyé au DLQ après avoir dépassé le nombre maximum de tentatives que vous avez configuré pour le calendrierMaximumEventAgeInSeconds
, ou si l'événement est antérieur à l'âge maximum que vous avez configuré dans le calendrier et ne parvient toujours pas à être diffusé.
Dans l'exemple précédent, nous pouvons déterminer, sur la base du code d'erreur et du message d'erreur, que la file d'attente cible que nous avons spécifiée pour le planning n'existe pas.