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 ringkasan semua operator perbandingan yang tersedia di EventBridge.

Operator perbandingan hanya bekerja pada node 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

Apa saja-tapi Negara adalah nilai apa pun selain “menginisialisasi”.

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

Ya

Ya

Apa saja-tapi (dimulai dengan)

Wilayah tidak ada di AS.

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

Ya

Tidak

Apa saja-tapi (berakhir dengan)

FileName tidak diakhiri dengan ekstensi.png.

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

Ya

Tidak

Apa pun-tapi (abaikan kasus)

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

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

Ya

Tidak

Apa pun-kecuali menggunakan wildcard

FileName bukan jalur file yang menyertakan/lib/.

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

Ya

Tidak

Dimulai dengan

Wilayah ada 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

Setara

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

Berakhir 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

Null

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

Wildcard

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 di mana service bidang dimulai dengan string karakterEventB, tetapi jugaEVENTB,eventb, atau huruf besar lainnya dari karakter tersebut.

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

Pencocokan akhiran

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

Misalnya, pola acara berikut akan cocok dengan acara apa pun di mana "FileName" bidang diakhiri 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 di mana FileName bidang diakhiri dengan string karakter.png, tetapi juga .PNG atau huruf besar lainnya dari karakter tersebut.

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

Apa saja tapi tidak cocok

Apa pun-kecuali 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 ] } ] } }

Apa pun-kecuali cocok sambil mengabaikan kasus

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

Pola acara berikut cocok dengan state bidang yang tidak berisi string “inisialisasi”, "INITIALIZING“, “Inisialisasi”, atau kapitalisasi lainnya 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"] }}]} }

Apa pun-kecuali cocok pada awalan

Anda dapat menggunakan prefix bersama 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 - tetapi cocok yang cocok dengan acara apa pun yang tidak memiliki awalan di lapangan"init". "state"

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

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

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

Apa pun-kecuali cocok pada sufiks

Anda dapat menggunakan suffix bersama 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 apapun untuk FileName bidang yang tidak berakhir dengan.txt.

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

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

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

Apa pun-kecuali mencocokkan 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 apapun untuk FileName bidang yang tidak mengandung/lib/.

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

Pola acara berikut menunjukkan apa pun-tetapi pencocokan yang digunakan dengan daftar nilai termasuk wildcard. Pola acara ini cocok dengan nilai apapun 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 bekerja dengan nilai yang merupakan JSON angka. Ini terbatas pada nilai antara -5.0e9 dan +5.0e9 inklusif, dengan 15 digit presisi, atau enam digit di sebelah kanan titik desimal.

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 pencocokan alamat IP untuk IPv4 dan IPv6 alamat. 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

Ada karya pencocokan pada ada atau tidak adanya bidang di JSON acara tersebut.

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

Pola acara berikut cocok dengan setiap peristiwa 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 memang NOT 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 } } }

quals-ignore-casePencocokan E

quals-ignore-casePencocokan E 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, apa pun 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 didukung hanya dalam aturan bus acara.

Pertimbangan saat menggunakan wildcard dalam pola acara Anda:

  • Anda dapat menentukan sejumlah karakter wildcard dalam nilai string tertentu; Namun, karakter wildcard berturut-turut tidak didukung.

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

    • String \* mewakili karakter * literal

    • String \\ mewakili karakter\ literal

    Menggunakan garis miring terbalik untuk melarikan diri dari karakter lain tidak didukung.

Wildcard dan kompleksitas pola acara

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

  • 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 secara langsung didasarkan pada Wilayah di mana bus acara Anda berada. Jadi jika Anda menggunakan us-east-1 Region, pola yang kurang kompleks yang masih cocok dengan nilai yang diinginkan mungkin adalah contoh berikut:

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

    Memiliki urutan karakter yang sama muncul beberapa kali setelah penggunaan wildcard meningkatkan kompleksitas pemrosesan pola acara. Susun kembali pola acara Anda untuk meminimalkan urutan berulang. Misalnya, perhatikan 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 terjadi 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 acara 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 acara, jika Anda menyertakan kunci lebih dari sekali, referensi terakhir akan menjadi referensi yang 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 mengevaluasi. location

Contoh kompleks dengan $or 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 acara yang cocok jika salah satu nilai untuk beberapa bidang cocok.

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

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

  • c-countBidang lebih besar dari 0 atau kurang dari atau sama dengan 5.

  • d-countBidang 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

APIsyang menerima pola peristiwa (sepertiPutRule,CreateArchive,UpdateArchive, danTestEventPattern) akan menghasilkan InvalidEventPatternException jika 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.