를 사용하여 Amazon EventBridge 이벤트 추가 PutEvents - 아마존 EventBridge

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

를 사용하여 Amazon EventBridge 이벤트 추가 PutEvents

PutEvents액션은 단일 요청으로 EventBridge 여러 이벤트를 전송합니다. 자세한 내용은 Amazon EventBridge API 참조 및 AWS CLI 명령 PutEvents참조의 put-events를 참조하십시오.

PutEvents 요청은 제한된 수의 항목을 지원할 수 있습니다. 자세한 내용은 Amazon EventBridge 할당량 단원을 참조하십시오. PutEvents 작업은 요청의 일반 순서에 따라 모든 항목들을 처리하고자 시도합니다. PutEvents호출한 후 각 이벤트에 EventBridge 고유한 ID를 할당합니다.

다음 예제 Java 코드는 두 개의 동일한 이벤트를 에 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 값이 포함되고, 실패한 결과 항목에는 ErrorCodeErrorMessage 값이 포함됩니다. ErrorCode는 오류 유형을 설명하며 ErrorMessage는 오류에 대한 자세한 정보를 제공합니다. 다음 예제에서는 하나의 PutEvents 요청에 대해 3개의 결과 항목이 있습니다. 두 번째 항목은 실패했습니다.

{ "FailedEntryCount": 1, "Entries": [ { "EventId": "11710aed-b79e-4468-a20b-bb3c0c3b4860" }, { "ErrorCode": "InternalFailure", "ErrorMessage": "Internal Service Failure" }, { "EventId": "d804d26a-88db-4b66-9eaf-9a11c708ae82" } ] }
참고

PutEvents 사용하여 존재하지 않는 이벤트 버스에 이벤트를 게시하는 경우 EventBridge 이벤트 매칭에서는 해당 규칙을 찾지 못하고 이벤트를 삭제합니다. 200응답을 보내긴 하지만 EventBridge 요청이 실패하거나 요청 응답 FailedEntryCount 값에 이벤트가 포함되지는 않습니다.

후속 PutEvents 요청에 실패한 항목들을 포함할 수 있습니다. 먼저, 요청에 실패한 항목이 있는지 알아보려면 PutEventsResult에서 FailedRecordCount 파라미터를 확인합니다. 값이 0이 아닌 경우 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 전송하여 처리할 수 있습니다. 다음 예제에서는 사용자 지정 이벤트 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