Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan pemfilteran acara dengan sumber acara Apache Kafka yang dikelola sendiri
Anda dapat menggunakan pemfilteran peristiwa untuk mengontrol rekaman mana dari aliran atau antrian yang dikirim Lambda ke fungsi Anda. Untuk informasi umum tentang cara kerja penyaringan acara, lihatKontrol peristiwa mana yang dikirim Lambda ke fungsi Anda.
Bagian ini berfokus pada penyaringan acara untuk sumber acara Apache Kafka yang dikelola sendiri.
Dasar-dasar penyaringan acara Apache Kafka yang dikelola sendiri
Misalkan produser menulis pesan ke topik di cluster Apache Kafka yang dikelola sendiri, baik dalam JSON format yang valid atau sebagai string biasa. Contoh catatan akan terlihat seperti berikut, dengan pesan dikonversi ke string yang dikodekan Base64 di bidang. value
{ "mytopic-0":[ { "topic":"mytopic", "partition":0, "offset":15, "timestamp":1545084650987, "timestampType":"CREATE_TIME", "value":"SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==", "headers":[] } ] }
Misalkan produser Apache Kafka Anda menulis pesan ke topik Anda dalam format berikutJSON.
{ "device_ID": "AB1234", "session":{ "start_time": "yyyy-mm-ddThh:mm:ss", "duration": 162 } }
Anda dapat menggunakan value
kunci untuk memfilter catatan. Misalkan Anda ingin memfilter hanya catatan-catatan di mana device_ID
dimulai dengan huruf AB. FilterCriteria
Objeknya adalah sebagai berikut.
{ "Filters": [ { "Pattern": "{ \"value\" : { \"device_ID\" : [ { \"prefix\": \"AB\" } ] } }" } ] }
Untuk kejelasan tambahan, berikut adalah nilai filter yang Pattern
diperluas secara polosJSON.
{ "value": { "device_ID": [ { "prefix": "AB" } ] } }
Anda dapat menambahkan filter menggunakan konsol, AWS CLI atau AWS SAM templat.
Dengan Apache Kafka yang dikelola sendiri, Anda juga dapat memfilter catatan di mana pesannya adalah string biasa. Misalkan Anda ingin mengabaikan pesan-pesan di mana string adalah “kesalahan”. FilterCriteria
Objek akan terlihat sebagai berikut.
{ "Filters": [ { "Pattern": "{ \"value\" : [ { \"anything-but\": [ \"error\" ] } ] }" } ] }
Untuk kejelasan tambahan, berikut adalah nilai filter yang Pattern
diperluas secara polosJSON.
{ "value": [ { "anything-but": [ "error" ] } ] }
Anda dapat menambahkan filter menggunakan konsol, AWS CLI atau AWS SAM templat.
Pesan Apache Kafka yang dikelola sendiri harus berupa UTF -8 string yang dikodekan, baik string biasa atau dalam format. JSON Itu karena Lambda menerjemahkan array byte Kafka menjadi UTF -8 sebelum menerapkan kriteria filter. Jika pesan Anda menggunakan pengkodean lain, seperti UTF -16 atauASCII, atau jika format pesan tidak cocok dengan format, Lambda FilterCriteria
hanya memproses filter metadata. Tabel berikut merangkum perilaku spesifik:
Format pesan masuk | Format pola filter untuk properti pesan | Tindakan yang dihasilkan |
---|---|---|
Tali polos |
Tali polos |
Filter Lambda berdasarkan kriteria filter Anda. |
Tali polos |
Tidak ada pola filter untuk properti data |
Filter Lambda (hanya pada properti metadata lainnya) berdasarkan kriteria filter Anda. |
Tali polos |
Valid JSON |
Filter Lambda (hanya pada properti metadata lainnya) berdasarkan kriteria filter Anda. |
Valid JSON |
Tali polos |
Filter Lambda (hanya pada properti metadata lainnya) berdasarkan kriteria filter Anda. |
Valid JSON |
Tidak ada pola filter untuk properti data |
Filter Lambda (hanya pada properti metadata lainnya) berdasarkan kriteria filter Anda. |
Valid JSON |
Valid JSON |
Filter Lambda berdasarkan kriteria filter Anda. |
String yang tidak dikodekan UTF -8 |
JSON, string polos, atau tidak ada pola |
Filter Lambda (hanya pada properti metadata lainnya) berdasarkan kriteria filter Anda. |