Richtlinie zur Wiederholung von Ereignissen und Verwendung von Warteschlangen für unzustellbare Nachrichten - Amazon EventBridge

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.

Richtlinie zur Wiederholung von Ereignissen und Verwendung von Warteschlangen für unzustellbare Nachrichten

Manchmal wird ein Ereignis nicht erfolgreich an das in einer Regel angegebene Ziel zugestellt. Dies kann beispielsweise der Fall sein, wenn die Zielressource nicht verfügbar ist, wenn für die Zielressource EventBridge keine Zugriffsberechtigung besteht oder wenn Netzwerkprobleme vorliegen. Wenn ein Ereignis aufgrund von wiederherstellbaren Fehlern nicht erfolgreich an ein Ziel übermittelt werden kann, wird EventBridge erneut versucht, das Ereignis zu senden. Die Dauer der Versuche und die Anzahl der Wiederholungsversuche legen Sie in den Einstellungen der Wiederholungsrichtlinie für das Ziel fest. Standardmäßig wird EventBridge erneut versucht, das Ereignis 24 Stunden lang und bis zu 185 Mal zu senden, wobei ein exponentielles Back-Off und Jitter oder eine zufällige Verzögerung auftreten. Wenn ein Ereignis nicht zugestellt wird, nachdem alle Wiederholungsversuche ausgeschöpft sind, wird das Ereignis gelöscht und es wird EventBridge nicht weiter verarbeitet. Wenn Sie verhindern möchten, dass Ereignisse verloren gehen, nachdem sie nicht an ein Ziel zugestellt werden, können Sie eine Warteschlange für unzustellbare Nachrichten konfigurieren und alle fehlgeschlagenen Ereignisse zur späteren Verarbeitung an diese senden.

EventBridge DLQs sind standardmäßige Amazon SQS-Warteschlangen, in denen EventBridge Ereignisse gespeichert werden, die nicht erfolgreich an ein Ziel übermittelt werden konnten. Wenn Sie eine Regel erstellen und ein Ziel hinzufügen, können Sie wählen, ob Sie eine Warteschlange für unzustellbare Nachrichten verwenden möchten oder nicht. Wenn Sie eine Warteschlange für unzustellbare Nachrichten konfigurieren, können Sie alle Ereignisse beibehalten, die nicht erfolgreich zugestellt wurden. Anschließend können Sie das Problem lösen, das zur fehlgeschlagenen Ereigniszustellung geführt hat, und die Ereignisse zu einem späteren Zeitpunkt verarbeiten.

Ereignisfehler werden auf unterschiedliche Weise behandelt. Einige Ereignisse werden gelöscht oder ohne Wiederholungsversuche an eine Warteschlange für unzustellbare Nachrichten gesendet. Bei Fehlern, die auf fehlende Berechtigungen für ein Ziel oder auf eine nicht mehr vorhandene Zielressource zurückzuführen sind, schlagen alle Wiederholungsversuche fehl, bis eine Maßnahme zur Behebung des zugrundeliegenden Problems ergriffen wird. Anstatt es erneut zu versuchen, werden diese Ereignisse direkt an den DLQ EventBridge gesendet, falls Sie einen haben.

Wenn eine Ereigniszustellung fehlschlägt, EventBridge veröffentlicht es ein Ereignis in CloudWatch Amazon-Statistiken, das darauf hinweist, dass ein Ziel invocation fehlgeschlagen ist. Wenn Sie einen DLQ verwenden, werden zusätzliche Messwerte an CloudWatch einschließlich InvocationsSentToDLQ und InvocationsFailedToBeSentToDLQ gesendet.

Jede Nachricht in Ihrer Warteschlange für unzustellbare Nachrichten enthält die folgenden benutzerdefinierten Attribute:

  • RULE_ARN

  • TARGET_ARN

  • ERROR_CODE

    Im Folgenden finden Sie ein Beispiel für die Fehlercodes, die eine Warteschlange für unzustellbare Nachrichten zurückgeben kann:

    • 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

    Die folgenden Bedingungen können zurückgegeben werden:

    • MaximumRetryAttempts

    • MaximumEventAgeInSeconds

  • RETRY_ATTEMPTS

