Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengirim acara dengan PutEvents di Amazon EventBridge
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.
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 acara 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 acara, pada prompt perintah, ketik:
aws events put-events --entries file://entries.json
Menghitung ukuran entri PutEvents acara
Saat Anda mengirim peristiwa khusus untuk EventBridge menggunakan PutEvents tindakan, Anda dapat mengumpulkan beberapa entri peristiwa ke dalam satu permintaan efisiensi. Namun, total ukuran entri - yaitu, jumlah semua peristiwa dalam permintaan - harus kurang dari 256KB. Anda dapat menghitung ukuran entri sebelum Anda mengirim peristiwa.
catatan
Batas ukuran dikenakan pada entri. Bahkan jika entri kurang dari batas ukuran, acara di selalu EventBridge lebih besar dari ukuran entri karena karakter dan kunci yang diperlukan dari representasi JSON dari acara tersebut. Untuk informasi selengkapnya, lihat Acara di Amazon EventBridge.
EventBridge menghitung PutEventsRequestEntry ukuran sebagai berikut:
-
Jika ditentukan, parameter
Timeadalah 14 byte. -
Parameter
SourcedanDetailTypeadalah jumlah byte untuk bentuk terenkodekan UTF-8 mereka. -
Jika ditentukan, parameter
Detailadalah jumlah byte untuk bentuk terenkodekan UTF-8-nya. -
Jika ditentukan, setiap entri parameter
Resourcesadalah jumlah byte untuk bentuk terenkodekan UTF-8-nya.
Contoh kode Java berikut ini menghitung ukuran objek PutEventsRequestEntry yang diberikan. Untuk memverifikasi batas 256KB tidak dilanggar, Anda perlu melakukan perhitungan untuk semua acara dalam permintaan.
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; }
catatan
Jika ukuran entri lebih besar dari 256KB, kami sarankan untuk mengunggah acara ke bucket Amazon S3 dan menyertakan entri di entri. Object URL PutEvents