Pemfilteran acara Lambda - AWS Lambda

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pemfilteran acara Lambda

Anda dapat menggunakan pemfilteran peristiwa untuk mengontrol rekaman mana dari aliran atau antrian yang dikirim Lambda ke fungsi Anda. Misalnya, Anda dapat menambahkan filter sehingga fungsi Anda hanya memproses pesan Amazon SQS yang berisi parameter data tertentu. Pemfilteran acara bekerja dengan pemetaan sumber acara. Anda dapat menambahkan filter ke pemetaan sumber peristiwa untuk layanan berikut: AWS

  • Amazon DynamoDB

  • Amazon Kinesis Data Streams

  • Amazon MQ

  • Amazon Managed Streaming for Apache Kafka (Amazon MSK)

  • Apache Kafka yang dikelola sendiri

  • Amazon Simple Queue Service (Amazon SQS)

Lambda tidak mendukung pemfilteran acara untuk Amazon DocumentDB.

Secara default, Anda dapat menentukan hingga lima filter berbeda untuk pemetaan sumber peristiwa tunggal. Filter Anda secara logis disatukan. Jika rekaman dari sumber acara memenuhi satu atau beberapa filter Anda, Lambda menyertakan catatan di acara berikutnya yang dikirimkan ke fungsi Anda. Jika tidak ada filter Anda yang puas, Lambda membuang catatan tersebut.

catatan

Jika Anda perlu menentukan lebih dari lima filter untuk sumber peristiwa, Anda dapat meminta peningkatan kuota hingga 10 filter untuk setiap sumber peristiwa. Jika Anda mencoba menambahkan lebih banyak filter daripada yang diizinkan kuota saat ini, Lambda akan menampilkan kesalahan saat Anda mencoba dan membuat sumber acara.

Dasar-dasar penyaringan acara

Objek filter criteria (FilterCriteria) adalah struktur yang terdiri dari daftar filter (Filters). Setiap filter adalah struktur yang mendefinisikan pola penyaringan peristiwa ()Pattern. Pola adalah representasi string dari aturan filter JSON. Struktur suatu FilterCriteria objek adalah sebagai berikut.

{ "Filters": [ { "Pattern": "{ \"Metadata1\": [ rule1 ], \"data\": { \"Data1\": [ rule2 ] }}" } ] }

Untuk kejelasan tambahan, berikut adalah nilai filter yang Pattern diperluas di JSON biasa.

{ "Metadata1": [ rule1 ], "data": { "Data1": [ rule2 ] } }

Pola filter Anda dapat mencakup properti metadata, properti data, atau keduanya. Parameter metadata yang tersedia dan format parameter data bervariasi sesuai dengan Layanan AWS yang bertindak sebagai sumber peristiwa. Misalnya, misalkan pemetaan sumber peristiwa Anda menerima catatan berikut dari antrean Amazon SQS:

