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.
Verwenden von Warteschlangen mit unzugestellten Nachrichten zur Verarbeitung nicht zugestellter Ereignisse in EventBridge
Um zu verhindern, dass Ereignisse verloren gehen, wenn sie nicht an ein Ziel zugestellt werden können, können Sie eine Warteschlange für unzustellbare Briefe (DLQ) konfigurieren und alle fehlgeschlagenen Ereignisse an diese Warteschlange zur späteren Verarbeitung senden.
EventBridge DLQssind SQS Standard-Amazon-Warteschlangen, EventBridge in denen 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 DLQ verwenden möchten oder nicht. Wenn Sie eine konfigurierenDLQ, können Sie alle Ereignisse beibehalten, die nicht erfolgreich übermittelt 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.
Wenn Sie a DLQ für ein Ziel einer Regel konfigurieren, EventBridge sendet die Ereignisse mit fehlgeschlagenen Aufrufen an die ausgewählte SQS Amazon-Warteschlange.
Ereignisfehler werden auf unterschiedliche Weise behandelt. Einige Ereignisse werden gelöscht oder DLQ ohne erneute Versuche an eine gesendet. Bei Fehlern, die auf fehlende Berechtigungen für ein Ziel zurückzuführen sind, oder wenn eine Zielressource nicht mehr existiert, werden keine Wiederholungsversuche durchgeführt, bis Maßnahmen zur Behebung des zugrundeliegenden Problems ergriffen werden. EventBridge sendet diese Ereignisse direkt an das ZielDLQ, sofern Sie eines angegeben 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 eine verwendenDLQ, werden zusätzliche Messwerte an CloudWatch einschließlich InvocationsSentToDLQ
und gesendetInvocationsFailedToBeSentToDLQ
.
Sie können auch angebenDLQs, ob Event-Busse verwendet werden sollen, AWS KMS Kundenverwaltete Schlüssel um Ereignisse im Ruhezustand zu verschlüsseln. Weitere Informationen finden Sie unter Verwenden von Warteschlangen mit unverschlüsselten Buchstaben zur Erfassung verschlüsselter Ereignisfehler in EventBridge.
Jede Nachricht in Ihrem DLQ Dokument enthält die folgenden benutzerdefinierten Attribute:
RULE_ARN
TARGET_ARN
ERROR_CODE
Im Folgenden finden Sie ein Beispiel für die Fehlercodes, die a zurückgeben DLQ 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 die Einstellungen nach obenDLQs:
Themen
Ü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 einen Eingang DLQ verwenden EventBridge.
-
EventBridge schließt Ereignismetadaten und Nachrichtenattribute in die Nachricht ein, darunter: den Fehlercode, die Fehlermeldung, die Bedingung „Erschöpfter Wiederholungsversuch“, die RegelARN, die Wiederholungsversuche und das Ziel. ARN Sie können diese Werte verwenden, um ein Ereignis und die Ursache des Fehlers zu identifizieren.
-
Berechtigungen für DLQs dasselbe Konto:
-
Wenn Sie einer Regel mithilfe der Konsole ein Ziel hinzufügen und eine SQS Amazon-Warteschlange in demselben Konto auswählen, wird der Warteschlange eine ressourcenbasierte Richtlinie hinzugefügt, die EventBridge Zugriff auf die Warteschlange gewährt.
-
Wenn Sie den
PutTargets
Vorgang von verwenden, EventBridge API um ein Ziel für eine Regel hinzuzufügen oder zu aktualisieren, und Sie eine SQS Amazon-Warteschlange in demselben Konto auswählen, müssen Sie der ausgewählten Warteschlange manuell Berechtigungen erteilen. Weitere Informationen hierzu finden Sie unter Erteilen von Berechtigungen für die Warteschlange für unzustellbare Nachrichten.
-
-
Berechtigungen für die Verwendung von SQS Amazon-Warteschlangen von einem anderen AWS Konto aus.
-
Wenn Sie eine Regel über die Konsole erstellen, werden Warteschlangen aus anderen Konten nicht zur Auswahl angezeigt. Sie müssen die Daten ARN für die Warteschlange in dem anderen Konto angeben und dann manuell eine ressourcenbasierte Richtlinie anhängen, um der Warteschlange Berechtigungen zu erteilen. Weitere Informationen hierzu finden Sie unter Erteilen von Berechtigungen für die Warteschlange für unzustellbare Nachrichten.
-
Wenn Sie eine Regel mit dem erstellenAPI, müssen Sie manuell eine ressourcenbasierte Richtlinie an die Warteschlangen eines anderen Kontos anhängen, das als SQS Warteschlange für unzustellbare Briefe verwendet wird. Weitere Informationen hierzu finden Sie unter Erteilen von Berechtigungen für die Warteschlange für unzustellbare Nachrichten.
-
-
Die SQS Amazon-Warteschlange, die Sie verwenden, muss sich in derselben Region befinden, in der Sie die Regel erstellt haben.
Erteilen von Berechtigungen für die Warteschlange für unzustellbare Nachrichten
Um Ereignisse erfolgreich an die Warteschlange weiterzuleiten, EventBridge müssen Sie über die entsprechende Berechtigung verfügen. Wenn Sie DLQ über die EventBridge Konsole eine angeben, werden die Berechtigungen automatisch hinzugefügt. Dies umfasst:
Wenn Sie a DLQ für ein Ziel einer Regel konfigurieren.
Wenn Sie einen DLQ für einen Event-Bus konfigurieren, für den Sie angegeben haben, dass ein EventBridge verwendet wird, AWS KMS Kundenverwalteter Schlüssel um Ereignisse im Ruhezustand zu verschlüsseln.
Weitere Informationen finden Sie unter Verwenden von Warteschlangen mit unverschlüsselten Buchstaben zur Erfassung verschlüsselter Ereignisfehler in EventBridge.
Wenn Sie eine DLQ mit dem angeben oder eine Warteschlange verwendenAPI, die sich in einem anderen AWS Konto befindet, müssen Sie manuell eine ressourcenbasierte Richtlinie erstellen, die die erforderlichen Berechtigungen gewährt, und diese dann an die Warteschlange anhängen.
Beispiel für Ziel-Warteschlangenberechtigungen für unlesbare Nachrichten
Die folgende ressourcenbasierte Richtlinie zeigt, wie Sie die erforderlichen Berechtigungen für EventBridge das Senden von Ereignisnachrichten an eine SQS Amazon-Warteschlange gewähren. Das Richtlinienbeispiel erteilt dem EventBridge Service die Erlaubnis, den SendMessage
Vorgang zum Senden von Nachrichten an eine Warteschlange mit dem Namen "" MyEvent DLQ 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
" } } }
Beispiel für Berechtigungen für eine Warteschlange mit unverschlüsselten Buchstaben im Event-Bus
Die folgende ressourcenbasierte Richtlinie veranschaulicht, wie die erforderlichen Berechtigungen erteilt werden, wenn DLQ für einen Ereignisbus a angegeben wird. In diesem Fall aws:SourceArn
gibt sie den Namen ARN des Event-Busses an, der die Ereignisse an den sendet. DLQ Auch in diesem Beispiel muss sich die Warteschlange in derselben Region wie der Event-Bus befinden.
{ "Sid": "Dead-letter queue permissions", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:
region
:account-id
:queue-name
", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:events:region
:account-id
:event-bus/event-bus-arn
" } } }
Um die Richtlinie an die Warteschlange anzuhängen, verwenden Sie die SQS Amazon-Konsole, öffnen Sie die Warteschlange, wählen Sie dann die Zugriffsrichtlinie und bearbeiten Sie die Richtlinie. Sie können auch die AWS CLI verwenden. Weitere Informationen hierzu finden Sie unter SQSAmazon-Berechtigungen.
So senden Sie Ereignisse aus einer Warteschlange für unzustellbare Nachrichten erneut
Sie können Nachrichten auf zwei Arten aus DLQ einem verschieben:
-
Vermeiden Sie das Schreiben von SQS Amazon-Verbraucherlogik — Stellen Sie Ihre DLQ als Ereignisquelle auf die Lambda-Funktion ein, um Ihre DLQ zu entleeren.
-
SQSAmazon-Verbraucherlogik schreiben — Verwenden Sie Amazon SQSAPI, AWS SDK, AWS CLI um eine benutzerdefinierte Verbraucherlogik für das Abfragen, Verarbeiten und Löschen der Nachrichten in der DLQ zu schreiben.