Menambahkan EventBridge acara Amazon dengan PutEvents - Amazon EventBridge

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menambahkan EventBridge acara Amazon dengan PutEvents

PutEventsTindakan mengirimkan beberapa peristiwa ke EventBridge dalam satu permintaan. Untuk informasi selengkapnya, lihat PutEventsReferensi Amazon EventBridge API dan put-events di Referensi AWS CLI Perintah.

Setiap permintaan PutEvents dapat mendukung sejumlah entri yang terbatas. Untuk informasi selengkapnya, lihat EventBridge Kuota Amazon. Operasi PutEvents mencoba untuk memproses semua entri dalam urutan alami permintaan. Setelah Anda meneleponPutEvents, EventBridge berikan setiap peristiwa ID unik.

Contoh kode Java berikut mengirimkan dua peristiwa identik ke 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()); } }

Setelah Anda menjalankan kode ini, hasil PutEvents termasuk array entri respons. Setiap entri dalam array respon sesuai dengan entri dalam array permintaan dalam urutan dari awal sampai akhir permintaan dan respons. Array Entries respons selalu mencakup jumlah entri yang sama sebagai array permintaan.

Menangani kegagalan dengan PutEvents

Secara default, jika entri individu dalam permintaan gagal, EventBridge terus memproses sisa entri dalam permintaan. Array Entries respons dapat mencakup entri yang berhasil dan yang tidak berhasil. Anda harus mendeteksi entri yang tidak berhasil dan menyertakannya ke dalam panggilan berikutnya.

Entri hasil yang berhasil mencakup nilai Id, dan entri hasil yang tidak berhasil mencakup nilai ErrorCode dan ErrorMessage. ErrorCode menguraikan jenis kesalahan.ErrorMessage menyediakan informasi lebih lanjut tentang kesalahan. Contoh berikut ini memiliki tiga entri hasil untuk permintaan PutEvents. Entri kedua tidak berhasil.

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

Jika Anda menggunakan PutEvents untuk mempublikasikan acara ke bus acara yang tidak ada, pencocokan EventBridge acara tidak akan menemukan aturan yang sesuai dan akan membatalkan acara tersebut. Meskipun EventBridge akan mengirim 200 respons, itu tidak akan gagal permintaan atau menyertakan acara dalam FailedEntryCount nilai respons permintaan.

Anda dapat menyertakan entri yang tidak berhasil dalam permintaan PutEvents berikutnya. Pertama, untuk mengetahui apakah ada entri gagal dalam permintaan, periksa parameter FailedRecordCount dalam PutEventsResult. Jika bukan nol, maka Anda dapat menambahkan masing-masing Entryyang memiliki ErrorCode yang bukan null untuk permintaan berikutnya. Contoh berikut ini menunjukkan penangan kegagalan.

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); }

Mengirim peristiwa menggunakan AWS CLI

Anda dapat menggunakan AWS CLI untuk mengirim acara khusus EventBridge agar dapat diproses. Contoh berikut menempatkan satu acara khusus ke dalam 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\" }"}]'

Anda juga dapat membuat file JSON yang berisi peristiwa kustom.

[ { "Time": "2016-01-14T01:02:03Z", "Source": "com.mycompany.myapp", "Resources": [ "resource1", "resource2" ], "DetailType": "myDetailType", "Detail": "{ \"key1\": \"value1\", \"key2\": \"value2\" }" } ]

Kemudian, untuk menggunakan AWS CLI untuk membaca entri dari file ini dan mengirim peristiwa, pada prompt perintah, ketik:

aws events put-events --entries file://entries.json