{ "messageId": "059f36b4-87a3-44ab-83d2-661975830a7d", "receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", "body": "{\n "City": "Seattle",\n "State": "WA",\n "Temperature": "46"\n}", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1545082649183", "SenderId": "AIDAIENQZJOLO23YVJ4VO", "ApproximateFirstReceiveTimestamp": "1545082649185" }, "messageAttributes": {}, "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:my-queue", "awsRegion": "us-east-2" }
  • Properti metadata adalah bidang yang berisi informasi tentang peristiwa yang membuat catatan. Dalam contoh catatan Amazon SQS, properti metadata menyertakan bidang sepertimessageID,, dan. eventSourceArn awsRegion

  • Properti data adalah bidang catatan yang berisi data dari aliran atau antrian Anda. Dalam contoh peristiwa Amazon SQS, kunci untuk bidang data adalahbody, dan properti data adalah bidang CityState, dan. Temperature

Berbagai jenis sumber acara menggunakan nilai kunci yang berbeda untuk bidang datanya. Untuk memfilter properti data, pastikan Anda menggunakan kunci yang benar dalam pola filter Anda. Untuk daftar kunci pemfilteran data, dan untuk melihat contoh pola filter untuk setiap yang didukung Layanan AWS, lihat. Menggunakan filter dengan berbeda Layanan AWS

Pemfilteran acara dapat menangani penyaringan JSON multi-level. Misalnya, pertimbangkan fragmen catatan berikut dari aliran DynamoDB:

"dynamodb": { "Keys": { "ID": { "S": "ABCD" } "Number": { "N": "1234" }, ... }

Misalkan Anda hanya ingin memproses catatan tersebut di mana nilai kunci sortir Number adalah 4567. Dalam hal ini, FilterCriteria objek Anda akan terlihat seperti ini:

{ "Filters": [ { "Pattern": "{ \"dynamodb\": { \"Keys\": { \"Number\": { \"N\": [ "4567" ] } } } }" } ] }

Untuk kejelasan tambahan, berikut adalah nilai filter yang Pattern diperluas di JSON biasa.

{ "dynamodb": { "Keys": { "Number": { "N": [ "4567" ] } } } }

Menangani catatan yang tidak memenuhi kriteria filter

Cara penanganan rekaman yang tidak memenuhi filter Anda tergantung pada sumber acara.

  • Untuk Amazon SQS, jika pesan tidak memenuhi kriteria filter Anda, Lambda secara otomatis menghapus pesan dari antrian. Anda tidak perlu menghapus pesan ini secara manual di Amazon SQS.

  • Untuk Kinesis dan DynamoDB, setelah kriteria filter Anda memproses rekaman, iterator stream akan melewati catatan ini. Jika catatan tidak memenuhi kriteria filter Anda, Anda tidak perlu menghapus catatan secara manual dari sumber acara Anda. Setelah periode retensi, Kinesis dan DynamoDB secara otomatis menghapus catatan lama ini. Jika Anda ingin catatan dihapus lebih cepat, lihat Mengubah Periode Retensi Data.

  • Untuk Amazon MSK, Apache Kafka yang dikelola sendiri, dan pesan Amazon MQ, Lambda menghapus pesan yang tidak cocok dengan semua bidang yang disertakan dalam filter. Untuk Apache Kafka yang dikelola sendiri, Lambda melakukan offset untuk pesan yang cocok dan tak tertandingi setelah berhasil menjalankan fungsi. Untuk Amazon MQ, Lambda mengakui pesan yang cocok setelah berhasil menjalankan fungsi dan mengakui pesan yang tak tertandingi saat memfilternya.

Filter sintaks aturan

Untuk aturan filter, Lambda mendukung EventBridge aturan Amazon dan menggunakan sintaks yang sama seperti. EventBridge Untuk informasi selengkapnya, lihat pola EventBridge acara Amazon di Panduan EventBridge Pengguna Amazon.

Berikut ini adalah ringkasan dari semua operator perbandingan yang tersedia untuk pemfilteran acara Lambda.

Operator perbandingan Contoh Sintaks aturan

Kosong

UserID adalah kosong

“userId”: [null]

Kosong

LastName kosong

"LastName": [""]

Setara

Namanya adalah “Alice”

“Nama”: [“Alice”]

Sama dengan (abaikan kasus)

Namanya adalah “Alice”

“Name”: [{"equals-ignore-case“: “alice”}]

Dan

Lokasi adalah “New York” dan Hari adalah “Senin”

“Lokasi”: [“New York”], “Hari”: ["Senin"]

Atau

PaymentType adalah “Kredit” atau “Debit”

“PaymentType“: [“Kredit”, “Debit"]

Atau (beberapa bidang)

Lokasi adalah “New York”, atau Hari adalah “Senin”.

“$or”: [{“Lokasi”: [“New York”]}, {“Hari”: [“Senin”]}]

Bukan

Cuaca sama sekali tidak “Hujan”

“Weather”: [{“anything-but”: [“Hujan”]}]

Numerik (sama dengan)

Harga 100

“Harga”: [{“numerik”: [“=”, 100]}]

Numerik (rentang)

Harga lebih dari 10, dan kurang dari atau sama dengan 20

“Harga”: [{“numerik”: [“>”, 10, “<=”, 20]}]

Exists

ProductName ada

“ProductName“: [{“exists”: true}]

Tidak ada

ProductName tidak ada

“ProductName“: [{“exists”: false}]

Dimulai dengan

Wilayah ada di AS

“Region”: [{"prefix”: “us-”}]

Ends with

FileName diakhiri dengan ekstensi.png.

“FileName“: [{“akhiran”: “.png”}]

catatan

Seperti EventBridge, untuk string, Lambda menggunakan pencocokan character-by-character yang tepat tanpa case-folding atau normalisasi string lainnya. Untuk angka, Lambda juga menggunakan representasi string. Sebagai contoh, 300, 300,0, dan 3,0e2 dianggap tidak sama.

Perhatikan bahwa operator Exists hanya bekerja pada node daun di JSON sumber acara Anda. Itu tidak cocok dengan node perantara. Misalnya, dengan JSON berikut, pola filter tidak { "person": { "address": [ { "exists": true } ] } }" akan menemukan kecocokan karena "address" merupakan simpul perantara.

{ "person": { "name": "John Doe", "age": 30, "address": { "street": "123 Main St", "city": "Anytown", "country": "USA" } } }

Melampirkan kriteria filter ke pemetaan sumber peristiwa (konsol)

Ikuti langkah-langkah ini untuk membuat pemetaan sumber peristiwa baru dengan kriteria filter menggunakan konsol Lambda.

Untuk membuat pemetaan sumber acara baru dengan kriteria filter (konsol)
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih nama fungsi untuk membuat pemetaan sumber peristiwa.

  3. Di bagian Gambaran umum fungsi, pilih Tambah pemicu.

  4. Untuk konfigurasi Trigger, pilih jenis pemicu yang mendukung pemfilteran peristiwa. Untuk daftar layanan yang didukung, lihat daftar di awal halaman ini.

  5. Perluas Pengaturan tambahan.

  6. Di bawah Kriteria filter, pilih Tambah, lalu tentukan dan masukkan filter Anda. Misalnya, Anda dapat memasukkan yang berikut ini.

    { "Metadata" : [ 1, 2 ] }

    Ini menginstruksikan Lambda untuk memproses hanya catatan di mana Metadata bidang sama dengan 1 atau 2. Anda dapat terus memilih Tambah untuk menambahkan lebih banyak filter hingga jumlah maksimum yang diizinkan.

  7. Setelah selesai menambahkan filter, pilih Simpan.

Saat Anda memasukkan kriteria filter menggunakan konsol, Anda hanya memasukkan pola filter dan tidak perlu memberikan tanda kutip Pattern kunci atau escape. Pada langkah 6 dari instruksi sebelumnya, { "Metadata" : [ 1, 2 ] } sesuai dengan yang berikut ini. FilterCriteria

{ "Filters": [ { "Pattern": "{ \"Metadata\" : [ 1, 2 ] }" } ] }

Setelah membuat pemetaan sumber acara di konsol, Anda dapat melihat format FilterCriteria dalam detail pemicu. Untuk lebih banyak contoh pembuatan filter acara menggunakan konsol, lihatMenggunakan filter dengan berbeda Layanan AWS.

Melampirkan kriteria filter ke pemetaan sumber peristiwa ()AWS CLI

Misalkan Anda ingin pemetaan sumber peristiwa memiliki yang berikut: FilterCriteria

{ "Filters": [ { "Pattern": "{ \"Metadata\" : [ 1, 2 ] }" } ] }

Untuk membuat pemetaan sumber peristiwa baru dengan kriteria filter ini menggunakan AWS Command Line Interface (AWS CLI), jalankan perintah berikut.

aws lambda create-event-source-mapping \ --function-name my-function \ --event-source-arn arn:aws:sqs:us-east-2:123456789012:my-queue \ --filter-criteria '{"Filters": [{"Pattern": "{ \"Metadata\" : [ 1, 2 ]}"}]}'

create-event-source-mappingPerintah ini membuat pemetaan sumber peristiwa Amazon SQS baru untuk fungsi my-function dengan yang ditentukan. FilterCriteria

Untuk menambahkan kriteria filter ini ke pemetaan sumber peristiwa yang ada, jalankan perintah berikut.

aws lambda update-event-source-mapping \ --uuid "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \ --filter-criteria '{"Filters": [{"Pattern": "{ \"Metadata\" : [ 1, 2 ]}"}]}'

Perhatikan bahwa untuk memperbarui pemetaan sumber peristiwa, Anda memerlukan UUID-nya. Anda bisa mendapatkan UUID dari panggilan list-event-source-mappings. Lambda juga mengembalikan UUID dalam respons CLI. create-event-source-mapping

Untuk menghapus kriteria filter dari sumber peristiwa, Anda dapat menjalankan update-event-source-mappingperintah berikut dengan FilterCriteria objek kosong.

aws lambda update-event-source-mapping \ --uuid "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \ --filter-criteria "{}"

Untuk lebih banyak contoh pembuatan filter acara menggunakan AWS CLI, lihatMenggunakan filter dengan berbeda Layanan AWS.

Melampirkan kriteria filter ke pemetaan sumber peristiwa ()AWS SAM

Misalkan Anda ingin mengonfigurasi sumber acara AWS SAM untuk menggunakan kriteria filter berikut:

{ "Filters": [ { "Pattern": "{ \"Metadata\" : [ 1, 2 ] }" } ] }

Untuk menambahkan kriteria filter ini ke pemetaan sumber peristiwa Anda, masukkan cuplikan berikut ke dalam template YAMM untuk sumber acara Anda.

FilterCriteria: Filters: - Pattern: '{"Metadata": [1, 2]}'

Untuk informasi selengkapnya tentang membuat dan mengonfigurasi AWS SAM templat untuk pemetaan sumber peristiwa, lihat EventSourcebagian Panduan AWS SAM Pengembang. Untuk lebih banyak contoh pembuatan filter acara menggunakan AWS SAM templat, lihatMenggunakan filter dengan berbeda Layanan AWS.

Menggunakan filter dengan berbeda Layanan AWS

Berbagai jenis sumber acara menggunakan nilai kunci yang berbeda untuk bidang datanya. Untuk memfilter properti data, pastikan Anda menggunakan kunci yang benar dalam pola filter Anda. Tabel berikut memberikan kunci penyaringan untuk setiap didukung Layanan AWS.

Layanan AWS Kunci penyaringan
DynamoDB dynamodb
Kinesis data
Amazon MQ data
Amazon MSK value
Apache Kafka yang dikelola sendiri value
Amazon SQS body

Bagian berikut memberikan contoh pola filter untuk berbagai jenis sumber peristiwa. Mereka juga memberikan definisi format data masuk yang didukung dan format bodi pola filter untuk setiap layanan yang didukung.

Pemfilteran dengan 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.

Console

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" ] } } } }
AWS CLI

Untuk membuat pemetaan sumber peristiwa baru dengan kriteria filter ini menggunakan AWS Command Line Interface (AWS CLI), jalankan perintah berikut.

aws lambda create-event-source-mapping \ --function-name my-function \ --event-source-arn arn:aws:dynamodb:us-east-2:123456789012:table/my-table \ --filter-criteria '{"Filters": [{"Pattern": "{ \"dynamodb\" : { \"Keys\" : { \"CustomerName\" : { \"S\" : [ \"AnyCompany Industries\" ] } } } }"}]}'

Untuk menambahkan kriteria filter ini ke pemetaan sumber peristiwa yang ada, jalankan perintah berikut.

aws lambda update-event-source-mapping \ --uuid "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \ --filter-criteria '{"Filters": [{"Pattern": "{ \"dynamodb\" : { \"Keys\" : { \"CustomerName\" : { \"S\" : [ \"AnyCompany Industries\" ] } } } }"}]}'
AWS SAM

Untuk menambahkan filter ini menggunakan AWS SAM, tambahkan cuplikan berikut ke template YAMB untuk sumber acara Anda.

FilterCriteria: Filters: - Pattern: '{ "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.” 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.

Console

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" ] } } } }
AWS CLI

Untuk membuat pemetaan sumber peristiwa baru dengan kriteria filter ini menggunakan AWS Command Line Interface (AWS CLI), jalankan perintah berikut.

aws lambda create-event-source-mapping \ --function-name my-function \ --event-source-arn arn:aws:dynamodb:us-east-2:123456789012:table/my-table \ --filter-criteria '{"Filters": [{"Pattern": "{ \"dynamodb\" : { \"NewImage\" : { \"AccountManager\" : { \"S\" : [ \"Pat Candella\", \"Shirley Rodriguez\" ] } } } }"}]}'

Untuk menambahkan kriteria filter ini ke pemetaan sumber peristiwa yang ada, jalankan perintah berikut.

aws lambda update-event-source-mapping \ --uuid "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \ --filter-criteria '{"Filters": [{"Pattern": "{ \"dynamodb\" : { \"NewImage\" : { \"AccountManager\" : { \"S\" : [ \"Pat Candella\", \"Shirley Rodriguez\" ] } } } }"}]}'
AWS SAM

Untuk menambahkan filter ini menggunakan AWS SAM, tambahkan cuplikan berikut ke template YAMB untuk sumber acara Anda.

FilterCriteria: Filters: - Pattern: '{ "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”. 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.

Console

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" ] } } } }
AWS CLI

Untuk membuat pemetaan sumber peristiwa baru dengan kriteria filter ini menggunakan AWS Command Line Interface (AWS CLI), jalankan perintah berikut.

aws lambda create-event-source-mapping \ --function-name my-function \ --event-source-arn arn:aws:dynamodb:us-east-2:123456789012:table/my-table \ --filter-criteria '{"Filters": [{"Pattern": "{ \"dynamodb\" : { \"NewImage\" : { \"AccountManager\" : { \"S\" : [ \"Pat Candella\" ] } } } , \"dynamodb\" : { \"OldImage\" : { \"AccountManager\" : { \"S\" : [ \"Terry Whitlock\" ] } } } } "}]}'

Untuk menambahkan kriteria filter ini ke pemetaan sumber peristiwa yang ada, jalankan perintah berikut.

aws lambda update-event-source-mapping \ --uuid "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \ --filter-criteria '{"Filters": [{"Pattern": "{ \"dynamodb\" : { \"NewImage\" : { \"AccountManager\" : { \"S\" : [ \"Pat Candella\" ] } } } , \"dynamodb\" : { \"OldImage\" : { \"AccountManager\" : { \"S\" : [ \"Terry Whitlock\" ] } } } } "}]}'
AWS SAM

