Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan pemfilteran peristiwa dengan sumber peristiwa 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 pemfilteran peristiwa, lihatKontrol peristiwa mana yang dikirim Lambda ke fungsi Anda.
Bagian ini berfokus pada pemfilteran peristiwa untuk sumber peristiwa DynamoDB.
catatan
Pemetaan sumber peristiwa DynamoDB hanya mendukung pemfilteran pada kunci. dynamodb
Topik
Acara DynamoDB
Misalkan Anda memiliki tabel DynamoDB dengan kunci utama CustomerName dan atribut AccountManager dan. PaymentTerms Berikut ini menunjukkan contoh rekaman 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 dynamodb kunci dalam catatan. Bagian berikut memberikan contoh untuk jenis filter yang berbeda.
Memfilter dengan tombol tabel
Misalkan Anda ingin fungsi Anda memproses hanya 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 dalam JSON biasa.
{ "dynamodb": { "Keys": { "CustomerName": { "S": [ "AnyCompany Industries" ] } } } }
Anda dapat menambahkan filter menggunakan konsol, AWS CLI atau AWS SAM templat.
Memfilter dengan atribut tabel
Dengan DynamoDB, Anda juga dapat menggunakan OldImage tombol NewImage dan 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 dalam 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 nil NewImage ainya AccountManager adalah “Pat Candella” dan nil OldImage ainya 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 dalam 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
Pemfilteran peristiwa DynamoDB tidak mendukung penggunaan operator numerik (numerik sama 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 perawatan khusus. Operator Exists hanya berfungsi pada node daun dalam 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 kecoco "Organizations" kan karena bukan simpul daun. Contoh berikut menunjukkan cara menggunakan operator Exists dengan benar untuk membangun pola filter yang diinginkan:
{ "dynamodb" : { "NewImage" : {"Organizations": {"L": {"S": [ {"exists": true } ] } } } } }
Format JSON untuk pemfilteran DynamoDB
Untuk memfilter peristiwa dari sumber DynamoDB dengan benar, 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 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 peristiwa. 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 peristiwa. Pola filter untuk properti data harus dalam format JSON yang valid. |