Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Konfigurieren einer Warteschlange für unzustellNachrichten für einen Zeitplan für unzustellNachrichten Nachrichten Nachrichten
Amazon EventBridge Scheduler unterstützt Dead-Letter Queues (DLQ) mithilfe des Amazon Simple Queue Service. Wenn ein Zeitplan sein Ziel nicht aufrufen kann, sendet EventBridge Scheduler eine JSON-Payload, die Aufrufdetails und alle vom Ziel empfangenen Antworten enthält, an eine von Ihnen angegebene Amazon SQS SQS-Standardwarteschlange.
Das folgende Thema bezieht sich auf diesen JSON als ein Dead-Letter-Ereignis. Mit einem Dead-Letter-Event können Sie Probleme mit Ihrem Zeitplan oder Ihren Zielen beheben. Wenn Sie eine Wiederholungsrichtlinie für Ihren Zeitplan konfigurieren, sendet der EventBridge Scheduler das Deadletter-Ereignis aus, das die von Ihnen festgelegte maximale Anzahl von Wiederholungsversuchen erschöpft.
In den folgenden Themen wird beschrieben, wie Sie eine Amazon SQS-Warteschlange als DLQ für Ihren Zeitplan konfigurieren, die Berechtigungen einrichten können, die EventBridge Scheduler für die Übermittlung von Nachrichten an Amazon SQS benötigt, und wie Sie Deadletter-Ereignisse vom DLQ empfangen können.
Themen
Erstellen einer Amazon-SQS-Warteschlange
Bevor Sie einen DLQ für Ihren Zeitplan konfigurieren, müssen Sie eine standardmäßige Amazon SQS SQS-Warteschlange erstellen. Anweisungen zum Erstellen einer Warteschlange mit der Amazon-SQS-Konsole finden Sie unter Erstellen einer Amazon-SQS-Warteschlange für Amazon-Simple-Warteschlangen.
Anmerkung
EventBridge Der Scheduler unterstützt nicht die Verwendung einer FIFO-Warteschlange als DLQ Ihres Zeitplans.
Verwenden Sie den folgendenAWS CLI Befehl, um eine Standardwarteschlange zu erstellen.
$
aws sqs create-queue --queue-name
queue-name
Wenn der Befehl erfolgreich ausgeführt wurde, sehen Sie dasQueueURL
in der Ausgabe.
{
"QueueUrl": "https://sqs.us-west-2.amazonaws.com/123456789012/scheduler-dlq-test"
}
Nachdem Sie die Warteschlange erstellt haben, notieren Sie sich den Queue-ARN. Sie benötigen den ARN, wenn Sie einen DLQ für Ihren EventBridge Scheduler-Zeitplan angeben. Sie finden Ihren Queue-ARN in der Amazon SQS SQS-Konsole oder mithilfe des get-queue-attributes
$
aws sqs get-queue-attributes --queue-url
your-dlq-url
--attribute-names QueueArn
Wenn dies erfolgreich ist, sehen Sie den Queue-ARN in der Ausgabe.
{ "Attributes": { "QueueArn": "arn:aws:sqs:us-west-2:123456789012:scheduler-dlq-test" } }
Im nächsten Abschnitt fügen Sie Ihrer Rolle zur Ausführung des Zeitplans die erforderlichen Berechtigungen hinzu, damit EventBridge Scheduler Deadlet-Ereignisse an Amazon SQS übermitteln kann.
Richten Sie Berechtigungen für Ausführungsrolle ein
Damit EventBridge Scheduler Deadlet-Ereignisse an Amazon SQS übermitteln kann, benötigt Ihre Rolle für die Ausführung von Terminplänen die folgende Berechtigungsrichtlinie. Weitere Informationen zum Anhängen einer neuen Berechtigungsrichtlinie an Ihre Rolle für die Ausführung des Zeitplans finden Sie unter Die Ausführungsrolle einrichten.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sqs:SendMessage" ], "Effect": "Allow", "Resource": "*" } ] }
Anmerkung
Ihre Rolle zur Ausführung von Zeitplänen verfügt möglicherweise bereits über die erforderlichen Berechtigungen, wenn Sie EventBridge Scheduler verwenden, um ein Amazon SQS SQS-API-Ziel aufzurufen.
Im nächsten Abschnitt verwenden Sie die EventBridge Scheduler-Konsole und geben eine DLQ für Ihren Zeitplan an.
Geben Sie eine Warteschlange für unzustellNachrichten Nachrichten an.
Um einen DLQ anzugeben, verwenden Sie die EventBridge Scheduler-Konsole oder die,AWS CLI um einen vorhandenen Zeitplan zu aktualisieren oder einen neuen zu erstellen.
Im nächsten Abschnitt verwenden Sie die, um vom DLQ einAWS CLI unzustellungshandbuch für unzustellungshandbuch für unzustellungshandbuch für unzustellungshandbuch.
Ruft das Event für unzustellungshandbuch ab
Verwenden Sie den receive-message
--max-number-of-messages
Attributs können Sie die Anzahl der abzurufenden Nachrichten festlegen.
$
aws sqs receive-message --queue-url
your-dlq-url
--attribute-names All --message-attribute-names All --max-number-of-messages 1
Wenn der Befehl erfolgreich ausgeführt wurde, wird eine Ausgabe ähnlich der Folgenden angezeigt.
{ "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" } } } ] }
Beachten Sie die folgenden Attribute im Deadletter-Ereignis, damit Sie mögliche Gründe für das Scheitern der Zielinovation identifizieren und beheben können.
-
ERROR_CODE
— Enthält den Fehlercode, den EventBridge Scheduler von der Service-API des Ziels empfängt. Im vorherigen Beispiel lautet der von Amazon SQS zurückgegebene FehlercodeAWS.SimpleQueueService.NonExistentQueue
. Wenn der Zeitplan aufgrund eines Problems mit dem EventBridge Scheduler kein Ziel aufruft, wird stattdessen der folgende Fehlercode angezeigt:AWS.Scheduler.InternalServerError
. -
ERROR_MESSAGE
— Enthält die Fehlermeldung, die EventBridge Scheduler von der Service-API des Ziels erhält. Im vorherigen Beispiel lautet die von Amazon SQS zurückgegebene FehlermeldungThe specified queue does not exist for this wsdl version
. Wenn der Zeitplan aufgrund eines Problems mit dem EventBridge Scheduler fehlschlägt, wird stattdessen die folgende Fehlermeldung angezeigt:Unexpected error occurred while processing the request
. -
TARGET_ARN
— Der ARN des Ziels, das Ihr Zeitplan aufruft, im folgenden Service-ARN-Format:arn:aws:scheduler:::aws-sdk:
.service
:apiAction
-
EXHAUSTED_RETRY_CONDITION
— Gibt an, warum das Ereignis an den DLQ übermittelt wurde. Dieses Attribut ist vorhanden, wenn es sich bei dem Fehler der Ziel-API um einen wiederholbaren Fehler und nicht um einen permanenten Fehler handelt. Das Attribut kann die Werte enthalten,MaximumRetryAttempts
wenn EventBridge Scheduler es an den DLQ gesendet hat, nachdem die maximale Anzahl von Wiederholungsversuchen, die Sie für den Zeitplan konfiguriert haben, überschritten wurdeMaximumEventAgeInSeconds
, oder wenn das Ereignis älter als das im Zeitplan konfigurierte Höchstalter ist und immer noch nicht zugestellt werden kann.
Im vorherigen Beispiel können wir anhand des Fehlercodes und der Fehlermeldung feststellen, dass die Zielwarteschlange, die wir für den Zeitplan angegeben haben, nicht existiert.