Menambahkan Peristiwa dengan PutEvents - Amazon CloudWatch Peristiwa

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

Menambahkan Peristiwa dengan PutEvents

catatan

Amazon EventBridge adalah cara pilihan untuk mengelola peristiwa Anda. CloudWatch Events dan EventBridge adalah layanan dan API dasar yang sama, tetapi EventBridge menyediakan lebih banyak fitur. Perubahan yang Anda buat di CloudWatch atau EventBridge akan muncul di setiap konsol. Untuk informasi selengkapnya, lihat Amazon EventBridge.

Tindakan PutEvents mengirimkan beberapa peristiwa ke CloudWatch Events dalam permintaan tunggal. Untuk informasi selengkapnya, lihat PutEvents dalam Referensi API Amazon CloudWatch Events dan put-events dalam Referensi Perintah AWS CLI.

Setiap permintaan PutEvents dapat mendukung sejumlah entri yang terbatas. Untuk informasi selengkapnya, lihat Kuota CloudWatch Events. Operasi PutEvents mencoba untuk memproses semua entri dalam urutan alami permintaan. Setiap peristiwa memiliki id unik yang ditetapkan oleh CloudWatch Events setelah Anda memanggil PutEvents.

Contoh kode Java berikut ini mengirimkan dua peristiwa yang identik ke CloudWatch Events:

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

Hasil PutEvents mencakup susunan entri respons. Setiap entri dalam susunan respons secara langsung berkorelasi dengan entri dalam susunan permintaan dengan urutan asal, dari permintaan dan respons paling atas hingga paling bawah. Array Entries respons selalu mencakup jumlah entri yang sama sebagai array permintaan.

Menangani Kegagalan Saat Menggunakan PutEvents

Secara default, kegagalan tiap-tiap entri dalam permintaan tidak menghentikan pemrosesan entri berikutnya dalam permintaan. Ini berarti bahwa susunan Entri respons mencakup entri yang berhasil maupun tidak berhasil diproses. Anda harus mendeteksi entri yang tidak berhasil diproses dan menyertakannya ke dalam panggilan berikutnya.

Entri hasil yang berhasil mencakup nilai Id, dan entri hasil yang tidak berhasil mencakup nilai ErrorCode dan ErrorMessage. Parameter ErrorCode mencerminkan jenis kesalahan. ErrorMessage memberikan informasi lebih terperinci tentang kesalahan tersebut. Contoh di bawah ini memiliki tiga entri hasil untuk permintaan PutEvents. Entri kedua telah gagal dan tercermin dalam respons.

Contoh: Sintaks Respons PutEvents

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

Entri yang tidak berhasil diproses dapat disertakan dalam permintaan PutEvents berikutnya. Pertama, periksa parameter FailedRecordCount dalam PutEventsResult untuk mengonfirmasi apakah ada catatan kegagalan dalam permintaan. Jika ada, tiap-tiap Entry dengan ErrorCode bukan null harus ditambahkan ke permintaan berikutnya. Untuk contoh jenis handler ini, lihat kode berikut.

Contoh: Handler kegagalan PutEvents

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 peristiwa kustom. Contoh berikut ini menempatkan satu peristiwa kustom ke CloudWatch Events:

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 misalnya, entries.json, seperti berikut ini:

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

Anda dapat menggunakan AWS CLI untuk membaca entri dari file ini dan mengirim peristiwa. Di jendela perintah, ketik:

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