

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

# Praktik terbaik untuk pola EventBridge acara Amazon
<a name="eb-patterns-best-practices"></a>

Di bawah ini adalah beberapa praktik terbaik untuk dipertimbangkan saat menentukan pola acara dalam aturan bus acara Anda.

## Hindari menulis loop tak terbatas
<a name="eb-patterns-best-practices-loops"></a>

Di EventBridge, dimungkinkan untuk membuat aturan yang mengarah ke loop tak terbatas, di mana aturan ditembakkan berulang kali. Misalnya, aturan mungkin mendeteksi yang ACLs telah berubah pada bucket S3, dan memicu perangkat lunak untuk mengubahnya ke status yang diinginkan. Jika aturan tidak ditulis dengan hati-hati, perubahan berikutnya untuk ACLs mengaktifkan aturan lagi, menciptakan loop tak terbatas.

Untuk mencegah masalah ini, tulis pola acara agar aturan Anda setepat mungkin, sehingga hanya cocok dengan peristiwa yang sebenarnya ingin Anda kirim ke target. Dalam contoh di atas, Anda akan membuat pola acara untuk mencocokkan peristiwa sehingga tindakan yang dipicu tidak mengaktifkan kembali aturan yang sama. Misalnya, buat pola acara dalam aturan Anda yang akan cocok dengan peristiwa hanya jika ACLs ditemukan dalam keadaan buruk, bukan setelah perubahan apa pun. Untuk informasi selengkapnya, lihat [Buat pola acara setepat mungkin](#eb-patterns-best-practices-precision) dan [Cakupan pola acara Anda untuk memperhitungkan pembaruan sumber acara](#eb-patterns-best-practices-future-proof).

Loop tak terbatas dapat dengan cepat mengakibatkan biaya yang lebih tinggi dari yang diperkirakan. Ini juga dapat menyebabkan pelambatan dan pengiriman acara tertunda. Anda dapat memantau batas atas tingkat doa Anda untuk diperingatkan tentang lonjakan volume yang tidak terduga.

Gunakan penganggaran untuk mengingatkan Anda ketika biaya melebihi batas yang Anda tentukan. Untuk informasi lebih lanjut, lihat [Mengelola Biaya Anda dengan Anggaran](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/budgets-managing-costs.html).

## Buat pola acara setepat mungkin
<a name="eb-patterns-best-practices-precision"></a>

Semakin tepat pola acara Anda, semakin besar kemungkinannya hanya cocok dengan peristiwa yang benar-benar Anda inginkan, dan menghindari kecocokan tak terduga saat acara baru ditambahkan ke sumber acara, atau acara yang ada diperbarui untuk menyertakan properti baru.

Pola acara dapat mencakup filter yang cocok pada:
+ Metadata acara tentang acara tersebut, seperti`source`,. `detail-type` `account`, atau`region`.
+ Data peristiwa, ini adalah, bidang di dalam `detail` objek.
+ Konten acara, atau nilai aktual dari bidang di dalam `detail` objek.

Sebagian besar pola sederhana, seperti hanya menentukan `source` dan `detail-type` filter. Namun, EventBridge pola mencakup fleksibilitas untuk memfilter pada kunci atau nilai acara apa pun. Selain itu, Anda dapat menerapkan filter konten seperti `prefix` dan `suffix` filter untuk meningkatkan ketepatan pola Anda. Untuk informasi selengkapnya, lihat [Menggunakan operator perbandingan dalam pola EventBridge acara Amazon](eb-create-pattern.md#eb-event-patterns-content-based-filtering).

### Tentukan sumber acara dan jenis detail sebagai filter
<a name="eb-patterns-best-practices-source"></a>

Anda dapat mengurangi menghasilkan loop tak terbatas dan mencocokkan peristiwa yang tidak diinginkan dengan membuat pola acara Anda lebih tepat menggunakan bidang `source` dan `detail-type` metadata.

Saat Anda perlu mencocokkan nilai tertentu dalam dua bidang atau lebih, gunakan operator `$or` perbandingan, daripada mencantumkan semua nilai yang mungkin dalam satu larik nilai.

Untuk acara yang disampaikan melalui AWS CloudTrail, kami sarankan Anda menggunakan `eventName` bidang sebagai filter.

Contoh pola peristiwa berikut cocok `CreateQueue` atau `SetQueueAttributes` dari layanan Amazon Simple Queue Service, atau `CreateKey` atau `DisableKeyRotation` peristiwa dari AWS Key Management Service layanan.

```
{
  "detail-type": ["AWS API Call via CloudTrail"],
  "$or": [{
      "source": [
        "aws.sqs"
        ],
      "detail": {
        "eventName": [
          "CreateQueue",
          "SetQueueAttributes"
        ]
      }
    },
    {
      "source": [
        "aws.kms"
        ],
      "detail": {
        "eventName": [
          "CreateKey",
          "DisableKeyRotation"
        ]
      }
    }
  ]
}
```

### Tentukan akun dan wilayah sebagai filter
<a name="eb-patterns-best-practices-accounts-regions"></a>

`account`Menyertakan dan `region` bidang dalam pola acara Anda membantu membatasi pencocokan acara lintas akun atau lintas wilayah. 

### Tentukan filter konten
<a name="eb-patterns-best-practices-content"></a>

Pemfilteran berbasis konten dapat membantu meningkatkan presisi pola acara, sambil tetap menjaga panjang pola acara seminimal mungkin. Misalnya, pencocokan berdasarkan rentang numerik dapat membantu alih-alih mencantumkan semua nilai numerik yang mungkin.

Untuk informasi selengkapnya, lihat [Menggunakan operator perbandingan dalam pola EventBridge acara Amazon](eb-create-pattern.md#eb-event-patterns-content-based-filtering).

## Cakupan pola acara Anda untuk memperhitungkan pembaruan sumber acara
<a name="eb-patterns-best-practices-future-proof"></a>

Saat membuat pola acara, Anda harus mempertimbangkan bahwa skema acara dan domain acara dapat berkembang dan berkembang seiring waktu. Di sini sekali lagi, membuat pola acara Anda seakurat mungkin membantu Anda membatasi kecocokan tak terduga jika sumber acara berubah atau berkembang.

Misalnya, misalkan Anda cocok dengan peristiwa dari layanan mikro baru yang menerbitkan peristiwa terkait pembayaran. Awalnya, layanan menggunakan domain`acme.payments`, dan menerbitkan satu acara,`Payment accepted`:

```
{
  "detail-type": "Payment accepted",
  "source": "acme.payments",
  "detail": {
    "type": "{{credit}}",
    "amount": "{{100}}",
    "date": "{{2023-06-10}}",
    "currency": "{{USD}}"
    }
  }
}
```

Pada titik ini, Anda dapat membuat pola acara sederhana yang cocok dengan peristiwa yang diterima Pembayaran:

```
{ “source” : “acme.payments” }
```

Namun, misalkan layanan kemudian memperkenalkan acara baru untuk pembayaran yang ditolak:

```
{
  "detail-type": "Payment rejected",
  "source": "acme.payments",
  "detail": {
  }
}
```

Dalam hal ini, pola acara sederhana yang Anda buat sekarang akan cocok dengan keduanya `Payment accepted` dan `Payment rejected` peristiwa. EventBridge merutekan kedua jenis peristiwa ke target yang ditentukan untuk diproses, mungkin memperkenalkan kegagalan pemrosesan dan biaya pemrosesan tambahan.

Untuk membuat cakupan pola `Payment accepted` acara Anda hanya ke peristiwa, Anda ingin menentukan keduanya `source` dan`detail-type`, minimal:

```
{
  "detail-type": "Payment accepted",
  "source": "acme.payments"
  }
}
```

Anda juga dapat menentukan akun dan Wilayah dalam pola acara Anda, untuk membatasi lebih lanjut kapan peristiwa lintas akun atau lintas wilayah cocok dengan aturan ini.

```
{
  "account": "{{012345678910}}",
  "source": "acme.payments",
  "region": "{{AWS-Region}}",
  "detail-type": "Payment accepted"
}
```

## Validasi pola acara
<a name="eb-patterns-best-practices-validate"></a>

Untuk memastikan aturan sesuai dengan acara yang diinginkan, kami sangat menyarankan Anda memvalidasi pola acara Anda. Anda dapat memvalidasi pola acara menggunakan EventBridge konsol atau API:
+ Di EventBridge konsol, Anda dapat membuat dan menguji pola acara [sebagai bagian dari pembuatan aturan](eb-create-rule-visual.md), atau secara terpisah dengan [menggunakan Kotak Pasir](eb-event-pattern-sandbox.md).
+ Anda dapat menguji pola acara Anda dalam AWS CLI menggunakan [test-event-pattern](https://docs.aws.amazon.com/cli/latest/reference/events/test-event-pattern.html)perintah.