View a markdown version of this page

Operator perbandingan untuk digunakan dalam pola acara di Amazon EventBridge - Amazon EventBridge

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

Operator perbandingan untuk digunakan dalam pola acara di Amazon EventBridge

Di bawah ini ringkasan semua operator perbandingan yang tersedia di EventBridge.

Operator perbandingan hanya bekerja pada simpul daun, dengan pengecualian $or dananything-but.

Perbandingan Contoh Sintaks aturan Dukungan bus acara Dukungan pipa

Dan

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

"Location": [ "New York" ], "Day": ["Monday"]

Ya

Ya

Anything-but Status adalah nilai apa pun selain “inisialisasi”.

"state": [ { "anything-but": "initializing" } ]

Ya

Ya

Anything-but (dimulai dengan)

Wilayah tidak berada di Amerika Serikat.

"Region": [ { "anything-but": {"prefix": "us-" } } ]

Ya

Tidak

Anything-but (diakhiri dengan)

FileName tidak berakhir dengan ekstensi.png.

"FileName": [ { "anything-but": { "suffix": ".png" } } ]

Ya

Tidak

Anything-but (abaikan kasus)

Status adalah nilai apa pun selain “inisialisasi” atau variasi casing lainnya, seperti “INISIALISASI”.

"state": : [{ "anything-but": { "equals-ignore-case": "initializing" }}]}

Ya

Tidak

Anything-but menggunakan wildcard

FileName bukan jalur file yang menyertakan/lib/.

"FilePath" : [{ "anything-but": { "wildcard": "*/lib/*" }}]

Ya

Tidak

Dimulai dengan

Wilayah berada di AS.

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

Ya

Ya

Dimulai dengan (abaikan kasus)

Nama layanan dimulai dengan huruf “eventb”, terlepas dari kasusnya.

{"service" : [{ "prefix": { "equals-ignore-case": "eventb" }}]}

Ya

Ya

Kosong

LastName kosong.

"LastName": [""]

Ya

Ya

Sama dengan

Namanya adalah “Alice”

"Name": [ "Alice" ]

Ya

Ya

Sama dengan (abaikan kasus)

Namanya adalah “Alice”

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

Ya

Ya

Berakhir dengan

FileName diakhiri dengan ekstensi.png

"FileName": [ { "suffix": ".png" } ]

Ya

Ya

Diakhiri dengan (abaikan kasus)

Nama layanan diakhiri dengan huruf “tbridge”, atau variasi casing lainnya, seperti “TBRIDGE”.

{"service" : [{ "suffix": { "equals-ignore-case": "tBridge" }}]}

Ya

Ya

Ada

ProductName ada

"ProductName": [ { "exists": true } ]

Ya

Ya

Tidak ada

ProductName tidak ada

"ProductName": [ { "exists": false } ]

Ya

Ya

Tidak

Cuaca sama sekali tidak “hujan”

"Weather": [ { "anything-but": [ "Raining" ] } ]

Ya

Ya

Nol

UserID adalah kosong

"UserID": [ null ]

Ya

Ya

Numerik (sama dengan)

Harga 100

"Price": [ { "numeric": [ "=", 100 ] } ]

Ya

Ya

Numerik (rentang)

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

"Price": [ { "numeric": [ ">", 10, "<=", 20 ] } ]

Ya

Ya

Atau

PaymentType adalah “Kredit” atau “Debit”

"PaymentType": [ "Credit", "Debit"]

Ya

Ya

Atau (beberapa bidang)

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

"$or": [ { "Location": [ "New York" ] }, { "Day": [ "Monday" ] } ]

Ya

Ya

Karakter pengganti

File apa pun dengan ekstensi.png, terletak di dalam folder “dir”

"FileName": [ { "wildcard": "dir/*.png" } ]

Ya

Tidak

Pencocokan prefiks

Anda dapat mencocokkan peristiwa bergantung pada prefiks nilai dalam sumber peristiwa. Anda dapat menggunakan pencocokan awalan untuk nilai string.

Sebagai contoh, pola peristiwa berikut ini akan cocok dengan peristiwa di mana bidang "time" dimulai dengan "2017-10-02" seperti "time": "2017-10-02T18:43:48Z".

{ "time": [ { "prefix": "2017-10-02" } ] }

Pencocokan awalan sambil mengabaikan kasus

Anda juga dapat mencocokkan nilai awalan terlepas dari casing karakter yang dimulai dengan nilai, menggunakan equals-ignore-case bersama dengan prefix.

Misalnya, pola peristiwa berikut akan cocok dengan peristiwa apa pun di mana service bidang dimulai dengan string karakterEventB, tetapi jugaEVENTB,eventb, atau kapitalisasi lain dari karakter tersebut.

{ "detail": {"service" : [{ "prefix": { "equals-ignore-case": "EventB" }}]} }