Untuk menambahkan filter ini menggunakan AWS SAM, tambahkan cuplikan berikut ke template YAMB untuk sumber acara Anda.

FilterCriteria: Filters: - Pattern: '{ "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 dengan DynamoDB

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.

Pemfilteran dengan Kinesis

Misalkan produser memasukkan data yang diformat JSON ke dalam aliran data Kinesis Anda. Contoh catatan akan terlihat seperti berikut, dengan data JSON dikonversi ke string yang dikodekan Base64 di lapangan. data

{ "kinesis": { "kinesisSchemaVersion": "1.0", "partitionKey": "1", "sequenceNumber": "49590338271490256608559692538361571095921575989136588898", "data": "eyJSZWNvcmROdW1iZXIiOiAiMDAwMSIsICJUaW1lU3RhbXAiOiAieXl5eS1tbS1kZFRoaDptbTpzcyIsICJSZXF1ZXN0Q29kZSI6ICJBQUFBIn0=", "approximateArrivalTimestamp": 1545084650.987 }, "eventSource": "aws:kinesis", "eventVersion": "1.0", "eventID": "shardId-000000000006:49590338271490256608559692538361571095921575989136588898", "eventName": "aws:kinesis:record", "invokeIdentityArn": "arn:aws:iam::123456789012:role/lambda-role", "awsRegion": "us-east-2", "eventSourceARN": "arn:aws:kinesis:us-east-2:123456789012:stream/lambda-stream" }

