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 non recapitate per elaborare eventi non consegnati 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 DLQs sono code Amazon SQS standard EventBridge utilizzate per archiviare eventi che non è stato possibile consegnare correttamente a una destinazione. 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 una destinazione di una regola, EventBridge invia gli eventi con chiamate 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 per una destinazione o se una risorsa di destinazione non esiste più, non verrà effettuato alcun tentativo finché 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 non riesce, EventBridge pubblica un evento su Amazon CloudWatch Metrics indicando che un obiettivo invocation
non è riuscito. Se utilizzi un DLQ, vengono inviate metriche aggiuntive a, tra cui and. CloudWatch InvocationsSentToDLQ
InvocationsFailedToBeSentToDLQ
È inoltre possibile specificare DLQs per i bus di eventi, se si utilizza AWS KMS chiavi gestite dal cliente per crittografare gli eventi a riposo. Per ulteriori informazioni, consulta Utilizzo di code di lettere morte per acquisire gli errori degli eventi crittografati in EventBridge.
Ogni messaggio nella tua coda DLQ includerà i seguenti attributi personalizzati:
RULE_ARN
TARGET_ARN
ERROR_CODE
Di seguito è riportato un esempio dei codici di errore che una coda DLQ può restituire:
-
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
Possono essere restituite le seguenti condizioni:
-
MaximumRetryAttempts
-
MaximumEventAgeInSeconds
-
RETRY_ATTEMPTS
Il video seguente illustra le impostazioni: DLQs
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, tra cui: il codice di errore, il messaggio di errore, la condizione Exhausted Retry, l'ARN della regola, i tentativi di tentativo e l'ARN di destinazione. È possibile utilizzare questi valori per identificare un evento e la causa dell'errore.
-
Autorizzazioni per lo stesso account: DLQs
-
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 concede EventBridge l'accesso alla coda.
-
Se utilizzi il
PutTargets
funzionamento dell' EventBridge API per aggiungere o aggiornare un obiettivo 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 a farlo. Quando si specifica un DLQ utilizzando la EventBridge console, le autorizzazioni vengono aggiunte automaticamente. Questo include:
Quando si configura un DLQ per un obiettivo di una regola.
Quando configuri un DLQ per un bus di eventi in cui lo hai specificato, EventBridge usa un AWS KMS chiave gestita dal cliente per crittografare gli eventi inattivi.
Per ulteriori informazioni, consulta Utilizzo di code di lettere morte per acquisire gli errori degli eventi crittografati in EventBridge.
Se specifichi un DLQ utilizzando l'API o utilizzi una coda che si trova in un AWS account diverso, devi creare manualmente una politica basata sulle risorse che conceda le autorizzazioni richieste e quindi collegarla alla coda.
Esempio di autorizzazioni Target per la coda a lettera morta
La seguente politica basata sulle risorse mostra come concedere le autorizzazioni necessarie per inviare messaggi di eventi EventBridge a una coda Amazon SQS. L'esempio di policy concede al EventBridge servizio le autorizzazioni per utilizzare l'SendMessage
operazione per inviare messaggi a una coda denominata "DLQ». MyEvent La coda deve trovarsi nella regione us-west-2 nell'account 123456789012. AWS L'Condition
istruzione 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 per la coda a lettere morte di Event Bus
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 degli 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 SQSAutorizzazioni Amazon.
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 AWS , l'SDK AWS CLI o per scrivere una logica consumer personalizzata per il polling, l'elaborazione e l'eliminazione dei messaggi nel DLQ.