Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
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.
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.” FilterCriteria
Objeknya 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.
Untuk menambahkan filter ini menggunakan konsol, ikuti instruksi Melampirkan kriteria filter ke pemetaan sumber peristiwa (konsol) dan masukkan string berikut untuk kriteria Filter.
{ "dynamodb" : { "Keys" : { "CustomerName" : { "S" : [ "AnyCompany Industries" ] } } } }
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.” FilterCriteria
Objeknya 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.
Untuk menambahkan filter ini menggunakan konsol, ikuti instruksi Melampirkan kriteria filter ke pemetaan sumber peristiwa (konsol) dan masukkan string berikut untuk kriteria Filter.
{ "dynamodb" : { "NewImage" : { "AccountManager" : { "S" : [ "Pat Candella", "Shirley Rodriguez" ] } } } }
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”. FilterCriteria
Objeknya 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.
Untuk menambahkan filter ini menggunakan konsol, ikuti instruksi Melampirkan kriteria filter ke pemetaan sumber peristiwa (konsol) dan masukkan string berikut untuk kriteria Filter.
{ "dynamodb" : { "NewImage" : { "AccountManager" : { "S" : [ "Pat Candella" ] } } } , "dynamodb" : { "OldImage" : { "AccountManager" : { "S" : [ "Terry Whitlock" ] } } } }
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. |