Selama data yang dimasukkan produsen ke aliran adalah JSON yang valid, Anda dapat menggunakan pemfilteran peristiwa untuk memfilter catatan menggunakan kunci. data Misalkan produser memasukkan catatan ke dalam aliran Kinesis Anda dalam format JSON berikut.

{ "record": 12345, "order": { "type": "buy", "stock": "ANYCO", "quantity": 1000 } }

Untuk memfilter hanya catatan di mana jenis pesanan adalah “beli,” FilterCriteria objeknya adalah sebagai berikut.

{ "Filters": [ { "Pattern": "{ \"data\" : { \"order\" : { \"type\" : [ \"buy\" ] } } }" } ] }

Untuk kejelasan tambahan, berikut adalah nilai filter yang Pattern diperluas di JSON biasa.

{ "data": { "order": { "type": [ "buy" ] } } }

Anda dapat menambahkan filter menggunakan konsol, AWS CLI atau AWS SAM templat.

Console

Untuk menambahkan filter ini menggunakan konsol, ikuti instruksi Melampirkan kriteria filter ke pemetaan sumber peristiwa (konsol) dan masukkan string berikut untuk kriteria Filter.

{ "data" : { "order" : { "type" : [ "buy" ] } } }
AWS CLI

Untuk membuat pemetaan sumber peristiwa baru dengan kriteria filter ini menggunakan AWS Command Line Interface (AWS CLI), jalankan perintah berikut.

