Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzo di code di lettere morte per elaborare gli eventi non recapitati in EventBridge
Per evitare di perdere eventi dopo la mancata distribuzione a una destinazione, è possibile configurare una coda DLQ e inviarle tutti gli eventi non riusciti per un'elaborazione successiva.
EventBridge I DLQ sono code standard di Amazon SQS EventBridge utilizzate per archiviare eventi che non possono essere consegnati correttamente a un target. Quando crei una regola e aggiungi una destinazione, puoi scegliere se utilizzare o meno una coda DLQ. Quando configuri un coda DLQ, puoi mantenere tutti gli eventi che non sono stati distribuiti correttamente. È quindi possibile risolvere il problema che ha causato la mancata distribuzione dell'evento ed elaborare gli eventi in un secondo momento.
Quando configuri un DLQ per un obiettivo di una regola, EventBridge invia gli eventi con invocazioni non riuscite alla coda Amazon SQS selezionata.
Gli errori relativi agli eventi vengono gestiti in modi diversi. Alcuni eventi vengono abbandonati o inviati a una coda DLQ senza che venga effettuato alcun nuovo tentativo. Ad esempio, per gli errori derivanti dalla mancanza di autorizzazioni su una destinazione, una risorsa di destinazione che non esiste più o una destinazione che non può essere trovata a causa di un indirizzo non valido o di un errore di ricerca DNS, non verrà effettuato alcun tentativo di nuovo fino a quando non verrà intrapresa un'azione per risolvere il problema sottostante. EventBridge invia questi eventi direttamente al DLQ di destinazione, se ne hai specificato uno.
Quando la consegna di un evento fallisce, EventBridge pubblica un evento su Amazon CloudWatch Metrics indicando che un obiettivo non è riuscito. invocation Se utilizzi un DLQ, vengono inviate metriche aggiuntive tra cui e. CloudWatch InvocationsSentToDLQ InvocationsFailedToBeSentToDLQ
Puoi anche specificare i DLQ per i bus di eventi, se li utilizzi per AWS KMS chiavi gestite dal cliente crittografare gli eventi inattivi. Per ulteriori informazioni, consulta Utilizzo di code di lettere non scritte per rilevare gli errori degli eventi crittografati in EventBridge.
Ogni messaggio nella tua coda DLQ includerà i seguenti attributi personalizzati:
RULE_ARNTARGET_ARNERROR_CODEDi seguito è riportato un esempio dei codici di errore che una coda DLQ può restituire:
-
ACTION_DECRYPTION_FAILURE -
CONNECTION_FAILURE -
CROSS_ACCOUNT_INGESTION_FAILED -
CROSS_REGION_INGESTION_FAILED -
ERROR_FROM_TARGET -
EVENT_DECRYPTION_FAILURE -
EVENT_ENCRYPTION_FAILURE -
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 -
RULE_DECRYPTION_FAILURE -
SDK_CLIENT_ERROR -
THIRD_ACCOUNT_HOP_DETECTED -
THIRD_REGION_HOP_DETECTED -
THROTTLING -
TIMEOUT -
TRANSIENT_ASSUME_ROLE -
UNKNOWN
-
ERROR_MESSAGEEXHAUSTED_RETRY_CONDITIONPossono essere restituite le seguenti condizioni:
-
MaximumRetryAttempts -
MaximumEventAgeInSeconds
-
RETRY_ATTEMPTS
Il seguente video illustra la configurazione dei DLQ:
Argomenti
Considerazioni sull'utilizzo di una coda DLQ
Considerate quanto segue quando configurate un DLQ per. EventBridge
-
Sono supportate solo le code standard. Non è possibile utilizzare una coda FIFO per un DLQ in. EventBridge
-
EventBridge include i metadati degli eventi e gli attributi del messaggio nel messaggio, tra cui: il codice di errore, il messaggio di errore, la condizione di riprova esaurita, l'ARN della regola, i tentativi di riprova e l'ARN di destinazione. È possibile utilizzare questi valori per identificare un evento e la causa dell'errore.
-
Autorizzazioni per le code DLQ nello stesso account:
-
Se aggiungi un obiettivo a una regola utilizzando la console e scegli una coda Amazon SQS nello stesso account, alla coda viene allegata automaticamente una policy basata sulle risorse che consente l'accesso alla coda. EventBridge
-
Se utilizzi il
PutTargetsfunzionamento dell' EventBridge API per aggiungere o aggiornare un target per una regola e scegli una coda Amazon SQS nello stesso account, devi concedere manualmente le autorizzazioni alla coda selezionata. Per ulteriori informazioni, consulta Concessione delle autorizzazioni per la coda DLQ.
-
-
Autorizzazioni per l'utilizzo delle code Amazon SQS da un altro account. AWS
-
Se crei una regola dalla console, non vengono visualizzate le code di altri account che puoi selezionare. È necessario fornire l'ARN della coda nell'altro account e quindi associare manualmente una policy basata su risorse per concedere l'autorizzazione alla coda. Per ulteriori informazioni, consulta Concessione delle autorizzazioni per la coda DLQ.
-
Se crei una regola utilizzando l'API, devi associare manualmente una policy basata su risorse alle code SQS in un altro account utilizzato come coda DLQ. Per ulteriori informazioni, consulta Concessione delle autorizzazioni per la coda DLQ.
-
-
La coda Amazon SQS utilizzata deve trovarsi nella stessa Regione in cui crei la regola.
Concessione delle autorizzazioni per la coda DLQ
Per inviare correttamente gli eventi alla coda, è EventBridge necessario disporre dell'autorizzazione necessaria. Quando si specifica un DLQ utilizzando la EventBridge console, le autorizzazioni vengono aggiunte automaticamente. Questo include:
Quando si configura un DLQ per una destinazione di una regola.
Quando configuri un DLQ per un bus di eventi in cui hai specificato di EventBridge utilizzare un per AWS KMS chiave gestita dal cliente crittografare gli eventi inattivi.
Per ulteriori informazioni, consulta Utilizzo di code di lettere non scritte per rilevare gli errori degli eventi crittografati in EventBridge.
Se specifichi un DLQ utilizzando l'API o utilizzi una coda che si trova in un altro AWS account, devi creare manualmente una policy basata sulle risorse che conceda le autorizzazioni richieste e quindi allegarla alla coda.
Esempio di autorizzazioni per la coda di lettere morte di Target
La seguente politica basata sulle risorse dimostra come concedere le autorizzazioni necessarie per inviare messaggi di eventi a una coda Amazon SQS. EventBridge L'esempio di policy concede al EventBridge servizio le autorizzazioni per utilizzare l'SendMessageoperazione per inviare messaggi a una coda denominata "DLQ». MyEvent La coda deve trovarsi nella regione us-west-2 nell'account 123456789012. AWS La Condition dichiarazione consente solo le richieste che provengono da una regola denominata "MyTestRule" creata nella regione us-west-2 nell'account 123456789012. AWS
{ "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" } } }
Esempio di autorizzazioni relative alla coda in formato lettera morta del bus di eventi
La seguente politica basata sulle risorse dimostra come concedere le autorizzazioni richieste quando si specifica un DLQ per un bus di eventi. In questo caso, aws:SourceArn specifica l'ARN del bus di eventi che invia gli eventi al DLQ. Anche in questo esempio, la coda deve trovarsi nella stessa regione del bus degli eventi.
{ "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" } } }
Per associare la policy alla coda, usa la console Amazon SQS, apri la coda, quindi scegli la policy di accesso e modifica la policy. Puoi anche utilizzare l' AWS CLI. Per ulteriori informazioni, consulta Autorizzazioni di Amazon SQS.
Come inviare nuovamente eventi da una coda DLQ
Puoi spostare i messaggi da una coda DQL in due modi:
-
Evita di scrivere logica consumer di Amazon SQS: imposta la coda DQL come origine di evento sulla funzione Lambda per svuotare la coda DLQ.
-
Scrivi la logica consumer di Amazon SQS: utilizza l'API Amazon SQS, l' AWS SDK o AWS CLI per scrivere una logica consumer personalizzata per il polling, l'elaborazione e l'eliminazione dei messaggi nel DLQ.