Pencocokan akhiran

Anda dapat mencocokkan peristiwa tergantung pada akhiran nilai di sumber peristiwa. Anda dapat menggunakan pencocokan akhiran untuk nilai string.

Misalnya, pola peristiwa berikut akan cocok dengan peristiwa apa pun di mana "FileName" bidang berakhir dengan ekstensi .png file.

{ "FileName": [ { "suffix": ".png" } ] }

Pencocokan akhiran sambil mengabaikan kasus

Anda juga dapat mencocokkan nilai akhiran terlepas dari casing karakter yang diakhiri dengan nilai, menggunakan equals-ignore-case bersama dengan suffix.

Misalnya, pola peristiwa berikut akan cocok dengan peristiwa apa pun di mana FileName bidang diakhiri dengan string karakter.png, tetapi juga .PNG atau kapitalisasi lain dari karakter tersebut.

{ "detail": {"FileName" : [{ "suffix": { "equals-ignore-case": ".png" }}]} }

Anything-but mencocokkan

Anything-butpencocokan cocok dengan apa pun kecuali apa yang ditentukan dalam aturan.

Anda dapat menggunakan apa pun yang cocok dengan nilai string dan nilai numerik, termasuk daftar yang hanya berisi string, atau hanya angka.

Pola peristiwa berikut ini menunjukkan apa pun yang cocok dengan string dan angka.

{ "detail": { "state": [ { "anything-but": "initializing" } ] } } { "detail": { "x-limit": [ { "anything-but": 123 } ] } }

Pola peristiwa berikut ini menunjukkan apa pun yang cocok dengan daftar string.

{ "detail": { "state": [ { "anything-but": [ "stopped", "overloaded" ] } ] } }

Pola peristiwa berikut ini menunjukkan apa pun yang cocok dengan daftar angka.

{ "detail": { "x-limit": [ { "anything-but": [ 100, 200, 300 ] } ] } }

Anything-but mencocokkan sambil mengabaikan kasus

Anda juga dapat menggunakan equals-ignore-case bersamaan dengananything-but, untuk mencocokkan nilai string terlepas dari casing karakter.

Pola acara berikut cocok dengan state bidang yang tidak berisi string “inisialisasi”, “INISIALISASI”, “Inisialisasi”, atau kapitalisasi lain dari karakter tersebut.

{ "detail": {"state" : [{ "anything-but": { "equals-ignore-case": "initializing" }}]} }

Anda dapat menggunakan equals-ignore-case bersama dengan anything-but untuk mencocokkan dengan daftar nilai juga:

{ "detail": {"state" : [{ "anything-but": { "equals-ignore-case": ["initializing", "stopped"] }}]} }

Anything-but mencocokkan pada awalan

Anda dapat menggunakan prefix bersamaan dengan anything-but untuk mencocokkan nilai string yang tidak dimulai dengan nilai yang ditentukan. Ini termasuk nilai tunggal, atau daftar nilai.

Pola acara berikut menunjukkan apa pun kecuali pencocokan yang cocok dengan peristiwa apa pun yang tidak memiliki awalan "init" di bidang. "state"

{ "detail": { "state": [ { "anything-but": { "prefix": "init" } } ] } }

Pola acara berikut menunjukkan apa pun - kecuali pencocokan yang digunakan dengan daftar nilai awalan. Pola peristiwa ini cocok dengan peristiwa apa pun yang tidak memiliki awalan "init" atau "stop" di "state" bidang.

{ "detail": { "state" : [{ "anything-but": { "prefix": ["init", "stop"] } } ] } } }

Anything-but mencocokkan pada sufiks

Anda dapat menggunakan suffix bersamaan dengan anything-but untuk mencocokkan nilai string yang tidak berakhir dengan nilai yang ditentukan. Ini termasuk nilai tunggal, atau daftar nilai.

Pola peristiwa berikut cocok dengan nilai apa pun untuk FileName bidang yang tidak diakhiri dengan.txt.

{ "detail": { "FileName": [ { "anything-but": { "suffix": ".txt" } } ] } }

Pola acara berikut menunjukkan apa pun - kecuali pencocokan yang digunakan dengan daftar nilai akhiran. Pola peristiwa ini cocok dengan nilai apa pun untuk FileName bidang yang tidak diakhiri dengan salah satu .txt atau.rtf.

{ "detail": { "FileName": [ { "anything-but": { "suffix": [".txt", ".rtf"] } } ] } }

Anything-but pencocokan menggunakan wildcard

Anda dapat menggunakan karakter wildcard (*) dalam nilai yang Anda tentukan untuk apa pun kecuali pencocokan. Ini termasuk nilai tunggal, atau daftar nilai.

