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.
Envoyer des événements PutEvents
via Amazon EventBridge
L'PutEvents
action envoie plusieurs événements EventBridge dans une seule demande. Pour plus d'informations, consultez PutEventsla EventBridge APIréférence 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 de plus amples informations, veuillez consulter EventBridge Quotas Amazon. 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.
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 sur 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 JSON fichier 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 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
Calcul de la taille des entrées d' PutEvents événements
Lorsque vous envoyez des événements personnalisés à EventBridge l'aide de l'PutEvents
action, vous pouvez regrouper plusieurs entrées d'événements dans une seule demande pour plus d'efficacité. Toutefois, la taille totale de l'entrée doit être inférieure à 256 Ko. Vous pouvez calculer la taille d’une entrée avant d’envoyer les événements.
Note
La limite de taille est imposée pour l’entrée. Même si la taille de l'entrée est inférieure à la limite de taille, l'événement EventBridge est toujours supérieur à la taille de l'entrée en raison des caractères et des clés nécessaires à la JSON représentation de l'événement. Pour de plus amples informations, veuillez consulter Événements sur Amazon EventBridge.
EventBridge calcule la PutEventsRequestEntry
taille comme suit :
-
Si le paramètre
Time
est spécifié, sa taille est de 14 octets. -
Les
DetailType
paramètresSource
et correspondent au nombre d'octets pour leurs formes codées en UTF -8. -
S'il est spécifié, le
Detail
paramètre est le nombre d'octets pour sa forme codée en UTF -8. -
Si elle est spécifiée, chaque entrée du
Resources
paramètre correspond au nombre d'octets pour ses formes codées en UTF -8.
L’exemple de code Java suivant calcule la taille d’un objet PutEventsRequestEntry
donné.
int getSize(PutEventsRequestEntry entry) { int size = 0; if (entry.getTime() != null) { size += 14; } size += entry.getSource().getBytes(StandardCharsets.UTF_8).length; size += entry.getDetailType().getBytes(StandardCharsets.UTF_8).length; if (entry.getDetail() != null) { size += entry.getDetail().getBytes(StandardCharsets.UTF_8).length; } if (entry.getResources() != null) { for (String resource : entry.getResources()) { if (resource != null) { size += resource.getBytes(StandardCharsets.UTF_8).length; } } } return size; }
Note
Si la taille d’une entrée est supérieure à 256 Ko, nous vous recommandons de charger l’événement dans un compartiment Amazon S3 et d’inclure Object URL
dans l’entrée PutEvents
.