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” |
|
Ya |
Ya |
Apa saja-tapi | Negara adalah nilai apa pun selain “menginisialisasi”. |
|
Ya |
Ya |
Apa saja-tapi (dimulai dengan) | Wilayah tidak ada di AS. |
|
Ya |
Tidak |
Apa saja-tapi (berakhir dengan) | FileName tidak diakhiri dengan ekstensi.png. |
|
Ya |
Tidak |
Apa pun-tapi (abaikan kasus) | Status adalah nilai apa pun selain “inisialisasi” atau variasi casing lainnya, seperti "INITIALIZING”. |
|
Ya |
Tidak |
Apa pun-kecuali menggunakan wildcard | FileName bukan jalur file yang menyertakan |
|
Ya |
Tidak |
Wilayah ada di AS. |
|
Ya |
Ya |
|
Dimulai dengan (abaikan kasus) | Nama layanan dimulai dengan huruf “eventb”, terlepas dari kasusnya. |
|
Ya |
Ya |
LastName kosong. |
|
Ya |
Ya |
|
Setara |
Namanya adalah “Alice” |
|
Ya |
Ya |
Namanya adalah “Alice” |
|
Ya |
Ya |
|
FileName diakhiri dengan ekstensi.png |
|
Ya |
Ya |
|
Berakhir dengan (abaikan kasus) | Nama layanan diakhiri dengan huruf “tbridge”, atau variasi casing lainnya, seperti "TBRIDGE”. |
|
Ya |
Ya |
ProductName ada |
|
Ya |
Ya |
|
ProductName tidak ada |
|
Ya |
Ya |
|
Cuaca sama sekali tidak “Hujan” |
|
Ya |
Ya |
|
UserID adalah kosong |
|
Ya |
Ya |
|
Harga 100 |
|
Ya |
Ya |
|
Harga lebih dari 10, dan kurang dari atau sama dengan 20 |
|
Ya |
Ya |
|
Atau |
PaymentType adalah “Kredit” atau “Debit” |
|
Ya |
Ya |
Lokasi adalah “New York”, atau Hari adalah “Senin”. |
|
Ya |
Ya |
|
File apa pun dengan ekstensi.png, terletak di dalam folder “dir” |
|
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-count
Bidang lebih besar dari 0 atau kurang dari atau sama dengan 5. -
d-count
Bidang kurang dari 10. -
x-limit
Bidang 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.