Pola EventBridge acara Amazon - Amazon EventBridge

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:

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, dan null.

  • 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”

"Location": [ "New York" ], "Day": ["Monday"]

Apa saja-tapi Negara adalah nilai apa pun selain “menginisialisasi”.

"state": [ { "anything-but": "initializing" } ]

Apa saja-tapi (dimulai dengan)

Wilayah tidak ada di AS.

"Region": [ { "anything-but": {"prefix": "us-" } } ]

Apa saja-tapi (berakhir dengan)

FileName tidak diakhiri dengan ekstensi.png.

"FileName": [ { "anything-but": { "suffix": ".png" } } ]

Apa pun-tapi (abaikan kasus)

Status adalah nilai apa pun selain “inisialisasi” atau variasi casing lainnya, seperti “INISIALISASI”.

"state": : [{ "anything-but": { "equals-ignore-case": "initializing" }}]}

Dimulai dengan

Wilayah ada di AS.

"Region": [ {"prefix": "us-" } ]

Dimulai dengan (abaikan kasus)

Nama layanan dimulai dengan huruf “eventb”, terlepas dari kasusnya.

{"service" : [{ "prefix": { "equals-ignore-case": "eventb" }}]}

Kosong

LastName kosong.

"LastName": [""]

Setara

Namanya adalah “Alice”

"Name": [ "Alice" ]

Sama dengan (abaikan kasus)

Namanya adalah “Alice”

"Name": [ { "equals-ignore-case": "alice" } ]

Berakhir dengan

FileName diakhiri dengan ekstensi.png

"FileName": [ { "suffix": ".png" } ]

Berakhir dengan (abaikan kasus)

Nama layanan diakhiri dengan huruf “tbridge”, atau variasi casing lainnya, seperti “TBRIDGE”.

{"service" : [{ "suffix": { "equals-ignore-case": "tBridge" }}]}

Ada

ProductName ada

"ProductName": [ { "exists": true } ]

Tidak ada

ProductName tidak ada

"ProductName": [ { "exists": false } ]

Tidak

Cuaca sama sekali tidak “Hujan”

"Weather": [ { "anything-but": [ "Raining" ] } ]

Null

UserID adalah kosong

"UserID": [ null ]

Numerik (sama dengan)

Harga 100

"Price": [ { "numeric": [ "=", 100 ] } ]

Numerik (rentang)

Harga lebih dari 10, dan kurang dari atau sama dengan 20

"Price": [ { "numeric": [ ">", 10, "<=", 20 ] } ]

Atau

PaymentType adalah “Kredit” atau “Debit”

"PaymentType": [ "Credit", "Debit"]

Atau (beberapa bidang)

Lokasi adalah “New York”, atau Hari adalah “Senin”.

"$or": [ { "Location": [ "New York" ] }, { "Day": [ "Monday" ] } ]

Wildcard

File apa pun dengan ekstensi.png, terletak di dalam folder “dir”

"FileName": [ { "wildcard": "dir/*.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] } }