Pola peristiwa berikut cocok dengan nilai apa pun untuk FileName bidang yang tidak berisi/lib/.

{ "detail": { "FilePath" : [{ "anything-but": { "wildcard": "*/lib/*" }}] } }

Pola acara berikut menunjukkan apa pun - kecuali pencocokan yang digunakan dengan daftar nilai termasuk wildcard. Pola peristiwa ini cocok dengan nilai apa pun untuk FileName bidang yang tidak mengandung salah satu /lib/ atau/bin/.

{ "detail": { "FilePath" : [{ "anything-but": { "wildcard": ["*/lib/*", "*/bin/*"] }}] } }

Untuk informasi selengkapnya, lihat Pencocokan menggunakan wildcard.

Pencocokan numerik

Pencocokan numerik membandingkan nilai sebagai angka floating-point presisi ganda 64-bit (IEEE 754 binary64), yang membatasi bilangan bulat yang dapat dicocokkan secara tepat. Bilangan bulat dicocokkan persis dari -9.007.199,254.740.992 hingga 9.007.199.254.740.992 (-2 53 hingga +2 53). Jika nilai berada di luar rentang ini atau sebaliknya tidak dapat direpresentasikan secara tepat sebagai EventBridge ganda, tolak aturan pada waktu pembuatan ketika nilai digunakan dalam perbandingan numerik, dan peristiwa yang membawa nilai tersebut tidak diperlakukan sebagai angka dan tidak akan cocok dengan perbandingan numerik.

Berikut ini menunjukkan pencocokan numerik untuk pola peristiwa yang hanya cocok dengan peristiwa yang betul untuk semua bidang.

{ "detail": { "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ], "d-count": [ { "numeric": [ "<", 10 ] } ], "x-limit": [ { "numeric": [ "=", 3.018e2 ] } ] } }

Pencocokan alamat IP

Anda dapat menggunakan alamat IP yang cocok untuk alamat IPv4 dan IPv6. Pola peristiwa berikut menunjukkan alamat IP yang cocok dengan alamat IP yang dimulai dengan 10.0.0 dan diakhiri dengan angka antara 0 dan 255.

{ "detail": { "sourceIPAddress": [ { "cidr": "10.0.0.0/24" } ] } }

Pencocokan yang ada

Pencocokan yang ada bekerja pada ada tidaknya bidang di JSON peristiwa.

Pencocokan yang ada hanya bekerja pada simpul daun. Pencocokan yang ada tidak berfungsi pada simpul intermediet.

Pola peristiwa berikut cocok dengan peristiwa apa pun yang memiliki detail.state bidang.

{ "detail": { "state": [ { "exists": true } ] } }

Pola peristiwa sebelumnya cocok dengan peristiwa berikut ini.

{ "version": "0", "id": "7bf73129-1428-4cd3-a780-95db273d1602", "detail-type": "EC2 Instance State-change Notification", "source": "aws.ec2", "account": "123456789012", "time": "2015-11-11T21:29:54Z", "region": "us-east-1", "resources": ["arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1111"], "detail": { "instance-id": "i-abcd1111", "state": "pending" } }

Pola peristiwa sebelumnya TIDAK cocok dengan peristiwa berikut karena tidak memiliki detail.state bidang.

{ "detail-type": [ "EC2 Instance State-change Notification" ], "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-02ebd4584a2ebd341" ], "detail": { "c-count" : { "c1" : 100 } } }

Equals-ignore-case mencocokkan

Equals-ignore-casepencocokan bekerja pada nilai string terlepas dari kasusnya.

Pola peristiwa berikut cocok dengan peristiwa apa pun yang memiliki detail-type bidang yang cocok dengan string yang ditentukan, terlepas dari kasusnya.

{ "detail-type": [ { "equals-ignore-case": "ec2 instance state-change notification" } ] }

Pola peristiwa sebelumnya cocok dengan peristiwa berikut ini.

{ "detail-type": [ "EC2 Instance State-change Notification" ], "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-02ebd4584a2ebd341" ], "detail": { "c-count" : { "c1" : 100 } } }

Pencocokan menggunakan wildcard

Anda dapat menggunakan karakter wildcard (*) untuk mencocokkan nilai string dalam pola acara.

catatan

Saat ini karakter wildcard hanya didukung dalam aturan bus acara.

Pertimbangan saat menggunakan wildcard dalam pola acara Anda:

  • Anda dapat menentukan sejumlah karakter wildcard dalam nilai string yang diberikan; namun, karakter wildcard berturut-turut tidak didukung.

  • EventBridge mendukung penggunaan karakter garis miring terbalik (\) untuk menentukan karakter literal * dan\ dalam filter wildcard:

    • String \* mewakili karakter* literal

    • String \\ mewakili karakter literal

    Menggunakan garis miring terbalik untuk menghindari karakter lain tidak didukung.