aws lambda create-event-source-mapping \ --function-name my-function \ --event-source-arn arn:aws:kinesis:us-east-2:123456789012:stream/my-stream \ --filter-criteria '{"Filters": [{"Pattern": "{ \"data\" : { \"order\" : { \"type\" : [ \"buy\" ] } } }"}]}'

Untuk menambahkan kriteria filter ini ke pemetaan sumber peristiwa yang ada, jalankan perintah berikut.

aws lambda update-event-source-mapping \ --uuid "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \ --filter-criteria '{"Filters": [{"Pattern": "{ \"data\" : { \"order\" : { \"type\" : [ \"buy\" ] } } }"}]}'
AWS SAM

Untuk menambahkan filter ini menggunakan AWS SAM, tambahkan cuplikan berikut ke template YAMB untuk sumber acara Anda.

FilterCriteria: Filters: - Pattern: '{ "data" : { "order" : { "type" : [ "buy" ] } } }'

Untuk memfilter peristiwa dengan benar dari sumber Kinesis, bidang data dan kriteria filter Anda untuk bidang data 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.

Menyaring catatan agregat Kinesis

Dengan Kinesis, Anda dapat menggabungkan beberapa catatan ke dalam satu catatan Kinesis Data Streams untuk meningkatkan throughput data Anda. Lambda hanya dapat menerapkan kriteria filter ke rekaman agregat saat Anda menggunakan Kinesis yang ditingkatkan fan-out. Memfilter rekaman agregat dengan Kinesis standar tidak didukung. Saat menggunakan fan-out yang disempurnakan, Anda mengonfigurasi konsumen throughput khusus Kinesis untuk bertindak sebagai pemicu fungsi Lambda Anda. Lambda kemudian memfilter catatan agregat dan hanya meneruskan catatan yang memenuhi kriteria filter Anda.

Untuk mempelajari lebih lanjut tentang agregasi catatan Kinesis, lihat bagian Agregasi pada halaman Konsep Kunci Perpustakaan Produsen Kinesis (KPL). Untuk mempelajari lebih lanjut tentang menggunakan Lambda dengan Kinesis yang ditingkatkan fan-out, lihat Meningkatkan performa pemrosesan streaming real-time dengan Amazon Kinesis Data Streams yang disempurnakan oleh fan-out dan Lambda di blog komputasi. AWS AWS

Pemfilteran dengan Amazon MQ

Misalkan antrian pesan Amazon MQ Anda berisi pesan baik dalam format JSON yang valid atau sebagai string biasa. Contoh catatan akan terlihat seperti berikut, dengan data dikonversi ke string yang dikodekan Base64 di lapangan. data

