Konfiguration der Warteschlange für unzustellbare Briefe eines Zeitplans im Scheduler EventBridge - EventBridge Terminplaner

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.

Konfiguration der Warteschlange für unzustellbare Briefe eines Zeitplans im Scheduler EventBridge

Amazon EventBridge Scheduler unterstützt Warteschlangen mit unbestätigten Briefen (DLQ) mithilfe von Amazon Simple Queue Service. Wenn ein Zeitplan sein Ziel nicht aufrufen kann, übermittelt EventBridge Scheduler eine JSON Nutzlast mit Aufrufdetails und allen vom Ziel empfangenen Antworten an eine von Ihnen angegebene SQS Amazon-Standardwarteschlange.

Im folgenden Thema wird dies als Ereignis bezeichnet, bei dem es sich um ein unvorhergesehenes Ereignis handelt. JSON Bei einem Ereignis mit unerwartetem Datum können Sie Probleme mit Ihrem Zeitplan oder Ihren Zielen beheben. Wenn Sie eine Wiederholungsrichtlinie für Ihren Zeitplan konfigurieren, übermittelt EventBridge Scheduler das Ereignis, bei dem die von Ihnen festgelegte Höchstzahl an Wiederholungen ausgeschöpft ist.

In den folgenden Themen wird beschrieben, wie Sie eine SQS Amazon-Warteschlange DLQ für Ihren Zeitplan konfigurieren, die Berechtigungen einrichten können, die der EventBridge Scheduler für die Zustellung von Nachrichten an Amazon benötigtSQS, und wie Sie unzustellbare Ereignisse von empfangen können. DLQ

Erstellen Sie eine SQS Amazon-Warteschlange

Bevor Sie eine DLQ für Ihren Zeitplan konfigurieren, müssen Sie eine SQS Standard-Amazon-Warteschlange erstellen. Anweisungen zum Erstellen einer Warteschlange mit der SQS Amazon-Konsole finden Sie unter Erstellen einer SQS Amazon-Warteschlange im Amazon Simple Queue Service Developer Guide.

Anmerkung

EventBridge Scheduler unterstützt nicht die Verwendung einer FIFO Warteschlange als ZeitplanDLQ.

Verwenden Sie den folgenden AWS CLI Befehl, um eine Standardwarteschlange zu erstellen.

$ aws sqs create-queue --queue-name queue-name

Wenn dies erfolgreich ist, werden Sie das QueueURL in der Ausgabe sehen.

{
    "QueueUrl": "https://sqs.us-west-2.amazonaws.com/123456789012/scheduler-dlq-test"
}

Nachdem Sie die Warteschlange erstellt haben, notieren Sie sich die WarteschlangeARN. Sie benötigen denARN, wenn Sie einen Zeitplan DLQ für Ihren EventBridge Scheduler angeben. Sie finden Ihre Warteschlange ARN in der SQS Amazon-Konsole oder mithilfe des get-queue-attributes AWS CLI Befehls.

$ aws sqs get-queue-attributes --queue-url your-dlq-url --attribute-names QueueArn

Bei Erfolg wird die Warteschlange ARN in der Ausgabe angezeigt.

{
    "Attributes": {
        "QueueArn": "arn:aws:sqs:us-west-2:123456789012:scheduler-dlq-test"
    }
}

Im nächsten Abschnitt fügen Sie Ihrer Rolle für die Ausführung von Terminplänen die erforderlichen Berechtigungen hinzu, damit EventBridge Scheduler unvollständige Ereignisse an Amazon übermitteln kann. SQS

Richten Sie Berechtigungen für Ausführungsrollen ein

Damit EventBridge Scheduler unbemerkte Ereignisse an Amazon übermitteln kannSQS, benötigt Ihre Rolle für die Ausführung von Zeitplänen die folgende Berechtigungsrichtlinie. Weitere Informationen zum Hinzufügen einer neuen Berechtigungsrichtlinie zu Ihrer Rolle für die Ausführung von Zeitplänen finden Sie unter Ausführungsrolle einrichten.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sqs:SendMessage" ], "Effect": "Allow", "Resource": "*" } ] }
Anmerkung

Ihrer Rolle zur Ausführung von Zeitplänen sind möglicherweise bereits die erforderlichen Berechtigungen zugewiesen, wenn Sie EventBridge Scheduler verwenden, um ein SQS API Amazon-Ziel aufzurufen.

Im nächsten Abschnitt verwenden Sie die EventBridge Scheduler-Konsole und geben einen DLQ für Ihren Zeitplan an.

Geben Sie eine Warteschlange für unzustellbare Briefe an

Um einen anzugebenDLQ, verwenden Sie die EventBridge Scheduler-Konsole oder die AWS CLI , um einen vorhandenen Zeitplan zu aktualisieren oder einen neuen zu erstellen.

