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 DynamoDB
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 DynamoDB.
catatan
Pemetaan sumber peristiwa DynamoDB hanya mendukung pemfilteran pada kunci. dynamodb
Topik
Acara DynamoDB
Misalkan Anda memiliki tabel DynamoDB dengan CustomerName kunci utama dan atribut dan. AccountManager PaymentTerms Berikut ini menunjukkan contoh catatan dari aliran tabel DynamoDB Anda.
{ "eventID": "1", "eventVersion": "1.0", "dynamodb": { "ApproximateCreationDateTime": "1678831218.0", "Keys": { "CustomerName": { "S": "AnyCompany Industries" } }, "NewImage": { "AccountManager": { "S": "Pat Candella" }, "PaymentTerms": { "S": "60 days" }, "CustomerName": { "S": "AnyCompany Industries" } }, "SequenceNumber": "111", "SizeBytes": 26, "StreamViewType": "NEW_IMAGE" } }
Untuk memfilter berdasarkan nilai kunci dan atribut dalam tabel DynamoDB Anda, gunakan kunci dynamodb dalam catatan. Bagian berikut memberikan contoh untuk berbagai jenis filter.
Memfilter dengan tombol tabel
Misalkan Anda ingin fungsi Anda memproses hanya catatan-catatan di mana kunci utamanya CustomerName adalah “AnyCompany Industri.” FilterCriteriaObjeknya adalah sebagai berikut.
{ "Filters": [ { "Pattern": "{ \"dynamodb\" : { \"Keys\" : { \"CustomerName\" : { \"S\" : [ \"AnyCompany Industries\" ] } } } }" } ] }
Untuk kejelasan tambahan, berikut adalah nilai filter yang Pattern diperluas di JSON biasa.
{ "dynamodb": { "Keys": { "CustomerName": { "S": [ "AnyCompany Industries" ] } } } }
Anda dapat menambahkan filter menggunakan konsol, AWS CLI atau AWS SAM templat.
Pemfilteran dengan atribut tabel
Dengan DynamoDB, Anda juga dapat menggunakan NewImage tombol OldImage and untuk memfilter nilai atribut. Misalkan Anda ingin memfilter catatan di mana AccountManager atribut dalam gambar tabel terbaru adalah “Pat Candella” atau “Shirley Rodriguez.” FilterCriteriaObjeknya adalah sebagai berikut.
{ "Filters": [ { "Pattern": "{ \"dynamodb\" : { \"NewImage\" : { \"AccountManager\" : { \"S\" : [ \"Pat Candella\", \"Shirley Rodriguez\" ] } } } }" } ] }
Untuk kejelasan tambahan, berikut adalah nilai filter yang Pattern diperluas di JSON biasa.
{ "dynamodb": { "NewImage": { "AccountManager": { "S": [ "Pat Candella", "Shirley Rodriguez" ] } } } }
Anda dapat menambahkan filter menggunakan konsol, AWS CLI atau AWS SAM templat.
Memfilter dengan ekspresi Boolean
Anda juga dapat membuat filter menggunakan ekspresi Boolean AND. Ekspresi ini dapat mencakup parameter kunci dan atribut tabel Anda. Misalkan Anda ingin memfilter catatan di mana NewImage nilainya AccountManager adalah “Pat Candella” dan OldImage nilainya adalah “Terry Whitlock”. FilterCriteriaObjeknya adalah sebagai berikut.
{ "Filters": [ { "Pattern": "{ \"dynamodb\" : { \"NewImage\" : { \"AccountManager\" : { \"S\" : [ \"Pat Candella\" ] } } } , \"dynamodb\" : { \"OldImage\" : { \"AccountManager\" : { \"S\" : [ \"Terry Whitlock\" ] } } } }" } ] }
Untuk kejelasan tambahan, berikut adalah nilai filter yang Pattern diperluas di JSON biasa.
{ "dynamodb" : { "NewImage" : { "AccountManager" : { "S" : [ "Pat Candella" ] } } }, "dynamodb": { "OldImage": { "AccountManager": { "S": [ "Terry Whitlock" ] } } } }
Anda dapat menambahkan filter menggunakan konsol, AWS CLI atau AWS SAM templat.
catatan
DynamoDB event filtering tidak mendukung penggunaan operator numerik (sama numerik dan rentang numerik). Bahkan jika item dalam tabel Anda disimpan sebagai angka, parameter ini dikonversi ke string di objek catatan JSON.
Menggunakan operator Exists
Karena cara objek peristiwa JSON dari DynamoDB terstruktur, menggunakan operator Exists memerlukan perhatian khusus. Operator Exists hanya bekerja pada node daun di acara JSON, jadi jika pola filter Anda menggunakan Exists untuk menguji node perantara, itu tidak akan berfungsi. Pertimbangkan item tabel DynamoDB berikut:
{ "UserID": {"S": "12345"}, "Name": {"S": "John Doe"}, "Organizations": {"L": [ {"S":"Sales"}, {"S":"Marketing"}, {"S":"Support"} ] } }
Anda mungkin ingin membuat pola filter seperti berikut yang akan menguji peristiwa yang berisi"Organizations":
{ "dynamodb" : { "NewImage" : { "Organizations" : [ { "exists": true } ] } } }
Namun, pola filter ini tidak akan pernah mengembalikan kecocokan karena "Organizations" bukan simpul daun. Contoh berikut menunjukkan bagaimana benar menggunakan operator Exists untuk membangun pola filter yang diinginkan:
{ "dynamodb" : { "NewImage" : {"Organizations": {"L": {"S": [ {"exists": true } ] } } } } }
Format JSON untuk pemfilteran DynamoDB
Untuk memfilter peristiwa dengan benar dari sumber DynamoDB, bidang data dan kriteria filter Anda untuk bidang data dynamodb () harus dalam format JSON yang valid. Jika salah satu bidang tidak dalam format JSON yang valid, Lambda akan menghapus pesan atau melempar pengecualian. Tabel berikut merangkum perilaku spesifik:
| Format data masuk | Format pola filter untuk properti data | Tindakan yang dihasilkan |
|---|---|---|
|
JSON yang valid |
JSON yang valid |
Filter Lambda berdasarkan kriteria filter Anda. |
|
JSON yang valid |
Tidak ada pola filter untuk properti data |
Filter Lambda (hanya pada properti metadata lainnya) berdasarkan kriteria filter Anda. |
|
JSON yang valid |
Non-JSON |
Lambda melempar pengecualian pada saat pembuatan atau pembaruan pemetaan sumber acara. Pola filter untuk properti data harus dalam format JSON yang valid. |
|
Non-JSON |
JSON yang valid |
Lambda menjatuhkan rekor. |
|
Non-JSON |
Tidak ada pola filter untuk properti data |
Filter Lambda (hanya pada properti metadata lainnya) berdasarkan kriteria filter Anda. |
|
Non-JSON |
Non-JSON |
Lambda melempar pengecualian pada saat pembuatan atau pembaruan pemetaan sumber acara. Pola filter untuk properti data harus dalam format JSON yang valid. |