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 de la file d'attente des lettres mortes d'un planning dans le planificateur EventBridge
Amazon EventBridge Scheduler prend en charge les files d'attente contenant des lettres mortes () à DLQ l'aide d'Amazon Simple Queue Service. Lorsqu'un planning ne parvient pas à invoquer sa cible, EventBridge Scheduler envoie une JSON charge utile contenant les détails de l'invocation et toute réponse reçue de la cible à une file d'attente SQS standard Amazon que vous spécifiez.
La rubrique suivante appelle cela JSON un événement lettre morte. Un événement avec 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 pour votre calendrier, le EventBridge planificateur envoie l'événement lettre morte correspondant au nombre maximal de tentatives que vous avez défini.
Les rubriques suivantes décrivent comment configurer une SQS file d'attente Amazon en fonction de votre calendrier, configurer les autorisations dont le EventBridge planificateur a besoin DLQ pour envoyer des messages à Amazon SQS et recevoir des événements de lettre morte de la part du. DLQ
Rubriques
Création d'une SQS file d'attente Amazon
Avant de configurer un DLQ pour votre planning, vous devez créer une file d'SQSattente Amazon standard. Pour obtenir des instructions sur la création d'une file d'attente à l'aide de la SQS console Amazon, consultez la section Création d'une SQS file d'attente Amazon dans le manuel Amazon Simple Queue Service Developer Guide.
Note
EventBridge Le planificateur ne prend pas en charge l'utilisation FIFO d'une file d'attente comme calendrier. DLQ
Utilisez la AWS CLI commande suivante pour créer une file d'attente standard.
$
aws sqs create-queue --queue-name
queue-name
En cas de succès, vous le verrez QueueURL
dans le résultat.
{
"QueueUrl": "https://sqs.us-west-2.amazonaws.com/123456789012/scheduler-dlq-test"
}
Après avoir créé la file d'attente, notez la file d'attenteARN. Vous en aurez besoin ARN lorsque vous spécifierez un DLQ pour votre calendrier de EventBridge planificateur. Vous pouvez trouver votre file d'attente ARN dans la SQS console Amazon 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 la file d'attente ARN 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 sans réponse à Amazon. SQS
Configurer les autorisations des rôles d'exécution
Pour permettre à EventBridge Scheduler de transmettre des événements sans date limite à AmazonSQS, votre rôle d'exécution du calendrier doit respecter la politique d'autorisation suivante. Pour plus d'informations sur l'attachement d'une nouvelle politique d'autorisation à votre rôle d'exécution de planification, voir 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 de planification dispose peut-être déjà des autorisations requises si vous utilisez EventBridge Scheduler pour appeler une cible Amazon SQSAPI.
Dans la section suivante, vous allez utiliser la console du EventBridge planificateur et spécifier un DLQ pour votre planning.
Spécifier une file d'attente de lettres mortes
Pour spécifier unDLQ, utilisez la console du EventBridge planificateur ou AWS CLI pour mettre à jour un calendrier existant ou en créer un nouveau.
Dans la section suivante, vous allez utiliser le AWS CLI pour recevoir un événement lettre morte de la part du. DLQ
Récupérez l'événement « lettre morte »
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
En cas de succès, vous obtiendrez un résultat similaire à 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 de lettre morte pour vous aider à identifier et à résoudre les problèmes pouvant expliquer l'échec de l'appel cible.
-
ERROR_CODE
— Contient le code d'erreur que le EventBridge planificateur reçoit du service de la cible. API Dans l'exemple précédent, le code d'erreur renvoyé par Amazon SQS estAWS.SimpleQueueService.NonExistentQueue
. Si le calendrier ne parvient pas à invoquer 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 le EventBridge planificateur reçoit du service de la cible. API 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 calendrier échoue en raison d'un problème avec le EventBridge planificateur, le message d'erreur suivant s'affichera à la place :.Unexpected error occurred while processing the request
-
TARGET_ARN
— ARN L'objectif invoqué par votre calendrier, dans le ARN format de service suivant :arn:aws:scheduler:::aws-sdk:
.service
:apiAction
-
EXHAUSTED_RETRY_CONDITION
— Indique pourquoi l'événement a été organisé auDLQ. Cet attribut sera présent si l'erreur provenant de la cible API est une erreur réessayable et non une erreur permanente. L'attribut peut contenir les valeursMaximumRetryAttempts
si le EventBridge planificateur l'a envoyé DLQ après avoir dépassé le nombre maximal de tentatives que vous avez configuré pour le calendrierMaximumEventAgeInSeconds
, ou si l'événement est antérieur à l'âge maximum que vous avez configuré sur le calendrier et ne parvient toujours pas à se produire.
Dans l'exemple précédent, nous pouvons déterminer, en fonction 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.