AmazonEventBridgepola acara - Amazon EventBridge

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:

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

  • 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$ordananything-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] } }