

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
<a name="eb-create-pattern-operators"></a>

Di bawah ringkasan semua operator perbandingan yang tersedia di EventBridge. 

Operator perbandingan hanya bekerja pada node daun, dengan pengecualian `$or` dan`anything-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](#eb-filtering-anything-but) | Negara adalah nilai apa pun selain “menginisialisasi”. | `"state": [ { "anything-but": "initializing" } ]` |  Ya  |  Ya  | 
| [Apa saja-tapi (dimulai dengan)](#eb-filtering-anything-but-prefix) | Wilayah tidak ada di AS. |  `"Region": [ { "anything-but": {"prefix": "us-" } } ]`  |  Ya  |  Tidak  | 
| [Apa saja-tapi (berakhir dengan)](#eb-filtering-anything-but-suffix) | FileName tidak diakhiri dengan ekstensi.png. |  `"FileName": [ { "anything-but": { "suffix": ".png" } } ]`  |  Ya  |  Tidak  | 
| [Apa pun-tapi (abaikan kasus)](#eb-filtering-anything-but-ignore-case) | Status adalah nilai apa pun selain “inisialisasi” atau variasi casing lainnya, seperti “INISIALISASI”. | `"state": : [{ "anything-but": { "equals-ignore-case": "initializing" }}]}` |  Ya  |  Tidak  | 
| [Apa pun-kecuali menggunakan wildcard](#eb-filtering-anything-but-wildcard) | FileName bukan jalur file yang menyertakan`/lib/`. |  `"FilePath" : [{ "anything-but": { "wildcard": "*/lib/*" }}]`  |  Ya  |  Tidak  | 
|  [Dimulai dengan](#eb-filtering-prefix-matching)  |  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](eb-event-patterns-null-values.md)  |  LastName kosong.  |  `"LastName": [""]`  |  Ya  |  Ya  | 
|  Sama dengan  |  Namanya adalah “Alice”  |  `"Name": [ "Alice" ]`  |  Ya  |  Ya  | 
|  [Sama dengan (abaikan kasus)](#eb-filtering-equals-ignore-case-matching)  |  Namanya adalah “Alice”  |  `"Name": [ { "equals-ignore-case": "alice" } ]`  |  Ya  |  Ya  | 
|  [Berakhir dengan](#eb-filtering-suffix-matching)  |  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](#eb-filtering-exists-matching)  |  ProductName ada  |  `"ProductName": [ { "exists": true } ]`  |  Ya  |  Ya  | 
|  [Tidak ada](#eb-filtering-exists-matching)  |  ProductName tidak ada  |  `"ProductName": [ { "exists": false } ]`  |  Ya  |  Ya  | 
|  [Tidak](#eb-filtering-anything-but)  |  Cuaca hanyalah “Hujan”  |  `"Weather": [ { "anything-but": [ "Raining" ] } ]`  |  Ya  |  Ya  | 
|  [Null](eb-event-patterns-null-values.md)  |  UserID adalah kosong  |  `"UserID": [ null ]`  |  Ya  |  Ya  | 
|  [Numerik (sama dengan)](#filtering-numeric-matching)  |  Harga 100  |  `"Price": [ { "numeric": [ "=", 100 ] } ]`  |  Ya  |  Ya  | 
|  [Numerik (rentang)](#filtering-numeric-matching)  |  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)](#eb-filtering-complex-example-or)  |  Lokasi adalah “New York”, atau Hari adalah “Senin”.  |  `"$or": [ { "Location": [ "New York" ] }, { "Day": [ "Monday" ] } ]`  |  Ya  |  Ya  | 
|  [Wildcard](#eb-filtering-wildcard-matching)  |  File apa pun dengan ekstensi.png, terletak di dalam folder “dir”  |  `"FileName": [ { "wildcard": "dir/*.png" } ] `  |  Ya  |  Tidak  | 

## Pencocokan prefiks
<a name="eb-filtering-prefix-matching"></a>

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
<a name="eb-filtering-prefix-matching-ignore-case"></a>

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 karakter`EventB`, tetapi juga`EVENTB`,`eventb`, atau huruf besar lainnya dari karakter tersebut.

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

## Pencocokan akhiran
<a name="eb-filtering-suffix-matching"></a>

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
<a name="eb-filtering-suffix-matching-ignore-case"></a>

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 huruf besar lainnya dari karakter tersebut.

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

## Apa saja tapi tidak cocok
<a name="eb-filtering-anything-but"></a>

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
<a name="eb-filtering-anything-but-ignore-case"></a>

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

Pola peristiwa berikut cocok dengan `state` bidang yang tidak berisi string “inisialisasi”, “INISIALISASI”, “Inisialisasi”, atau huruf besar 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
<a name="eb-filtering-anything-but-prefix"></a>

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
<a name="eb-filtering-anything-but-suffix"></a>

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
<a name="eb-filtering-anything-but-wildcard"></a>

Anda dapat menggunakan karakter wildcard (\$1) 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](#eb-filtering-wildcard-matching).

## Pencocokan numerik
<a name="filtering-numeric-matching"></a>

Pencocokan numerik bekerja dengan nilai yang merupakan angka JSON. Ini terbatas pada nilai antara -5.0e9 dan \$15.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
<a name="eb-filtering-ip-matching"></a>

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
<a name="eb-filtering-exists-matching"></a>

*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 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 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 pencocokan
<a name="eb-filtering-equals-ignore-case-matching"></a>

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
<a name="eb-filtering-wildcard-matching"></a>

Anda dapat menggunakan karakter wildcard (\$1) 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 (\$1) untuk menentukan karakter \$1 dan\$1 literal dalam filter wildcard:
  + String `\*` mewakili karakter \$1 literal
  + String `\\` mewakili karakter\$1 literal

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

### Wildcard dan kompleksitas pola acara
<a name="eb-filtering-wildcard-matching-complexity"></a>

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:
+ **Mengurangi 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 dari ARN akan 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
<a name="eb-filtering-complex-example"></a>

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
<a name="eb-filtering-complex-example-or"></a>

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](#filtering-numeric-matching) dan [array](eb-event-patterns-arrays.md), 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**  
APIs yang menerima pola peristiwa (seperti`PutRule`,`CreateArchive`,`UpdateArchive`, dan`TestEventPattern`) 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.