Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AmazonEventBridgepola acara
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
DiEventBridge, dimungkinkan untuk membuat aturan yang dapat menyebabkanhigher-than-expectedbiaya 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, lihatPraktik terbaik saat mendefinisikan aturan Amazon EventBridgedanPraktik terbaik saat mendefinisikan AmazonEventBridgepola acara.
Video berikut membahas dasar-dasar pola acara:
Topik
- Membuat pola acara
- Contoh peristiwa dan pola peristiwa
- Mencocokkan nilai nol dan string kosong di AmazonEventBridgepola acara
- Array di AmazonEventBridgepola acara
- Pemfilteran konten di AmazonEventBridgepola acara
- Menguji pola acara menggunakanEventBridgeKotak pasir
- Praktik terbaik saat mendefinisikan AmazonEventBridgepola acara
Peristiwa berikut ini menunjukkan peristiwa AWS 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 menyediakan nilai untuk tiga bidang: bidang tingkat atas "source"
dan "detail-type"
, dan bidang "state"
di dalam bidang objek "detail"
. EventBridgemengabaikan 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, lihatTestEventPattern.
Mencocokkan nilai acara
Dalam pola peristiwa, nilai yang cocok adalah dalam array JSON, dikelilingi oleh tanda kurung siku (“[”, “]”) sehingga Anda dapat memberikan beberapa nilai. Sebagai contoh, untuk mencocokkan peristiwa dari Amazon EC2 atau AWS Fargate, Anda dapat menggunakan pola berikut, yang cocok dengan peristiwa di mana nilai untuk bidang "source"
adalah "aws.ec2"
maupun "aws.fargate"
.
{
"source": ["aws.ec2", "aws.fargate"]
}
Pertimbangan saat membuat pola acara
Berikut adalah beberapa hal yang perlu dipertimbangkan ketika membangun pola genap Anda:
EventBridgemengabaikan bidang jika tidak disertakan dalam pola acara. Efeknya adalah bahwa 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,EventBridgemenggunakan tepatcharacter-by-characterpencocokan tanpa case-folding atau normalisasi string lainnya.
Untuk angka,EventBridgemenggunakan representasi string. Sebagai contoh, 300, 300,0, dan 3,0e2 tidak dianggap sama.
Jika beberapa pola ditentukan untuk bidang JSON yang sama,EventBridgehanya menggunakan yang terakhir.
-
Sadarilah bahwa ketikaEventBridgemengkompilasi pola acara untuk digunakan, menggunakan dot (.) sebagai karakter bergabung.
Ini berartiEventBridgeakan memperlakukan pola acara 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 menjelaskan saat iniEventBridgeperilaku, dan tidak boleh diandalkan untuk tidak berubah.
-
Pola acara yang berisi kolom duplikat tidak valid. Jika sebuah pola berisi kolom duplikat,EventBridgehanya 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"] } }
danEventBridgememperlakukan 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 menjelaskan saat iniEventBridgeperilaku, dan tidak boleh diandalkan untuk tidak berubah.
Operasi perbandingan untuk digunakan dalam pola acara
Di bawah ini ringkasan semua operator perbandingan yang tersedia diEventBridge.
Operator perbandingan hanya bekerja pada node daun, dengan pengecualian$or
dananything-but
.
Perbandingan | Contoh | Sintaks aturan |
---|---|---|
Nol |
userId adalah null |
“userId”: [null] |
Kosong |
LastNamekosong |
"LastName": [""] |
Setara |
Namanya adalah “Alice” |
“Nama”: [“Alice”] |
Sama dengan (abaikan kasus) |
Namanya adalah “Alice” |
“Nama”: [{”equals-ignore-case“: “alice”}] |
dan |
Lokasi adalah “New York” dan Hari adalah “Senin” |
“Lokasi”: [“New York”], “Hari”: ["Senin"] |
Atau |
PaymentTypeadalah “Kredit” atau “Debit” |
“PaymentType“: [“Kredit”, “Debit"] |
Atau (beberapa bidang) |
Lokasi adalah “New York”, atau Hari adalah “Senin”. |
“$or”: [{“Lokasi”: [“New York”]}, {“Hari”: [“Senin”]}] |
Tidak |
Cuaca hanyalah “Hujan” |
“Weather”: [{“anything-but”: [“Hujan”]}] |
Numerik (sama dengan) |
Harga adalah 100 |
“Harga”: [{“numerik”: [“=”, 100]}] |
Numerik (rentang) |
Harga lebih dari 10, dan kurang dari atau sama dengan 20 |
“Harga”: [{“numerik”: [“>”, 10, “<=”, 20]}] |
Exists |
ProductNameada |
“ProductName“: [{“exists”: true}] |
Tidak ada |
ProductNametidak ada |
“ProductName“: [{“exists”: false}] |
Dimulai dengan |
Wilayah ada di AS |
|
Ends with |
FileNamediakhiri dengan ekstensi.png. |
“FileName“: [{“akhiran”: “.png”}] |
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]
}
}