すべてのプロダクト
Search
ドキュメントセンター

EventBridge:PutEvents によって公開されるイベントのサイズの計算

最終更新日:Jan 11, 2025

このトピックでは、PutEvents オペレーションによって公開されるイベントのサイズの計算方法について説明します。 効率を高めるために、1 つの要求に複数のイベントを追加できます。

シナリオ

PutEvents オペレーションを呼び出して、EventBridge にカスタムイベントを追加できます。 PutEvents オペレーションを呼び出して複数のイベントを追加する前に、すべてのイベントの合計サイズを計算して、イベントサイズが 256 KB を超えないようにすることができます。 その後、これらのイベントを 1 つの要求に追加して効率を高めることができます。

次のセクションでは、イベントサイズの計算方法を示します。

計算方法

次のパラメーターを使用して、CloudEvent のサイズを計算します。

  • time: データサイズは通常 36 バイトです。
  • specversion: UTF-8 でエンコードされたバイト数で測定されます。
  • id: UTF-8 でエンコードされたバイト数で測定されます。
  • type: UTF-8 でエンコードされたバイト数で測定されます。
  • source: UTF-8 でエンコードされたバイト数で測定されます。
  • subject: UTF-8 でエンコードされたバイト数で測定されます。
  • dataschema: UTF-8 でエンコードされたバイト数で測定されます。
  • datacontenttype: UTF-8 でエンコードされたバイト数で測定されます。
  • data: byte[] の長さで測定されます。

サンプルコード

次の Java サンプルコードは、単一の CloudEvent のサイズを計算するために使用されます。

int getSize(CloudEvent event) {
    int size = 0;
    // event.getTime() が null でない場合、サイズに 36 を加算します。
    if (event.getTime() != null) {
        size += 36;
    }
    // event.getSpecversion() のバイト数を UTF-8 で取得し、サイズに加算します。
    size += event.getSpecversion().getBytes(StandardCharsets.UTF_8).length;
    // event.getId() のバイト数を UTF-8 で取得し、サイズに加算します。
    size += event.getId().getBytes(StandardCharsets.UTF_8).length;
    // event.getType() のバイト数を UTF-8 で取得し、サイズに加算します。
    size += event.getType().getBytes(StandardCharsets.UTF_8).length;
    // event.getSource() のバイト数を UTF-8 で取得し、サイズに加算します。
    size += event.getSource().toString().getBytes(StandardCharsets.UTF_8).length;
    // event.getSubject() のバイト数を UTF-8 で取得し、サイズに加算します。
    size += event.getSubject().getBytes(StandardCharsets.UTF_8).length;
    // event.getDataschema() のバイト数を UTF-8 で取得し、サイズに加算します。
    size += event.getDataschema().toString().getBytes(StandardCharsets.UTF_8).length;
    // event.getDatacontenttype() のバイト数を UTF-8 で取得し、サイズに加算します。
    size += event.getDatacontenttype().getBytes(StandardCharsets.UTF_8).length;
    // event.getData() の長さをサイズに加算します。
    size += event.getData().length;   
    return size;
}