[アップデート] Amazon EventBridgeのイベントバスに乗せられるデータの最大サイズが1MBに拡大されました
Amazon EventBridgeイベントバスに乗せられるデータが最大1MBまで対応したぞ
おのやんです。
この度のアップデートにより、Amazon EventBridge(以下、EventBridge)のイベントバスに乗せられるデータの最大サイズが256KBから1MBへ拡大されました。
この記事では、AWS CLIでコマンドを実行して1MBに近いデータを実際に送信してみたいと思います。
アップデートの概要
EventBridgeでは、さまざまなAWSサービス・クライアントで発生するイベントを受信して、他のAWSサービスやその他のターゲットにイベントを配信できます。このイベントバスでは、ターゲットに配信する前にデータ変換などをかけたりすることができたりします。
(参考:Amazon EventBridge のイベントバス - Amazon EventBridge)
従来では、このイベントバスにて扱える最大データサイズは256KBでした。そのため、256KBを超えるデータを扱う場合は、複数のイベントに分割したり、圧縮処理が必要でした。場合によってはAmazon S3やAmazon DynamoDBなどにデータを保存して、イベントには参照情報のみを含める、みたいな対応も必要でした。(筆者も、このあたりの機能要件を設計したことがあります)
今回のアップデートで、EventBridgeのイベントバスに配信できるデータの最大サイズが256KBから1MBに拡大されました。4倍も大きくなっていますね。ニュージーランド、タイ、マレーシア、台北、メキシコ以外の全てのリージョンで、こちらのアップデートを利用可能です。
実際にやってみた
ということで、実際にAWS CLIを使って1MBくらいのデータをEventBridgeに送信してみましょう。
まず、EventBridgeのテスト用イベントバスを作成します。
aws events create-event-bus --name test-large-payload-bus
AWSマネジメントコンソールから見ると、正常に作成されていますね。

次にPythonを使って、256KBを超えるデータを生成します。今回は1MBの上限に近い、約900KBのJSONデータを生成します。
# Pythonファイルを作成しておく
$ cat generate-large-payload.py
import json
# 約900KBのテストデータを生成
detail_data = {
"testData": "A" * 900000 # 900KB相当の文字列
}
large_data = {
"Source": "custom.largePayloadTest",
"DetailType": "Large Payload Test",
"Detail": json.dumps(detail_data)
}
with open('large-payload.json', 'w') as f:
json.dump([large_data], f, indent=2)
print(f"Payload size: {len(json.dumps(large_data)) / 1024:.2f} KB")
# Pythonコードを実行して、900KBのJSONファイルを生成
$ python3 generate-large-payload.py
Payload size: 879.13 KB
今回の検証はMacで実施しているのですが、Macのファインダーから、さきほど生成したJSONファイルのサイズを見てみます。ちゃんと900KBになっていますね。

このJSONファイルを乗せた状態で、EventBridgeバスにイベントを配信します。
aws events put-events --entries file://large-payload.json
こちらのように表示されていたら、正常に実行できています。
{
"FailedEntryCount": 0,
"Entries": [
{
"EventId": "75ec9eb4-8f86-48c7-ff20-ca17ff3d230e"
}
]
}
数分時間を置いたあとに、AWSマネジメントコンソール上のEventBridgeイベントバス詳細画面に移動し、そこの「モニタリング」タブを開きます。ここに、Amazon CloudWatchメトリクスを確認してみます。PutEventsRequestSize(参考:Amazon EventBridge のモニタリング - Amazon EventBridge)のメトリクスを確認すると、ここのリクエストサイズが、先ほど生成したJSONファイルのサイズとほぼ同じ900KBになっているのが確認できました。ちゃんと256KBを超えたデータに対応していますね。

ちなみに、今回引き上げられた上限値である1MBを超えるデータだと、しっかりエラーになります。先ほどのPythonコードで、2MBのJSONファイルを食わせてみると、Total size of the entries in the request is over the limit.というエラーメッセージが確認できました。
$ aws events put-events --entries file://large-payload.json
An error occurred (ValidationException) when calling the PutEvents operation: Total size of the entries in the request is over the limit.
EventBridgeのイベントバスがより使いやすくなった
EventBridgeイベントバスのデータ量制限、意外と特定のケースで引っかかったりするんですよね。筆者もお客様への技術支援の中で実際に機能要件として設計したことがあります。
AWS上でAIなどのアプリケーションを動かすケースが増えていく中、LLMへのプロンプトといった、送信するデータ量自体が増えていきがちな昨今です。今回のアップデートのおかげでEventBridgeを採用しやすくなり、非常にありがたいアップデートだな〜と思いました。







