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 MSK Amazon.
Dasar-dasar pemfilteran acara Amazon SQS
Misalkan antrian Amazon SQS Anda berisi pesan dalam format JSON berikut.
{
"RecordNumber": 1234,
"TimeStamp": "yyyy-mm-ddThh:mm:ss",
"RequestCode": "AAAA"
}
Contoh catatan untuk antrian ini akan terlihat sebagai berikut.
{
"messageId": "059f36b4-87a3-44ab-83d2-661975830a7d",
"receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...",
"body": "{\n "RecordNumber": 1234,\n "TimeStamp": "yyyy-mm-ddThh:mm:ss",\n "RequestCode": "AAAA"\n}",
"attributes": {
"ApproximateReceiveCount": "1",
"SentTimestamp": "1545082649183",
"SenderId": "AIDAIENQZJOLO23YVJ4VO",
"ApproximateFirstReceiveTimestamp": "1545082649185"
},
"messageAttributes": {},
"md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3",
"eventSource": "aws:sqs",
"eventSourceARN": "arn:aws:sqs:us-west-2:123456789012:my-queue",
"awsRegion": "us-west-2"
}
Untuk memfilter berdasarkan konten pesan Amazon SQS Anda, gunakan body
kunci dalam catatan pesan Amazon SQS. Misalkan Anda hanya ingin memproses catatan tersebut di mana pesan Amazon SQS Anda adalah “BBBB.” RequestCode
FilterCriteria
Objeknya adalah sebagai berikut.
{
"Filters": [
{
"Pattern": "{ \"body\" : { \"RequestCode\" : [ \"BBBB\" ] } }"
}
]
}
Untuk kejelasan tambahan, berikut adalah nilai filter yang Pattern
diperluas di JSON biasa.
{
"body": {
"RequestCode": [ "BBBB" ]
}
}
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.
{ "body" : { "RequestCode" : [ "BBBB" ] } }
Misalkan Anda ingin fungsi Anda memproses hanya catatan yang RecordNumber
lebih besar dari 9999. FilterCriteria
Objeknya adalah sebagai berikut.
{
"Filters": [
{
"Pattern": "{ \"body\" : { \"RecordNumber\" : [ { \"numeric\": [ \">\", 9999 ] } ] } }"
}
]
}
Untuk kejelasan tambahan, berikut adalah nilai filter yang Pattern
diperluas di JSON biasa.
{
"body": {
"RecordNumber": [
{
"numeric": [ ">", 9999 ]
}
]
}
}
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.
{ "body" : { "RecordNumber" : [ { "numeric": [ ">", 9999 ] } ] } }
Untuk Amazon SQS, isi pesan dapat berupa string apa pun. Namun, ini bisa menjadi masalah jika Anda FilterCriteria
body
berharap berada dalam format JSON yang valid. Skenario sebaliknya juga benar—jika isi pesan yang masuk dalam format JSON tetapi kriteria filter Anda diharapkan menjadi string biasa, ini dapat body
menyebabkan perilaku yang tidak diinginkan.
Untuk menghindari masalah ini, pastikan bahwa format isi dalam Anda FilterCriteria
cocok dengan format yang diharapkan body
dalam pesan yang Anda terima dari antrian Anda. Sebelum memfilter pesan Anda, Lambda secara otomatis mengevaluasi format badan pesan masuk dan pola filter Anda. body
Jika ada ketidakcocokan, Lambda menjatuhkan pesan. Tabel berikut merangkum evaluasi ini:
Format pesan body masuk |
body Format pola filter |
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 |
JSON yang valid |
Lambda menjatuhkan pesan. |
JSON yang valid |
Tali polos |
Lambda menjatuhkan pesan. |
JSON yang valid |
Tidak ada pola filter untuk properti data |
Filter Lambda (hanya pada properti metadata lainnya) berdasarkan kriteria filter Anda. |
JSON yang valid |
JSON yang valid |
Filter Lambda berdasarkan kriteria filter Anda. |