Karakter pengganti dan kompleksitas pola peristiwa

Ada batasan seberapa kompleks aturan menggunakan wildcard. Jika aturan terlalu rumit, EventBridge mengembalikan InvalidEventPatternException saat mencoba membuat aturan. Jika aturan Anda menghasilkan kesalahan seperti itu, pertimbangkan untuk menggunakan panduan di bawah ini untuk mengurangi kompleksitas pola peristiwa:

  • Kurangi jumlah karakter wildcard yang digunakan

    Hanya gunakan karakter wildcard di mana Anda benar-benar perlu mencocokkan dengan beberapa nilai yang mungkin. Misalnya, pertimbangkan pola acara berikut, di mana Anda ingin mencocokkan dengan bus acara di Wilayah yang sama:

    { "EventBusArn": [ { "wildcard": "*:*:*:*:*:event-bus/*" } ] }

    Dalam kasus di atas, banyak bagian ARN akan langsung didasarkan pada Wilayah tempat bus acara Anda berada. Jadi jika Anda menggunakan us-east-1 Region, pola yang kurang kompleks yang masih cocok dengan nilai yang diinginkan mungkin contoh berikut:

    { "EventBusArn": [ { "wildcard": "arn:aws:events:us-east-1:*:event-bus/*" } ] }
  • Mengurangi urutan karakter berulang yang terjadi setelah karakter wildcard

    Memiliki urutan karakter yang sama muncul beberapa kali setelah penggunaan wildcard meningkatkan kompleksitas pemrosesan pola peristiwa. Buat ulang pola acara Anda untuk meminimalkan urutan berulang. Misalnya, pertimbangkan contoh berikut, yang cocok pada file nama doc.txt file untuk setiap pengguna:

    { "FileName": [ { "wildcard": "/Users/*/dir/dir/dir/dir/dir/doc.txt" } ] }

    Jika Anda tahu bahwa doc.txt file hanya akan muncul di jalur yang ditentukan, Anda dapat mengurangi urutan karakter berulang dengan cara ini:

    { "FileName": [ { "wildcard": "/Users/*/doc.txt" } ] }

Contoh kompleks dengan beberapa pencocokan

Anda dapat menggabungkan beberapa kriteria pencocokan ke dalam pola peristiwa yang lebih kompleks. Sebagai contoh, pola peristiwa berikut ini menggabungkan anything-but dan numeric.

{ "time": [ { "prefix": "2017-10-02" } ], "detail": { "state": [ { "anything-but": "initializing" } ], "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ], "d-count": [ { "numeric": [ "<", 10 ] } ], "x-limit": [ { "anything-but": [ 100, 200, 300 ] } ] } }
catatan

Saat membangun pola peristiwa, jika Anda menyertakan kunci lebih dari sekali referensi terakhir akan digunakan untuk mengevaluasi peristiwa. Misalnya, untuk pola berikut:

{ "detail": { "location": [ { "prefix": "us-" } ], "location": [ { "anything-but": "us-east" } ] } }

hanya { "anything-but": "us-east" } akan diperhitungkan saat mengevaluasilocation.

Contoh kompleks dengan $ atau pencocokan

Anda juga dapat membuat pola peristiwa kompleks yang memeriksa untuk melihat apakah ada nilai bidang yang cocok, di beberapa bidang. Gunakan $or untuk membuat pola peristiwa yang cocok jika salah satu nilai untuk beberapa bidang dicocokkan.

Perhatikan bahwa Anda dapat menyertakan jenis filter lain, seperti pencocokan numerik dan array, dalam pencocokan pola untuk bidang individual dalam $or konstruksi Anda.

Pola acara berikut cocok jika salah satu dari kondisi berikut terpenuhi:

  • Bid c-count ang lebih besar dari 0 atau kurang dari atau sama dengan 5.

  • d-countBidangnya kurang dari 10.

  • x-limitBidang sama dengan 3.018e2.

{ "detail": { "$or": [ { "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ] }, { "d-count": [ { "numeric": [ "<", 10 ] } ] }, { "x-limit": [ { "numeric": [ "=", 3.018e2 ] } ] } ] } }
catatan

API yang menerima pola peristiwa (sepertiPutRule,CreateArchive,UpdateArchive, danTestEventPattern) akan menampilkan InvalidEventPatternException if penggunaan $or menghasilkan lebih dari 1000 kombinasi aturan.

Untuk menentukan jumlah kombinasi aturan dalam pola peristiwa, kalikan jumlah total argumen dari setiap $or array dalam pola peristiwa. Misalnya, pola di atas berisi $or array tunggal dengan tiga argumen, sehingga jumlah total kombinasi aturan juga tiga. Jika Anda menambahkan $or array lain dengan dua argumen, kombinasi aturan total akan menjadi enam.