Console
Um einen DLQ mithilfe der Konsole anzugeben
  1. Melden Sie sich bei der an AWS Management Console und wählen Sie dann den folgenden Link, um den EventBridge Scheduler-Bereich der EventBridge Konsole zu öffnen: Home https://console.aws.amazon.com/scheduler/

  2. Erstellen Sie in der EventBridge Scheduler-Konsole einen neuen Zeitplan, oder wählen Sie einen vorhandenen Zeitplan aus der Liste der zu bearbeitenden Zeitpläne aus.

  3. Gehen Sie auf der Seite „Einstellungen“ für Warteschlange mit unbestätigten DLQ Nachrichten () wie folgt vor:

    • Wählen Sie Wählen Sie eine SQS Amazon-Warteschlange in meinem AWS Konto als aus DLQ und wählen Sie dann die Warteschlange ARN für Sie DLQ aus der Drop-down-Liste aus.

    • Wählen Sie Geben Sie eine SQS Amazon-Warteschlange in anderen AWS Konten als an DLQ und geben Sie dann die Warteschlange ARN für Ihre einDLQ. Wenn Sie eine Warteschlange in einem anderen AWS Konto auswählen, kann die EventBridge Scheduler-Konsole die Warteschlange nicht ARNs in einer Drop-down-Liste anzeigen.

  4. Überprüfen Sie Ihre Auswahl und wählen Sie dann Zeitplan erstellen oder Zeitplan speichern, um die Konfiguration abzuschließen. DLQ

  5. (Optional) Um die DLQ Details eines Zeitplans anzuzeigen, wählen Sie den Namen des Zeitplans aus der Liste aus und klicken Sie dann auf der Detailseite des Zeitplans auf die Registerkarte Warteschlange für unzustellbare Briefe.

AWS CLI
Um einen vorhandenen Zeitplan zu aktualisieren, verwenden Sie AWS CLI
  • Verwenden Sie den update-scheduleBefehl, um Ihren Zeitplan zu aktualisieren. Geben Sie die SQS Amazon-Warteschlange, die Sie zuvor erstellt haben, als anDLQ. Geben Sie die IAM RolleARN, der Sie die erforderlichen SQS Amazon-Berechtigungen zugewiesen haben, als Ausführungsrolle an. Ersetzen Sie alle anderen Platzhalterwerte durch Ihre Informationen.

    $ aws scheduler update-schedule --name existing-schedule \ --schedule-expression 'rate(5 minutes)' \ --target '{"DeadLetterConfig": {"Arn": "DLQ_ARN"}, "RoleArn": "ROLE_ARN", "Arn":"QUEUE_ARN", "Input": "Hello world!" }' \ --flexible-time-window '{ "Mode": "OFF"}'
Um einen neuen Zeitplan mit einem zu DLQ erstellen AWS CLI
  • Verwenden Sie den create-scheduleBefehl, um einen Zeitplan zu erstellen. Ersetzen Sie alle Platzhalterwerte durch Ihre Informationen.

    $ aws scheduler create-schedule --name new-schedule \ --schedule-expression 'rate(5 minutes)' \ --target '{"DeadLetterConfig": {"Arn": "DLQ_ARN"}, "RoleArn": "ROLE_ARN", "Arn":"QUEUE_ARN", "Input": "Hello world!" }' \ --flexible-time-window '{ "Mode": "OFF"}'

Im nächsten Abschnitt verwenden Sie die, AWS CLI um ein Ereignis mit unerlaubtem Brief von der zu empfangen. DLQ

Rufen Sie das Dead-Letter-Ereignis ab

Verwenden Sie den receive-messageBefehl, wie im Folgenden gezeigt, um ein Dead-Letter-Ereignis aus dem abzurufen. DLQ Mithilfe des Attributs können Sie die Anzahl der abzurufenden Nachrichten festlegen. --max-number-of-messages

$ aws sqs receive-message --queue-url your-dlq-url --attribute-names All --message-attribute-names All --max-number-of-messages 1

Bei Erfolg erhalten Sie eine Ausgabe, die der folgenden ähnelt.

{
    "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"
                }
            }
        }
    ]
}

Notieren Sie sich die folgenden Attribute im Dead-Letter-Ereignis, um mögliche Gründe für das Fehlschlagen des Zielaufrufs zu identifizieren und zu beheben.

  • ERROR_CODE— Enthält den Fehlercode, den EventBridge Scheduler vom Dienst des Ziels erhält. API Im vorherigen Beispiel SQS lautet der von Amazon zurückgegebene FehlercodeAWS.SimpleQueueService.NonExistentQueue. Wenn der Zeitplan aufgrund eines Problems mit dem EventBridge Scheduler kein Ziel aufrufen kann, wird stattdessen der folgende Fehlercode angezeigt:. AWS.Scheduler.InternalServerError

  • ERROR_MESSAGE— Enthält die Fehlermeldung, die EventBridge Scheduler vom Dienst des Ziels erhält. API Im vorherigen Beispiel SQS lautet die von Amazon 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— Das ARN Ziel, das Ihr Zeitplan aufruft, im folgenden ARN Serviceformat:. arn:aws:scheduler:::aws-sdk:service:apiAction

  • EXHAUSTED_RETRY_CONDITION— Gibt an, warum das Ereignis an die DLQ gesendet wurde. Dieses Attribut ist vorhanden, wenn es sich bei dem Fehler des Ziels um einen Fehler API handelt, der wiederholt werden kann, und nicht um einen dauerhaften Fehler. Das Attribut kann die Werte enthalten, MaximumRetryAttempts wenn der EventBridge Scheduler es an die Adresse gesendet hat, DLQ nachdem es die maximale Anzahl an Wiederholungsversuchen überschritten hat, die Sie für den Zeitplan konfiguriert habenMaximumEventAgeInSeconds, oder wenn das Ereignis älter als das im Zeitplan festgelegte 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.