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'PutEvents
action 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.
Rubriques
L'exemple de code Java suivant envoie deux événements identiques à EventBridge.
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