翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon PutEvents
での でのイベントの送信 EventBridge
PutEvents
アクションは、1 つのリクエスト EventBridge で複数のイベントを に送信します。詳細については、「Amazon EventBridge API リファレンスPutEvents」の「」とAWS CLI 「 コマンドリファレンス」の「put-events」を参照してください。
各 PutEvents
リクエストでサポートされているエントリの数は制限されています。詳細については、「Amazon EventBridge クォータ」を参照してください。PutEvents
オペレーションでは、リクエストの自然な順序ですべてのエントリを処理するように試みます。を呼び出すとPutEvents
、 は各イベントに一意の ID を EventBridge 割り当てます。
次の Java コードの例では、2 つの同じイベントを に送信します EventBridge。
このコードの実行後、PutEvents
の結果には応答配列のエントリが含まれます。応答配列の各エントリは、リクエストとレスポンスの最初から最後までの順番に、リクエスト配列のエントリと対応します。応答 Entries
配列には、常にリクエスト配列と同じ数のエントリが含まれます。
PutEvents
での失敗の処理
デフォルトでは、リクエスト内の個々のエントリが失敗した場合、 はリクエスト内の残りのエントリの処理 EventBridge を続行します。レスポンスの Entries
配列には、成功したエントリと失敗したエントリの両方を含めることができます。成功しなかったエントリを検出し、それ以降の呼び出しに含める必要があります。
成功した結果エントリには、Id
値が含まれ、失敗した結果エントリには ErrorCode
および ErrorMessage
の値が含まれます。ErrorCode
はエラーのタイプを示します。ErrorMessage
にはエラーに関する詳細が指定されます。以下の例では、PutEvents
リクエストに対して 3 つの結果エントリがあります。2 番目のエントリは成功していません。
{ "FailedEntryCount": 1, "Entries": [ { "EventId": "11710aed-b79e-4468-a20b-bb3c0c3b4860" }, { "ErrorCode": "InternalFailure", "ErrorMessage": "Internal Service Failure" }, { "EventId": "d804d26a-88db-4b66-9eaf-9a11c708ae82" } ] }
注記
PutEvents
を使用して存在しないイベントバスにイベントを発行すると、 EventBridge イベントマッチングは対応するルールを見つけられず、イベントは削除されます。 EventBridge は200
レスポンスを送信しますが、リクエストに失敗したり、リクエストレスポンスFailedEntryCount
の値にイベントを含めたりすることはありません。
失敗したエントリは、以降の PutEvents
リクエストに含めることができます。最初に、失敗したエントリがあるかどうかを調べるために、PutEventsResult
の FailedRecordCount
パラメータを確認します。ゼロでない場合、Null でない ErrorCode
を持つ各 Entry
を後続のリクエストに追加することができます。以下は、エラーハンドラーの例です。
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); }
を使用したイベントの送信 AWS CLI
を使用して AWS CLI カスタムイベントを に送信 EventBridge し、処理できます。次の例では、1 つのカスタムイベントを に配置します 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\" }"}]'
カスタムイベントを含むJSONファイルを作成することもできます。
[ { "Time": "2016-01-14T01:02:03Z", "Source": "com.mycompany.myapp", "Resources": [ "resource1", "resource2" ], "DetailType": "myDetailType", "Detail": "{ \"key1\": \"value1\", \"key2\": \"value2\" }" } ]
次に、 を使用してこのファイルからエントリ AWS CLI を読み取ってイベントを送信するには、コマンドプロンプトで次のように入力します。
aws events put-events --entries file://
entries.json
PutEvents イベントエントリサイズの計算
PutEvents
アクション EventBridge を使用してカスタムイベントを に送信すると、複数のイベントエントリを 1 つのリクエストにバッチ処理して効率を高めることができます。ただし、エントリの合計サイズは 256KB未満である必要があります。イベントを送信する前に、エントリサイズを計算できます。
注記
サイズ制限はエントリに適用されます。エントリがサイズ制限より小さい場合でも、イベントJSONの表示に必要な文字とキーにより、 のイベント EventBridge は常にエントリサイズよりも大きくなります。詳細については、「Amazon でのイベント EventBridge」を参照してください。
EventBridge は次のようにPutEventsRequestEntry
サイズを計算します。
-
指定されている場合、
Time
パラメータは 14 バイトです。 -
Source
およびDetailType
パラメータは、UTF-8 エンコードされたフォームのバイト数です。 -
指定した場合、
Detail
パラメータは UTF-8 エンコードされた形式のバイト数です。 -
指定した場合、
Resources
パラメータの各エントリは、UTF-8 エンコードされたフォームのバイト数です。
以下の Java コード例は、指定された PutEventsRequestEntry
オブジェクトのサイズを計算します。
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; }
注記
エントリサイズが 256 KB より大きい場合は、イベントを Amazon S3 バケットにアップロードし、Object URL
を PutEvents
エントリに含めることをお勧めします。