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à.
Aggiungere EventBridge eventi Amazon con PutEvents
L'PutEvents
azione invia più eventi EventBridge in un'unica richiesta. Per ulteriori informazioni, consulta PutEventsAmazon EventBridge API Reference e put-events in AWS CLI Command Reference.
Ogni richiesta PutEvents
può supportare un numero limitato di voci. Per ulteriori informazioni, consulta Quote di Amazon EventBridge. L'operazione PutEvents
tenta di elaborare tutte le voci secondo l'ordine naturale della richiesta. Dopo la chiamataPutEvents
, EventBridge assegna a ogni evento un ID univoco.
Argomenti
Il codice Java di esempio seguente invia due eventi identici a EventBridge.
Dopo aver eseguito questo codice, il risultato PutEvents
include un array di voci di risposta. Ogni voce nell'array di risposte corrisponde a una voce nella matrice di richieste secondo l'ordine dall'inizio alla fine della richiesta e della risposta. La matrice di risposta Entries
include sempre lo stesso numero di voci della matrice di richiesta.
Gestione degli errori con PutEvents
Per impostazione predefinita, se una singola immissione all'interno di una richiesta ha esito negativo, EventBridge continua a elaborare il resto delle voci della richiesta. Un array Entries
di risposte può includere sia le voci riuscite che quelle non riuscite. È necessario rilevare le voci non riuscite e includerle in una chiamata successiva.
Le voci di risultati senza errori includono un valore Id
, mentre le voci di risultati con errori includono i valori ErrorCode
e ErrorMessage
. ErrorCode
descrive il tipo di errore. ErrorMessage
fornisce ulteriori informazioni sull'errore. L'esempio seguente ha tre voci di risultati per una richiesta PutEvents
. La seconda voce non ha esito positivo.
{ "FailedEntryCount": 1, "Entries": [ { "EventId": "11710aed-b79e-4468-a20b-bb3c0c3b4860" }, { "ErrorCode": "InternalFailure", "ErrorMessage": "Internal Service Failure" }, { "EventId": "d804d26a-88db-4b66-9eaf-9a11c708ae82" } ] }
Nota
Se si utilizza PutEvents
per pubblicare un evento su un bus di eventi che non esiste, EventBridge event matching non troverà una regola corrispondente e eliminerà l'evento. Sebbene EventBridge invierà una 200
risposta, non fallirà la richiesta né includerà l'evento nel FailedEntryCount
valore della risposta alla richiesta.
Le voci non riuscite possono essere incluse nelle richieste PutEvents
successive. In primo luogo, per determinare se vi sono voci non riuscite nella richiesta, verifica il parametro FailedRecordCount
in PutEventsResult
. Se è diverso da zero, puoi aggiungere ogni Entry
che ha un ErrorCode
non nullo a una richiesta successiva. L'esempio seguente mostra un semplice gestore di errori.
PutEventsRequestEntry requestEntry = new PutEventsRequestEntry() .withTime(new Date()) .withSource("com.mycompany.myapp") .withDetailType("myDetailType") .withResources("resource1", "resource2") .withDetail("{ \"key1\": \"value1\", \"key2\": \"value2\" }"); List<PutEventsRequestEntry> putEventsRequestEntryList = new ArrayList<>(); for (int i = 0; i < 3; i++) { putEventsRequestEntryList.add(requestEntry); } PutEventsRequest putEventsRequest = new PutEventsRequest(); putEventsRequest.withEntries(putEventsRequestEntryList); PutEventsResult putEventsResult = awsEventsClient.putEvents(putEventsRequest); while (putEventsResult.getFailedEntryCount() > 0) { final List<PutEventsRequestEntry> failedEntriesList = new ArrayList<>(); final List<PutEventsResultEntry> PutEventsResultEntryList = putEventsResult.getEntries(); for (int i = 0; i < PutEventsResultEntryList.size(); i++) { final PutEventsRequestEntry putEventsRequestEntry = putEventsRequestEntryList.get(i); final PutEventsResultEntry putEventsResultEntry = PutEventsResultEntryList.get(i); if (putEventsResultEntry.getErrorCode() != null) { failedEntriesList.add(putEventsRequestEntry); } } putEventsRequestEntryList = failedEntriesList; putEventsRequest.setEntries(putEventsRequestEntryList); putEventsResult = awsEventsClient.putEvents(putEventsRequest); }
Invio di eventi tramite AWS CLI
È possibile utilizzare il AWS CLI per inviare eventi personalizzati in EventBridge modo che possano essere elaborati. L'esempio seguente inserisce un evento personalizzato in EventBridge:
aws events put-events \ --entries '[{"Time": "2016-01-14T01:02:03Z", "Source": "com.mycompany.myapp", "Resources": ["resource1", "resource2"], "DetailType": "myDetailType", "Detail": "{ \"key1\": \"value1\", \"key2\": \"value2\" }"}]'
Puoi anche creare un file JSON contenente eventi personalizzati.
[ { "Time": "2016-01-14T01:02:03Z", "Source": "com.mycompany.myapp", "Resources": [ "resource1", "resource2" ], "DetailType": "myDetailType", "Detail": "{ \"key1\": \"value1\", \"key2\": \"value2\" }" } ]
Quindi, per utilizzare il AWS CLI per leggere le voci di questo file e inviare eventi, al prompt dei comandi digitate:
aws events put-events --entries file://
entries.json