Pemfilteran acara di Amazon Pipes EventBridge - Amazon EventBridge

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

Pemfilteran acara di Amazon Pipes EventBridge

Dengan EventBridge Pipes, Anda dapat memfilter peristiwa sumber tertentu dan memproses hanya sebagian dari mereka. Pemfilteran ini bekerja dengan cara yang sama seperti memfilter pada bus EventBridge acara atau pemetaan sumber peristiwa Lambda, dengan menggunakan pola peristiwa. Untuk informasi selengkapnya tentang pola acara, lihatPola EventBridge acara Amazon.

FilterCriteriaObjek kriteria filter adalah struktur yang terdiri dari daftar filter (Filters). Setiap filter adalah struktur yang mendefinisikan pola penyaringan ()Pattern. A Pattern adalah representasi string dari aturan JSON filter. Sebuah FilterCriteria objek terlihat seperti contoh berikut:

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

Untuk kejelasan tambahan, berikut adalah nilai filter yang Pattern diperluas secara sederhanaJSON:

{ "Metadata1": [ pattern1 ], "data": {"Data1": [ pattern2 ]} }

Bagian utama untuk FilterCriteria objek adalah properti metadata dan properti data.

  • Properti metadata adalah bidang objek acara. Dalam contoh, FilterCriteria.Metadata1 mengacu pada properti metadata.

  • Properti data adalah bidang badan acara. Dalam contoh, FilterCriteria.Data1 mengacu pada properti data.

Misalnya, aliran Kinesis Anda berisi peristiwa seperti ini::

{ "kinesisSchemaVersion": "1.0", "partitionKey": "1", "sequenceNumber": "49590338271490256608559692538361571095921575989136588898", "data": {"City": "Seattle", "State": "WA", "Temperature": "46", "Month": "December" }, "approximateArrivalTimestamp": 1545084650.987 }

Ketika peristiwa mengalir melalui pipa Anda, itu akan terlihat seperti berikut dengan data bidang base64 yang dikodekan:

{ "kinesisSchemaVersion": "1.0", "partitionKey": "1", "sequenceNumber": "49590338271490256608559692538361571095921575989136588898", "data": "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==", "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" }

Properti metadata pada peristiwa Kinesis adalah bidang apa pun di luar data objek, seperti atau. partitionKey sequenceNumber

Properti data dari peristiwa Kinesis adalah bidang di dalam data objek, seperti City atau. Temperature

Saat Anda memfilter agar sesuai dengan acara ini, Anda dapat menggunakan filter pada bidang yang diterjemahkan. Misalnya, untuk memfilter partitionKey dan City Anda akan menggunakan filter berikut:

{ "partitionKey": [ "1" ], "data": { "City": [ "Seattle" ] } }

Saat Anda membuat filter acara, EventBridge Pipes dapat mengakses konten acara. Konten ini dapat JSON di-escaped, seperti SQS body bidang Amazon, atau dikodekan base64, seperti bidang Kinesis. data Jika data Anda validJSON, templat input atau JSON jalur untuk parameter target dapat mereferensikan konten secara langsung. Misalnya, jika sumber peristiwa Kinesis validJSON, Anda dapat mereferensikan variabel menggunakan. <$.data.someKey>

Saat membuat pola acara, Anda dapat memfilter berdasarkan bidang yang dikirim oleh sumberAPI, dan bukan pada bidang yang ditambahkan oleh operasi pemungutan suara. Bidang berikut tidak dapat digunakan dalam pola acara:

  • awsRegion

  • eventSource

  • eventSourceARN

  • eventVersion

  • eventID

  • eventName

  • invokeIdentityArn

  • eventSourceKey

Bidang pesan dan data

Setiap sumber EventBridge Pipe berisi bidang yang berisi pesan inti atau data. Kami menyebutnya sebagai bidang pesan atau bidang data. Bidang ini istimewa karena mungkin JSON -escaped atau dikodekan base64, tetapi ketika valid, JSON mereka dapat disaring dengan JSON pola seolah-olah tubuh tidak lolos. Isi bidang ini juga dapat digunakan dalam transformator input dengan mulus.

Memfilter pesan Amazon SQS dengan benar

Jika SQS pesan Amazon tidak memenuhi kriteria filter Anda, EventBridge secara otomatis menghapus pesan dari antrian. Anda tidak perlu menghapus pesan-pesan ini secara manual di AmazonSQS.

Untuk AmazonSQS, pesannya body bisa berupa string apa saja. Namun, ini bisa menjadi masalah jika Anda FilterCriteria berharap body berada dalam JSON format yang valid. Skenario sebaliknya juga benar —jika pesan body yang masuk dalam JSON format yang valid, tetapi kriteria filter Anda diharapkan menjadi string biasa, itu mengarah body ke perilaku yang tidak diinginkan.

Untuk menghindari masalah ini, pastikan bahwa format body dalam Anda FilterCriteria cocok dengan format yang diharapkan body dalam pesan yang Anda terima dari antrian Anda. Sebelum memfilter pesan Anda, EventBridge secara otomatis mengevaluasi format pesan masuk body dan pola filter Anda. body Jika ada ketidakcocokan, EventBridge jatuhkan pesan. Tabel berikut merangkum evaluasi ini:

Format pesan body masuk bodyFormat pola filter Tindakan yang dihasilkan

Tali polos

Tali polos

EventBridge filter berdasarkan kriteria filter Anda.

Tali polos

Tidak ada pola filter untuk properti data

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

Tali polos

Valid JSON

EventBridge menjatuhkan pesan.

Valid JSON

Tali polos

EventBridge menjatuhkan pesan.

Valid JSON

Tidak ada pola filter untuk properti data

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

Valid JSON

Valid JSON

EventBridge filter berdasarkan kriteria filter Anda.

Jika Anda tidak menyertakan body sebagai bagian dari AndaFilterCriteria, EventBridge lewati pemeriksaan ini.

Memfilter pesan Kinesis dan DynamoDB dengan benar

Setelah kriteria filter Anda memproses Kinesis atau rekaman DynamoDB, iterator stream akan melewati catatan ini. Jika catatan tidak memenuhi kriteria filter Anda, Anda tidak perlu menghapus rekaman 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 memfilter peristiwa dengan benar dari sumber peristiwa aliran, bidang data dan kriteria filter Anda untuk bidang data harus dalam JSON format yang valid. (Untuk Kinesis, bidang data adalah. data Untuk DynamoDB, bidang datanya adalah.) dynamodb Jika salah satu bidang tidak dalam JSON format yang valid, EventBridge jatuhkan pesan atau melempar pengecualian. Tabel berikut merangkum perilaku spesifik:

Format data masuk (dataataudynamodb) Format pola filter untuk properti data Tindakan yang dihasilkan

Valid JSON

Valid JSON

EventBridge filter berdasarkan kriteria filter Anda.

Valid JSON

Tidak ada pola filter untuk properti data

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

Valid JSON

Bukan- JSON

EventBridge melempar pengecualian pada saat pipa atau pembaruan. Pola filter untuk properti data harus dalam JSON format yang valid.

Bukan- JSON

Valid JSON

EventBridge menjatuhkan rekor.

Bukan- JSON

Tidak ada pola filter untuk properti data

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

Bukan- JSON

Bukan- JSON

EventBridge melempar pengecualian pada saat pembuatan pipa atau pembaruan. Pola filter untuk properti data harus dalam JSON format yang valid.

Memfilter Amazon Managed Streaming dengan benar untuk Apache Kafka Kafka, Apache Kafka yang dikelola sendiri, dan pesan Amazon MQ

Untuk sumber Amazon MQ, bidang pesannya adalah. data Untuk sumber Apache Kafka (Amazon MSK dan Apache Kafka yang dikelola sendiri), ada dua bidang pesan: dan. key value

EventBridge menjatuhkan pesan yang tidak cocok dengan semua bidang yang disertakan dalam filter. Untuk Apache Kafka, EventBridge melakukan offset untuk pesan yang cocok dan tak tertandingi setelah berhasil menjalankan fungsi. Untuk Amazon MQ, EventBridge mengakui pesan yang cocok setelah berhasil menjalankan fungsi dan mengakui pesan yang tak tertandingi saat memfilternya.

Pesan Apache Kafka dan Amazon MQ harus UTF berupa -8 string yang dikodekan, baik string biasa atau dalam format. JSON Itu karena EventBridge menerjemahkan array Apache Kafka dan Amazon MQ byte menjadi UTF -8 sebelum menerapkan kriteria filter. Jika pesan Anda menggunakan pengkodean lain, seperti UTF -16 atauASCII, atau jika format pesan tidak cocok dengan FilterCriteria format, hanya EventBridge memproses filter metadata. Tabel berikut merangkum perilaku spesifik:

Format pesan masuk (dataatau key danvalue) Format pola filter untuk properti pesan Tindakan yang dihasilkan

Tali polos

Tali polos

EventBridge filter berdasarkan kriteria filter Anda.

Tali polos

Tidak ada pola filter untuk properti data

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

Tali polos

Valid JSON

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

Valid JSON

Tali polos

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

Valid JSON

Tidak ada pola filter untuk properti data

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

Valid JSON

Valid JSON

EventBridge filter berdasarkan kriteria filter Anda.

String yang tidak dikodekan UTF -8

JSON, string polos, atau tidak ada pola

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

Perbedaan antara Lambda ESM dan Pipa EventBridge

Saat memfilter acara, ESM Lambda EventBridge dan Pipa beroperasi secara umum dengan cara yang sama. Perbedaan utama adalah bahwa eventSourceKey bidang tidak ada dalam ESM muatan.

Menggunakan operator perbandingan dalam filter pipa

Operator perbandingan memungkinkan Anda untuk membuat pola peristiwa yang cocok dengan nilai bidang dalam peristiwa.

Untuk daftar lengkap operator perbandingan yang didukung untuk digunakan dalam filter pipa, lihatOperator perbandingan.