ActiveMQ
{ "messageID": "ID:b-9bcfa592-423a-4942-879d-eb284b418fc8-1.mq.us-west-2.amazonaws.com-37557-1234520418293-4:1:1:1:1", "messageType": "jms/text-message", "deliveryMode": 1, "replyTo": null, "type": null, "expiration": "60000", "priority": 1, "correlationId": "myJMSCoID", "redelivered": false, "destination": { "physicalName": "testQueue" }, "data":"QUJDOkFBQUE=", "timestamp": 1598827811958, "brokerInTime": 1598827811958, "brokerOutTime": 1598827811959, "properties": { "index": "1", "doAlarm": "false", "myCustomProperty": "value" } }
RabbitMQ
{ "basicProperties": { "contentType": "text/plain", "contentEncoding": null, "headers": { "header1": { "bytes": [ 118, 97, 108, 117, 101, 49 ] }, "header2": { "bytes": [ 118, 97, 108, 117, 101, 50 ] }, "numberInHeader": 10 }, "deliveryMode": 1, "priority": 34, "correlationId": null, "replyTo": null, "expiration": "60000", "messageId": null, "timestamp": "Jan 1, 1970, 12:33:41 AM", "type": null, "userId": "AIDACKCEVSQ6C2EXAMPLE", "appId": null, "clusterId": null, "bodySize": 80 }, "redelivered": false, "data": "eyJ0aW1lb3V0IjowLCJkYXRhIjoiQ1pybWYwR3c4T3Y0YnFMUXhENEUifQ==" }

Untuk broker MQ Aktif dan MQ Kelinci, Anda dapat menggunakan penyaringan acara untuk memfilter catatan menggunakan kunci. data Misalkan antrian Amazon MQ Anda berisi pesan dalam format JSON berikut.

{ "timeout": 0, "IPAddress": "203.0.113.254" }

Untuk memfilter hanya catatan yang timeout bidangnya lebih besar dari 0, FilterCriteria objeknya adalah sebagai berikut.

{ "Filters": [ { "Pattern": "{ \"data\" : { \"timeout\" : [ { \"numeric\": [ \">\", 0] } } ] } }" } ] }

Untuk kejelasan tambahan, berikut adalah nilai filter yang Pattern diperluas di JSON biasa.

{ "data": { "timeout": [ { "numeric": [ ">", 0 ] } ] } }

Anda dapat menambahkan filter menggunakan konsol, AWS CLI atau AWS SAM templat.

Console

untuk menambahkan filter ini menggunakan konsol, ikuti instruksi Melampirkan kriteria filter ke pemetaan sumber peristiwa (konsol) dan masukkan string berikut untuk kriteria Filter.

{ "data" : { "timeout" : [ { "numeric": [ ">", 0 ] } ] } }
AWS CLI

Untuk membuat pemetaan sumber peristiwa baru dengan kriteria filter ini menggunakan AWS Command Line Interface (AWS CLI), jalankan perintah berikut.

aws lambda create-event-source-mapping \ --function-name my-function \ --event-source-arn arn:aws:mq:us-east-2:123456789012:broker:my-broker:b-8ac7cc01-5898-482d-be2f-a6b596050ea8 \ --filter-criteria '{"Filters": [{"Pattern": "{ \"data\" : { \"timeout\" : [ { \"numeric\": [ \">\", 0 ] } ] } }"}]}'

Untuk menambahkan kriteria filter ini ke pemetaan sumber peristiwa yang ada, jalankan perintah berikut.

aws lambda update-event-source-mapping \ --uuid "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \ --filter-criteria '{"Filters": [{"Pattern": "{ \"data\" : { \"timeout\" : [ { \"numeric\": [ \">\", 0 ] } ] } }"}]}'
AWS SAM

Untuk menambahkan filter ini menggunakan AWS SAM, tambahkan cuplikan berikut ke template YAMB untuk sumber acara Anda.

FilterCriteria: Filters: - Pattern: '{ "data" : { "timeout" : [ { "numeric": [ ">", 0 ] } ] } }'

Dengan Amazon MQ, Anda juga dapat memfilter catatan di mana pesan adalah string biasa. Misalkan Anda hanya ingin memproses catatan di mana pesan dimulai dengan “Hasil:”. FilterCriteriaObjek akan terlihat sebagai berikut.

{ "Filters": [ { "Pattern": "{ \"data\" : [ { \"prefix\": \"Result: \" } ] }" } ] }

Untuk kejelasan tambahan, berikut adalah nilai filter yang Pattern diperluas di JSON biasa.

{ "data": [ { "prefix": "Result: " } ] }

Anda dapat menambahkan filter menggunakan konsol, AWS CLI atau AWS SAM templat.

Console

Untuk menambahkan filter ini menggunakan konsol, ikuti instruksi Melampirkan kriteria filter ke pemetaan sumber peristiwa (konsol) dan masukkan string berikut untuk kriteria Filter.

