Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pola EventBridge acara Amazon
Pola peristiwa memiliki struktur yang sama dengan peristiwayang cocok. Aturan menggunakan pola peristiwa untuk memilih peristiwa dan merutekannya ke target. Pola peristiwa cocok dengan peristiwa maupun tidak.
penting
Di EventBridge, dimungkinkan untuk membuat aturan yang dapat menyebabkan higher-than-expected pengisian daya dan pelambatan. Misalnya, Anda dapat secara tidak sengaja membuat aturan yang mengarah ke loop tak terbatas, di mana aturan dijalankan secara rekursif tanpa akhir. Misalkan Anda membuat aturan untuk mendeteksi bahwa ACL telah berubah pada bucket Amazon S3, dan memicu perangkat lunak untuk mengubahnya ke status yang diinginkan. Jika aturan tidak ditulis dengan hati-hati, perubahan berikutnya pada ACL akan mengaktifkan kembali aturan, yang membuat loop tak terbatas.
Untuk panduan tentang cara menulis aturan dan pola peristiwa yang tepat untuk meminimalkan hasil yang tidak terduga tersebut, lihat Praktik terbaik saat mendefinisikan aturan Amazon EventBridge danPraktik terbaik saat mendefinisikan pola EventBridge acara Amazon.
Video berikut membahas dasar-dasar pola acara:
Topik
- Membuat pola acara
- Contoh peristiwa dan pola peristiwa
- Mencocokkan nilai nol dan string kosong dalam pola acara Amazon EventBridge
- Array dalam pola EventBridge acara Amazon
- Pemfilteran konten dalam pola EventBridge acara Amazon
- Menguji pola acara menggunakan EventBridge Sandbox
- Praktik terbaik saat mendefinisikan pola EventBridge acara Amazon
Acara berikut menunjukkan AWS acara sederhana dari Amazon EC2.
{
"version": "0",
"id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718",
"detail-type": "EC2 Instance State-change Notification",
"source": "aws.ec2",
"account": "111122223333",
"time": "2017-12-22T18:43:48Z",
"region": "us-west-1",
"resources": [
"arn:aws:ec2:us-west-1:123456789012:instance/i-1234567890abcdef0"
],
"detail": {
"instance-id": "i-1234567890abcdef0",
"state": "terminated"
}
}
Pola peristiwa berikut ini memproses semua peristiwa instance-termination
Amazon EC2.
{
"source": ["aws.ec2"],
"detail-type": ["EC2 Instance State-change Notification"],
"detail": {
"state": ["terminated"]
}
}
Membuat pola acara
Untuk membuat pola peristiwa, Anda menentukan bidang peristiwa yang ingin Anda cocokkan dengan pola peristiwa. Hanya tetapkan bidang yang Anda gunakan untuk pencocokan. Contoh pola peristiwa sebelumnya hanya memberikan nilai untuk tiga bidang: bidang tingkat atas "source"
dan"detail-type"
, dan "state"
bidang di dalam bidang "detail"
objek. EventBridge mengabaikan semua bidang lain dalam acara ketika menerapkan aturan.
Untuk pola peristiwa untuk mencocokkan peristiwa, peristiwa harus berisi semua nama bidang yang tercantum dalam pola peristiwa. Nama bidang juga harus muncul dalam peristiwa dengan struktur persarangan yang sama.
Ketika Anda menulis pola peristiwa untuk mencocokkan peristiwa, Anda dapat menggunakan API TestEventPattern
atau perintah CLI test-event-pattern
untuk menguji bahwa pola Anda cocok dengan peristiwa yang benar. Untuk informasi lebih lanjut, lihat TestEventPattern.
Mencocokkan nilai acara
Dalam pola peristiwa, nilai yang cocok adalah dalam array JSON, dikelilingi oleh tanda kurung siku (“[”, “]”) sehingga Anda dapat memberikan beberapa nilai. Misalnya, untuk mencocokkan peristiwa dari Amazon EC2 atau AWS Fargate, Anda dapat menggunakan pola berikut, yang cocok dengan peristiwa di mana nilai untuk "source"
bidang tersebut adalah salah satu atau"aws.ec2"
. "aws.fargate"
{
"source": ["aws.ec2", "aws.fargate"]
}
Pertimbangan saat membuat pola acara
Berikut adalah beberapa hal yang perlu dipertimbangkan ketika membangun pola acara Anda:
EventBridge mengabaikan bidang jika tidak disertakan dalam pola acara. Efeknya adalah ada
"*": "*"
wildcard untuk bidang yang tidak muncul dalam pola acara.Nilai yang cocok dengan pola peristiwa mengikuti aturan JSON. Anda dapat menyertakan string yang ditutup dalam tanda kutip ("), angka, dan kata kunci
true
,false
, dannull
.Untuk string, EventBridge gunakan character-by-character pencocokan yang tepat tanpa case folding atau normalisasi string lainnya.
Untuk angka, EventBridge gunakan representasi string. Sebagai contoh, 300, 300,0, dan 3,0e2 dianggap tidak sama.
Jika beberapa pola ditentukan untuk bidang JSON yang sama, EventBridge hanya menggunakan yang terakhir.
-
Ketahuilah bahwa ketika EventBridge mengkompilasi pola acara untuk digunakan, ia menggunakan dot (.) sebagai karakter yang bergabung.
Ini berarti EventBridge akan memperlakukan pola peristiwa berikut sebagai identik:
## has no dots in keys { "detail" : { "state": { "status": [ "running" ] } } } ## has dots in keys { "detail" : { "state.status": [ "running" ] } }
Dan bahwa kedua pola acara akan cocok dengan dua peristiwa berikut:
## has no dots in keys { "detail" : { "state": { "status": "running" } } } ## has dots in keys { "detail" : { "state.status": "running" } }
catatan
Ini menggambarkan EventBridge perilaku saat ini, dan tidak boleh diandalkan untuk tidak berubah.
-
Pola acara yang berisi kolom duplikat tidak valid. Jika pola berisi kolom duplikat, EventBridge hanya mempertimbangkan nilai bidang akhir.
Misalnya, pola acara berikut akan cocok dengan acara yang sama:
## has duplicate keys { "source": ["aws.s3"], "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["s3.amazonaws.com"], "eventSource": ["sns.amazonaws.com"] } } ## has unique keys { "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": { "eventSource": ["sns.amazonaws.com"] } }
Dan EventBridge memperlakukan dua peristiwa berikut sebagai identik:
## has duplicate keys { "source": ["aws.s3"], "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": [ { "eventSource": ["s3.amazonaws.com"], "eventSource": ["sns.amazonaws.com"] } ] } ## has unique keys { "source": ["aws.sns"], "detail-type": ["AWS API Call via CloudTrail"], "detail": [ { "eventSource": ["sns.amazonaws.com"] } ] }
catatan
Ini menggambarkan EventBridge perilaku saat ini, dan tidak boleh diandalkan untuk tidak berubah.
Operasi perbandingan untuk digunakan dalam pola acara
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 |
---|---|---|
Dan |
Lokasi adalah “New York” dan Hari adalah “Senin” |
|
Apa saja-tapi | Negara adalah nilai apa pun selain “menginisialisasi”. |
|
Apa saja-tapi (dimulai dengan) | Wilayah tidak ada di AS. |
|
Apa saja-tapi (berakhir dengan) | FileName tidak diakhiri dengan ekstensi.png. |
|
Apa pun-tapi (abaikan kasus) | Status adalah nilai apa pun selain “inisialisasi” atau variasi casing lainnya, seperti “INISIALISASI”. |
|
Apa pun-kecuali menggunakan wildcard | FileName bukan jalur file yang menyertakan |
|
Wilayah ada di AS. |
|
|
Dimulai dengan (abaikan kasus) | Nama layanan dimulai dengan huruf “eventb”, terlepas dari kasusnya. |
|
LastName kosong. |
|
|
Setara |
Namanya adalah “Alice” |
|
Namanya adalah “Alice” |
|
|
FileName diakhiri dengan ekstensi.png |
|
|
Berakhir dengan (abaikan kasus) | Nama layanan diakhiri dengan huruf “tbridge”, atau variasi casing lainnya, seperti “TBRIDGE”. |
|
ProductName ada |
|
|
ProductName tidak ada |
|
|
Cuaca hanyalah “Hujan” |
|
|
UserID adalah kosong |
|
|
Harga 100 |
|
|
Harga lebih dari 10, dan kurang dari atau sama dengan 20 |
|
|
Atau |
PaymentType adalah “Kredit” atau “Debit” |
|
Lokasi adalah “New York”, atau Hari adalah “Senin”. |
|
|
File apa pun dengan ekstensi.png, terletak di dalam folder “dir” |
|
Contoh peristiwa dan pola peristiwa
Anda dapat menggunakan semua jenis data JSON dan nilai untuk mencocokkan peristiwa. Contoh berikut ini menunjukkan peristiwa dan pola peristiwa yang cocok dengannya.
Pencocokan bidang
Anda dapat mencocokkan pada nilai bidang. Pertimbangkan peristiwa Amazon EC2 Auto Scaling berikut ini.
{
"version": "0",
"id": "3e3c153a-8339-4e30-8c35-687ebef853fe",
"detail-type": "EC2 Instance Launch Successful",
"source": "aws.autoscaling",
"account": "123456789012",
"time": "2015-11-11T21:31:47Z",
"region": "us-east-1",
"resources": [],
"detail": {
"eventVersion": "",
"responseElements": null
}
}
Untuk peristiwa sebelumnya, Anda dapat menggunakan bidang "responseElements"
untuk mencocokkan.
{
"source": ["aws.autoscaling"],
"detail-type": ["EC2 Instance Launch Successful"],
"detail": {
"responseElements": [null]
}
}
Pencocokan nilai
Pertimbangkan acara Amazon Macie berikut, yang terpotong.
{
"version": "0",
"id": "0948ba87-d3b8-c6d4-f2da-732a1example",
"detail-type": "Macie Finding",
"source": "aws.macie",
"account": "123456789012",
"time": "2021-04-29T23:12:15Z",
"region":"us-east-1",
"resources": [
],
"detail": {
"schemaVersion": "1.0",
"id": "64b917aa-3843-014c-91d8-937ffexample",
"accountId": "123456789012",
"partition": "aws",
"region": "us-east-1",
"type": "Policy:IAMUser/S3BucketEncryptionDisabled",
"title": "Encryption is disabled for the S3 bucket",
"description": "Encryption is disabled for the Amazon S3 bucket. The data in the bucket isn’t encrypted
using server-side encryption.",
"severity": {
"score": 1,
"description": "Low"
},
"createdAt": "2021-04-29T15:46:02Z",
"updatedAt": "2021-04-29T23:12:15Z",
"count": 2,
.
.
.
Pola acara berikut cocok dengan setiap peristiwa yang memiliki skor keparahan 1 dan hitungan 2.
{
"source": ["aws.macie"],
"detail-type": ["Macie Finding"],
"detail": {
"severity": {
"score": [1]
},
"count":[2]
}
}