Ajouter des EventBridge événements Amazon avec PutEvents - 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 des EventBridge événements Amazon avec PutEvents

L'PutEventsaction envoie plusieurs événements EventBridge dans une seule demande. Pour plus d'informations, consultez PutEventsla référence des EventBridge API Amazon et put-events dans la référence des AWS CLI commandes.

Chaque demande PutEvents peut prendre en charge un nombre d'entrées limité. Pour plus d’informations, consultez Quotas Amazon EventBridge. L'opération PutEvents tente de traiter toutes les entrées dans l'ordre naturel de la demande. Après avoir appeléPutEvents, EventBridge attribue 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, le résultat de PutEvents inclut un tableau d’entrées de réponse. Chaque entrée de ce tableau 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.

Traitement des échecs avec PutEvents

Par défaut, en cas d'échec d'une entrée individuelle dans une demande, EventBridge le traitement du reste des entrées de la demande est poursuivi. Un tableau Entries de réponses peut inclure à la fois des entrées réussies et infructueuses. Vous devez détecter les entrées infructueuses et les inclure dans un appel ultérieur.

Les entrées réussies incluent une valeur Id et les entrées infructueuses incluent des valeurs ErrorCode et ErrorMessage. ErrorCode décrit le type d’erreur. ErrorMessage fournit plus d’informations sur l’erreur. L’exemple suivant comporte trois entrées de résultat pour une demande PutEvents. 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 PutEvents publiez un événement dans un bus d'événements qui n'existe pas, la mise en correspondance des EventBridge événements ne trouvera pas de règle correspondante et supprimera l'événement. Bien qu' EventBridge il envoie une 200 réponse, il n'échouera pas à la demande et n'inclura pas l'événement dans la FailedEntryCount valeur de la réponse à la demande.

Vous pouvez inclure les entrées qui sont infructueuses dans les demandes PutEvents ultérieures. Tout d’abord, pour savoir si la demande comporte des entrées ayant échoué, vérifiez le paramètre FailedRecordCount dans PutEventsResult. Si sa valeur est différente de zéro, vous pouvez ajouter chaque Entry qui comporte un ErrorCode non nul à une demande ultérieure. L’exemple suivant représente un gestionnaire d’échec.

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 du AWS CLI

Vous pouvez utiliser le AWS CLI pour envoyer des événements personnalisés EventBridge afin 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 qui contient 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 le AWS CLI pour 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