{ "data" : [ { "prefix": "Result: " } ] }
AWS CLI

Untuk membuat pemetaan sumber peristiwa baru dengan kriteria filter ini menggunakan AWS Command Line Interface (AWS CLI), jalankan perintah berikut.

aws lambda create-event-source-mapping \ --function-name my-function \ --event-source-arn arn:aws:mq:us-east-2:123456789012:broker:my-broker:b-8ac7cc01-5898-482d-be2f-a6b596050ea8 \ --filter-criteria '{"Filters": [{"Pattern": "{ \"data\" : [ { \"prefix\": \"Result: \" } ] }"}]}'

Untuk menambahkan kriteria filter ini ke pemetaan sumber peristiwa yang ada, jalankan perintah berikut.

aws lambda update-event-source-mapping \ --uuid "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \ --filter-criteria '{"Filters": [{"Pattern": "{ \"data\" : [ { \"prefix\": \"Result: \" } ] }"}]}'
AWS SAM

Untuk menambahkan filter ini menggunakan AWS SAM, tambahkan cuplikan berikut ke template YAMB untuk sumber acara Anda.

FilterCriteria: Filters: - Pattern: '{ "data" : [ { "prefix": "Result " } ] }'

Pesan Amazon MQ harus berupa string yang dikodekan UTF-8, baik string biasa atau dalam format JSON. Itu karena Lambda menerjemahkan array byte Amazon MQ ke UTF-8 sebelum menerapkan kriteria filter. Jika pesan Anda menggunakan pengkodean lain, seperti UTF-16 atau ASCII, atau jika format pesan tidak cocok dengan formatFilterCriteria, Lambda 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

JSON yang valid

Filter Lambda (hanya pada properti metadata lainnya) berdasarkan kriteria filter Anda.

JSON yang valid

Tali polos

Filter Lambda (hanya pada properti metadata lainnya) 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

JSON yang valid

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.

Pemfilteran dengan Amazon MSK dan Apache Kafka yang dikelola sendiri

Misalkan produser menulis pesan ke topik di MSK Amazon Anda atau cluster Apache Kafka yang dikelola sendiri, baik dalam format JSON 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 JSON berikut.

{ "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. FilterCriteriaObjeknya adalah sebagai berikut.

{ "Filters": [ { "Pattern": "{ \"value\" : { \"device_ID\" : [ { \"prefix\": \"AB\" } ] } }" } ] }

Untuk kejelasan tambahan, berikut adalah nilai filter yang Pattern diperluas di JSON biasa.

{ "value": { "device_ID": [ { "prefix": "AB" } ] } }

Anda dapat menambahkan filter menggunakan konsol, AWS CLI atau AWS SAM templat.

Console

Untuk menambahkan filter ini menggunakan konsol, ikuti instruksi Melampirkan kriteria filter ke pemetaan sumber peristiwa (konsol) dan masukkan string berikut untuk kriteria Filter.

{ "value" : { "device_ID" : [ { "prefix": "AB" } ] } }
AWS CLI

Untuk membuat pemetaan sumber peristiwa baru dengan kriteria filter ini menggunakan AWS Command Line Interface (AWS CLI), jalankan perintah berikut.

aws lambda create-event-source-mapping \ --function-name my-function \ --event-source-arn arn:aws:kafka:us-east-2:123456789012:cluster/my-cluster/b-8ac7cc01-5898-482d-be2f-a6b596050ea8 \ --filter-criteria '{"Filters": [{"Pattern": "{ \"value\" : { \"device_ID\" : [ { \"prefix\": \"AB\" } ] } }"}]}'

Untuk menambahkan kriteria filter ini ke pemetaan sumber peristiwa yang ada, jalankan perintah berikut.

aws lambda update-event-source-mapping \ --uuid "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \ --filter-criteria '{"Filters": [{"Pattern": "{ \"value\" : { \"device_ID\" : [ { \"prefix\": \"AB\" } ] } }"}]}'
AWS SAM

Untuk menambahkan filter ini menggunakan AWS SAM, tambahkan cuplikan berikut ke template YAMB untuk sumber acara Anda.

FilterCriteria: Filters: - Pattern: '{ "value" : { "device_ID" : [ { "prefix": "AB" } ] } }'

Dengan Amazon MSK dan 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”. FilterCriteriaObjek akan terlihat sebagai berikut.

{ "Filters": [ { "Pattern": "{ \"value\" : [ { \"anything-but\": [ \"error\" ] } ] }" } ] }

Untuk kejelasan tambahan, berikut adalah nilai filter yang Pattern diperluas di JSON biasa.

{ "value": [ { "anything-but": [ "error" ] } ] }

Anda dapat menambahkan filter menggunakan konsol, AWS CLI atau AWS SAM templat.

Console

Untuk menambahkan filter ini menggunakan konsol, ikuti instruksi Melampirkan kriteria filter ke pemetaan sumber peristiwa (konsol) dan masukkan string berikut untuk kriteria Filter.

