Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Senden von Ereignissen mit PutEvents in Amazon EventBridge

Fokusmodus
Senden von Ereignissen mit PutEvents in Amazon EventBridge - Amazon EventBridge

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Die PutEvents Aktion sendet mehrere Ereignisse EventBridge in einer einzigen Anfrage an. Weitere Informationen finden Sie PutEventsin der Amazon EventBridge API-Referenz und put-events in der AWS CLI Befehlsreferenz.

Jede PutEvents-Anforderung kann eine begrenzte Anzahl von Einträgen unterstützen. Weitere Informationen finden Sie unter EventBridge Amazon-Kontingente. Die PutEvents-Operation versucht, alle Einträge in der natürlichen Reihenfolge der Anforderung zu verarbeiten. EventBridge Weist jedem Ereignis nach dem Aufruf PutEvents eine eindeutige ID zu.

Der folgende Java-Beispielcode sendet zwei identische Ereignisse an 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()); } }
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()); } }

Nachdem Sie diesen Code ausgeführt haben, enthält das PutEvents-Ergebnis ein Array von Antworteinträgen. Jeder Eintrag im Antwort-Array entspricht einem Eintrag im Anforderungs-Array in der Reihenfolge vom Anfang bis zum Ende der Anforderung und Antwort. Das Antwort-Array Entries enthält stets die gleiche Anzahl Einträge wie in der Anforderung.

Behandlung von Fehlern bei PutEvents

Wenn ein einzelner Eintrag in einer Anfrage fehlschlägt, EventBridge wird standardmäßig die Verarbeitung der restlichen Einträge in der Anforderung fortgesetzt. Ein Antwort-Entries-Array kann sowohl erfolgreiche als auch erfolglose Einträge enthalten. Sie müssen erfolglose Einträge erkennen und sie im nachfolgenden Aufruf aufnehmen.

Erfolgreiche Ergebniseinträge enthalten einen Id-Wert und erfolglose Ergebniseinträge enthalten ErrorCode- und ErrorMessage-Werte. ErrorCode beschreibt die Art des Fehlers. ErrorMessage enthält weitere Informationen über den Fehler. Im folgenden Beispiel gibt es drei Ergebniseinträge für eine PutEvents-Anforderung. Der zweite Eintrag ist erfolglos.

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

Wenn Sie früher PutEvents ein Ereignis in einem Event-Bus veröffentlichen, der nicht existiert, wird EventBridge beim Event-Matching keine entsprechende Regel gefunden und das Ereignis wird gelöscht. Es EventBridge wird zwar eine 200 Antwort gesendet, aber die Anfrage wird nicht fehlschlagen oder das Ereignis in den FailedEntryCount Wert der Anforderungsantwort einbeziehen.

Einträge, die erfolglos waren, können Sie in nachfolgenden PutEvents-Anforderungen aufnehmen. Wenn Sie herausfinden möchten, ob die Anforderung fehlerhafte Einträge enthält, überprüfen Sie zunächst den Parameter FailedRecordCount in PutEventsResult. Wenn er nicht Null ist, können Sie jeden Entry, der einen ErrorCode hat, der nicht Null ist, zu einer nachfolgenden Anforderung hinzufügen. Das folgende Beispiel zeigt einen einfachen Ausfall-Handler.

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

Senden von Ereignissen mit dem AWS CLI

Sie können das verwenden AWS CLI , um benutzerdefinierte Ereignisse an zu senden, EventBridge damit sie verarbeitet werden können. Im folgenden Beispiel wird ein benutzerdefiniertes Ereignis eingefügt 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\" }"}]'

Sie können auch eine JSON-Datei erstellen, die benutzerdefinierte Ereignisse enthält.

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

Geben Sie dann AWS CLI an der Befehlszeile Folgendes ein, um die Einträge aus dieser Datei zu lesen und Ereignisse zu senden:

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

Die Größe des PutEvents Ereigniseintrags wird berechnet

Wenn Sie benutzerdefinierte Ereignisse an EventBridge die PutEvents Aktion senden, können Sie aus Effizienzgründen mehrere Ereigniseinträge zu einer Anfrage zusammenfassen. Die Gesamtgröße des Eintrags, d. h. die Summe aller Ereignisse in der Anfrage, muss jedoch weniger als 256 KB betragen. Sie können die Größe des Eintrags berechnen, bevor Sie die Ereignisse senden.

Anmerkung

Die Größenbeschränkung hängt vom Eintrag ab. Selbst wenn der Eintrag die Größenbeschränkung unterschreitet, EventBridge ist das Ereignis in aufgrund der erforderlichen Zeichen und Schlüssel der JSON-Darstellung des Ereignisses immer größer als die Eintragsgröße. Weitere Informationen finden Sie unter Ereignisse bei Amazon EventBridge.

EventBridge berechnet die PutEventsRequestEntry Größe wie folgt:

  • Falls angegeben, misst der Parameter Time 14 Bytes.

  • Die Parameter Source und DetailType sind die Anzahl der Bytes für ihre in UTF-8 kodierte Form.

  • Falls angegeben, ist der Parameter Detail die Anzahl von Bytes für die entsprechende UTF-8 kodierte Form.

  • Falls angegeben, ist jeder Eintrag des Parameters Resources die Anzahl von Bytes für die entsprechende UTF-8 kodierte Form.

Das folgende Java-Code-Beispiel berechnet die Größe eines bestimmten PutEventsRequestEntry-Objekts. Um sicherzustellen, dass das 256-KB-Limit nicht überschritten wurde, müssen Sie die Berechnung für alle Ereignisse in einer Anfrage durchführen.

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

Wenn der Eintrag größer als 256 KB ist, empfehlen wir, das Ereignis in einen Amazon-S3-Bucket hochzuladen und die Object URL in den PutEvents-Eintrag aufzunehmen.

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.