で Amazon EventBridge イベントを追加する PutEvents - Amazon EventBridge

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

で Amazon EventBridge イベントを追加する PutEvents

PutEventsアクションは 1 EventBridge 回のリクエストで複数のイベントをに送信します。詳細については、Amazon EventBridge API リファレンスの「」を、「AWS CLI コマンドリファレンス」の「put-events」を参照してくださいPutEvents

PutEvents リクエストでサポートされているエントリの数は制限されています。詳細については、「Amazon EventBridge クォータ」を参照してください。PutEvents オペレーションでは、リクエストの自然な順序ですべてのエントリを処理するように試みます。呼び出し後PutEvents、各イベントに固有の ID EventBridge を割り当てます。

次の Java コード例では、2 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()); } }

このコードの実行後、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 リクエストに含めることができます。最初に、失敗したエントリがあるかどうかを調べるために、PutEventsResultFailedRecordCount パラメータを確認します。ゼロでない場合、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