{ "value" : [ { "anything-but": [ "error" ] } ] }
AWS CLI

Untuk membuat pemetaan sumber peristiwa baru dengan kriteria filter ini menggunakan AWS Command Line Interface (AWS CLI), jalankan perintah berikut.

aws lambda create-event-source-mapping \ --function-name my-function \ --event-source-arn arn:aws:kafka:us-east-2:123456789012:cluster/my-cluster/b-8ac7cc01-5898-482d-be2f-a6b596050ea8 \ --filter-criteria '{"Filters": [{"Pattern": "{ \"value\" : [ { \"anything-but\": [ \"error\" ] } ] }"}]}'

Untuk menambahkan kriteria filter ini ke pemetaan sumber peristiwa yang ada, jalankan perintah berikut.

aws lambda update-event-source-mapping \ --uuid "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \ --filter-criteria '{"Filters": [{"Pattern": "{ \"value\" : [ { \"anything-but\": [ \"error\" ] } ] }"}]}'
AWS SAM

Untuk menambahkan filter ini menggunakan AWS SAM, tambahkan cuplikan berikut ke template YAMB untuk sumber acara Anda.

FilterCriteria: Filters: - Pattern: '{ "value" : [ { "anything-but": [ "error" ] } ] }'

Amazon MSK dan pesan Apache Kafka yang dikelola sendiri harus berupa string yang dikodekan UTF-8, baik string biasa atau dalam format JSON. Itu karena Lambda menerjemahkan array byte MSK Amazon ke UTF-8 sebelum menerapkan kriteria filter. Jika pesan Anda menggunakan pengkodean lain, seperti UTF-16 atau ASCII, atau jika format pesan tidak cocok dengan formatFilterCriteria, Lambda 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

JSON yang valid

Filter Lambda (hanya pada properti metadata lainnya) berdasarkan kriteria filter Anda.

JSON yang valid

Tali polos

Filter Lambda (hanya pada properti metadata lainnya) 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

JSON yang valid

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.

Pemfilteran dengan Amazon SQS

Misalkan antrian Amazon SQS Anda berisi pesan dalam format JSON berikut.

{ "RecordNumber": 0000, "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": 0000,\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 FilterCriteriaObjeknya 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.

Console

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" ] } }
AWS CLI

Untuk membuat pemetaan sumber peristiwa baru dengan kriteria filter ini menggunakan AWS Command Line Interface (AWS CLI), jalankan perintah berikut.

aws lambda create-event-source-mapping \ --function-name my-function \ --event-source-arn arn:aws:sqs:us-east-2:123456789012:my-queue \ --filter-criteria '{"Filters": [{"Pattern": "{ \"body\" : { \"RequestCode\" : [ \"BBBB\" ] } }"}]}'

Untuk menambahkan kriteria filter ini ke pemetaan sumber peristiwa yang ada, jalankan perintah berikut.

aws lambda update-event-source-mapping \ --uuid "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \ --filter-criteria '{"Filters": [{"Pattern": "{ \"body\" : { \"RequestCode\" : [ \"BBBB\" ] } }"}]}'
AWS SAM

Untuk menambahkan filter ini menggunakan AWS SAM, tambahkan cuplikan berikut ke template YAMB untuk sumber acara Anda.

FilterCriteria: Filters: - Pattern: '{ "body" : { "RequestCode" : [ "BBBB" ] } }'

Misalkan Anda ingin fungsi Anda memproses hanya catatan yang RecordNumber lebih besar dari 9999. FilterCriteriaObjeknya 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.

Console

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 ] } ] } }
AWS CLI

Untuk membuat pemetaan sumber peristiwa baru dengan kriteria filter ini menggunakan AWS Command Line Interface (AWS CLI), jalankan perintah berikut.

aws lambda create-event-source-mapping \ --function-name my-function \ --event-source-arn arn:aws:sqs:us-east-2:123456789012:my-queue \ --filter-criteria '{"Filters": [{"Pattern": "{ \"body\" : { \"RecordNumber\" : [ { \"numeric\": [ \">\", 9999 ] } ] } }"}]}'

Untuk menambahkan kriteria filter ini ke pemetaan sumber peristiwa yang ada, jalankan perintah berikut.

aws lambda update-event-source-mapping \ --uuid "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \ --filter-criteria '{"Filters": [{"Pattern": "{ \"body\" : { \"RecordNumber\" : [ { \"numeric\": [ \">\", 9999 ] } ] } }"}]}'
AWS SAM

Untuk menambahkan filter ini menggunakan AWS SAM, tambahkan cuplikan berikut ke template YAMB untuk sumber acara Anda.

FilterCriteria: Filters: - Pattern: '{ "body" : { "RecordNumber" : [ { "numeric": [ ">", 9999 ] } ] } }'

Untuk Amazon SQS, badan 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 bodyFormat 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.