Berechnen der Größe von PutEvents-Ereigniseinträgen - Amazon CloudWatch Events

Berechnen der Größe von PutEvents-Ereigniseinträgen

Anmerkung

Amazon EventBridge ist die bevorzugte Methode zum Verwalten Ihrer Ereignisse. Amazon CloudWatch Events und EventBridge liegen der gleiche Service und die gleiche API zugrunde, EventBridge bietet jedoch mehr Funktionen. Änderungen, die Sie in CloudWatch oder EventBridge vornehmen, werden in allen Konsolen angezeigt. Weitere Informationen finden Sie unter Amazon EventBridge.

Sie können benutzerdefinierte Ereignisse mithilfe der PutEvents-Aktion in CloudWatch Events einfügen. Sie können mehrere Ereignisse mithilfe der PutEvents-Aktion einfügen, die gesamte Größe des Eintrags darf aber maximal 256 KB betragen. Sie können die Größe des Ereigniseintrags vorab wie folgt berechnen. Anschließend können Sie mehrere Ereigniseinträge aus Effizienzgründen im Batch in einer Anforderung verarbeiten.

Anmerkung

Die Größenbeschränkung wird dem Eintrag auferlegt. Auch wenn der Eintrag kleiner ist als die Größenbeschränkung, bedeutet dies nicht, dass das Ereignis in CloudWatch Events ebenfalls kleiner als diese Größe ist. Im Gegenteil: Das Ereignis ist immer größer als der Eintrag. Grund dafür sind die erforderlichen Zeichen und Schlüssel der JSON-Darstellung des Ereignisses. Weitere Informationen finden Sie unter Ereignisse in CloudWatch Events.

Die PutEventsRequestEntry-Größe wird wie folgt berechnet:

  • Wenn der Parameter Time angegeben ist, misst er 14 Bytes.

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

  • Wenn der Parameter Detail angegeben ist, wird er in der Anzahl von Bytes für die entsprechende UTF-8 kodierte Form gemessen.

  • Wenn der Parameter Resources angegeben ist, wird für jeden Eintrag die Anzahl von Bytes der entsprechenden UTF-8 kodierten Form gemessen.

Das folgende Java-Code-Beispiel berechnet die Größe eines bestimmten PutEventsRequestEntry-Objekts:

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