Ajouter AmazonEventBridgeévénements avecPutEvents - Amazon EventBridge

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Ajouter AmazonEventBridgeévénements avecPutEvents

LePutEventsl'action envoie plusieursévénementspourEventBridgeen une seule demande. Pour plus d'informations, voirPutEventsdans leAmazonEventBridgeRéférence d'APIetévénements PUTdans leAWS CLIRéférence de commande.

Chaque demande PutEvents peut prendre en charge un nombre d'entrées limité. Pour plus d'informations, veuillez consulter AmazonEventBridgequotas. L'opération PutEvents tente de traiter toutes les entrées dans l'ordre naturel de la demande. Après avoir appeléPutEvents,EventBridgeattribue un identifiant unique à chaque événement.

L'exemple de code Java suivant envoie deux événements identiques àEventBridge.

AWS SDK for Java Version 2.x
EventBridgeClient eventBridgeClient = EventBridgeClient.builder().build(); PutEventsRequestEntry requestEntry = PutEventsRequestEntry.builder() .resources("resource1", "resource2") .source("com.mycompany.myapp") .detailType("myDetailType") .detail("{ \"key1\": \"value1\", \"key2\": \"value2\" }") .build(); List < PutEventsRequestEntry > requestEntries = new ArrayList < PutEventsRequestEntry > (); requestEntries.add(requestEntry); PutEventsRequest eventsRequest = PutEventsRequest.builder() .entries(requestEntries) .build(); PutEventsResponse result = eventBridgeClient.putEvents(eventsRequest); for (PutEventsResultEntry resultEntry: result.entries()) { if (resultEntry.eventId() != null) { System.out.println("Event Id: " + resultEntry.eventId()); } else { System.out.println("PutEvents failed with Error Code: " + resultEntry.errorCode()); } }
AWS SDK for Java Version 1.0
EventBridgeClient eventBridgeClient = EventBridgeClient.builder().build(); PutEventsRequestEntry requestEntry = new PutEventsRequestEntry() .withTime(new Date()) .withSource("com.mycompany.myapp") .withDetailType("myDetailType") .withResources("resource1", "resource2") .withDetail("{ \"key1\": \"value1\", \"key2\": \"value2\" }"); PutEventsRequest request = new PutEventsRequest() .withEntries(requestEntry, requestEntry); PutEventsResult result = awsEventsClient.putEvents(request); for (PutEventsResultEntry resultEntry : result.getEntries()) { if (resultEntry.getEventId() != null) { System.out.println("Event Id: " + resultEntry.getEventId()); } else { System.out.println("Injection failed with Error Code: " + resultEntry.getErrorCode()); } }

Après avoir exécuté ce code, lePutEventsle résultat inclut un tableau d'entrées de réponse. Chaque entrée du tableau de réponses correspond à une entrée du tableau de demandes dans l'ordre du début à la fin de la demande et de la réponse. Le tableau de réponse Entries comprend toujours le même nombre d'entrées que le tableau de demande.

Gérer les défaillances avecPutEvents

Par défaut, si une entrée individuelle dans une demande échoue,EventBridgecontinue de traiter le reste des entrées de la demande. Une réponseEntriesle tableau peut inclure à la fois des entrées réussies et des entrées infructueuses. Vous devez détecter les entrées infructueuses et les inclure dans un appel ultérieur.

Les entrées de résultats réussies incluent unIdvaleur, et les entrées de résultats infructueuses incluentErrorCodeetErrorMessagevaleurs.ErrorCodedécrit le type d'erreur.ErrorMessagefournit des informations supplémentaires sur l'erreur. L'exemple suivant comporte trois entrées de résultats pour unPutEventsdemande. La deuxième entrée est infructueuse.

{ "FailedEntryCount": 1, "Entries": [ { "EventId": "11710aed-b79e-4468-a20b-bb3c0c3b4860" }, { "ErrorCode": "InternalFailure", "ErrorMessage": "Internal Service Failure" }, { "EventId": "d804d26a-88db-4b66-9eaf-9a11c708ae82" } ] }
Note

Si vous utilisezPutEventspour publier un événement sur un bus d'événements qui n'existe pas,EventBridgele matching d'événements ne trouvera pas de règle correspondante et supprimera l'événement. Bien queEventBridgeenverra un200réponse, elle n'échouera pas à la demande et n'inclura pas l'événement dans leFailedEntryCountvaleur de la réponse à la demande.

Vous pouvez inclure les entrées infructueuses dans les suivantesPutEventsdemandes. Tout d'abord, pour savoir si des entrées ont échoué dans la demande, consultezFailedRecordCountparamètre dansPutEventsResult. Si ce n'est pas zéro, vous pouvez ajouter chaqueEntryqui possède unErrorCodequi n'est pas nul pour une demande ultérieure. L'exemple suivant montre un gestionnaire de défaillances.

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); }

Envoi d'événements à l'aide duAWS CLI

Vous pouvez utiliserAWS CLIpour envoyer des événements personnalisés àEventBridgeafin qu'ils puissent être traités. L'exemple suivant place un événement personnalisé dans 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\" }"}]'

Vous pouvez également créer un fichier JSON contenant des événements personnalisés.

[ { "Time": "2016-01-14T01:02:03Z", "Source": "com.mycompany.myapp", "Resources": [ "resource1", "resource2" ], "DetailType": "myDetailType", "Detail": "{ \"key1\": \"value1\", \"key2\": \"value2\" }" } ]

Ensuite, pour utiliser leAWS CLIpour lire les entrées de ce fichier et envoyer des événements, à l'invite de commande, tapez :

aws events put-events --entries file://entries.json