Das folgende Video zeigt das Einrichten von Warteschlangen für unzustellbare Nachrichten:

Überlegungen zum Verwenden einer Warteschlange für unzustellbare Nachrichten

Beachten Sie bei der Konfiguration eines DLQ für Folgendes. EventBridge

  • Es werden nur Standardwarteschlangen unterstützt. Sie können keine FIFO-Warteschlange für eine DLQ in verwenden. EventBridge

  • EventBridge schließt Ereignismetadaten und Nachrichtenattribute in die Nachricht ein, darunter: den Fehlercode, die Fehlermeldung, die Bedingung für erschöpfte Wiederholungen, den Regel-ARN, Wiederholungsversuche und den Ziel-ARN. Sie können diese Werte verwenden, um ein Ereignis und die Ursache des Fehlers zu identifizieren.

  • Berechtigungen für Warteschlangen für unzustellbare Nachrichten im selben Konto:

  • Berechtigungen für die Verwendung von Amazon SQS SQS-Warteschlangen von einem anderen AWS Konto aus.

  • Die von Ihnen verwendete Amazon-SQS-Warteschlange muss sich in derselben Region befinden, in der Sie die Regel erstellen.

Erteilen von Berechtigungen für die Warteschlange für unzustellbare Nachrichten

Wenn Sie eine DLQ für ein Ziel einer Regel konfigurieren, EventBridge sendet die Ereignisse mit fehlgeschlagenen Aufrufen an die ausgewählte Amazon SQS SQS-Warteschlange. Um Ereignisse erfolgreich an die Warteschlange weiterzuleiten, EventBridge müssen Sie über die entsprechende Genehmigung verfügen. Wenn Sie ein Ziel für eine Regel konfigurieren und mithilfe der EventBridge Konsole eine DLQ auswählen, werden die Berechtigungen automatisch hinzugefügt. Wenn Sie eine Regel mithilfe der API erstellen oder eine Warteschlange verwenden, die sich in einem anderen AWS Konto befindet, müssen Sie manuell eine ressourcenbasierte Richtlinie erstellen, die die erforderlichen Berechtigungen gewährt, und sie dann an die Warteschlange anhängen.

Die folgende ressourcenbasierte Richtlinie zeigt, wie Sie die erforderlichen Berechtigungen für EventBridge das Senden von Ereignisnachrichten an eine Amazon SQS SQS-Warteschlange gewähren. Das Richtlinienbeispiel erteilt dem EventBridge Service die Erlaubnis, den SendMessage Vorgang zum Senden von Nachrichten an eine Warteschlange mit dem Namen "DLQ" MyEvent zu verwenden. Die Warteschlange muss sich in der Region US-West-2 im AWS Konto 123456789012 befinden. Die Condition Anweisung erlaubt nur Anfragen, die von einer Regel mit dem Namen "MyTestRule" stammen, die in der Region us-west-2 im AWS Konto 123456789012 erstellt wurde.

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

Wenn Sie die Richtlinie an die Warteschlange anhängen möchten, verwenden Sie die Amazon-SQS-Konsole, öffnen Sie die Warteschlange, wählen Sie dann die Zugriffsrichtlinie aus und bearbeiten Sie die Richtlinie. Sie können auch das verwenden. Weitere Informationen finden Sie unter AWS CLI. Amazon-SQS-Berechtigungen

So senden Sie Ereignisse aus einer Warteschlange für unzustellbare Nachrichten erneut

Sie können Nachrichten auf zwei Arten aus einer Warteschlange für unzustellbare Nachrichten verschieben:

  • Vermeiden des Schreibens von Amazon-SQS-Verbraucherlogik – Legen Sie Ihre Warteschlange für unzustellbare Nachrichten als Ereignisquelle für die Lambda-Funktion fest, um Ihre Warteschlange für unzustellbare Nachrichten zu leeren.

  • Amazon SQS SQS-Verbraucherlogik schreiben — Verwenden Sie die Amazon SQS SQS-API, AWS das SDK oder AWS CLI schreiben Sie eine benutzerdefinierte Verbraucherlogik für das Abfragen, Verarbeiten und Löschen der Nachrichten in der DLQ.