Memulai: Buat aturan bus 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.

Memulai: Buat aturan bus EventBridge acara Amazon

Untuk membiasakan diri dengan EventBridge aturan dan kemampuannya, kita akan menggunakan AWS CloudFormation template untuk menyiapkan aturan bus acara dan komponen terkait, termasuk sumber peristiwa, pola acara, dan target. Kemudian kita dapat mengeksplorasi cara kerja aturan untuk memilih acara yang Anda inginkan.

Template membuat aturan pada bus acara default. Aturan ini menggunakan pola peristiwa untuk memfilter peristiwa dari bucket Amazon S3 tertentu. Aturan mengirimkan peristiwa yang cocok ke target yang ditentukan, topik Amazon SNS. Setiap kali objek dibuat di bucket, aturan mengirimkan pemberitahuan ke topik, yang kemudian mengirim email ke alamat email yang Anda tentukan.

Sumber daya yang digunakan terdiri dari:

  • Bucket Amazon S3 dengan EventBridge notifikasi diaktifkan untuk bertindak sebagai sumber acara.

  • Topik Amazon SNS dan langganan email sebagai target notifikasi.

  • Peran eksekusi yang memberikan izin EventBridge yang diperlukan untuk mempublikasikan ke topik Amazon SNS.

  • Aturan itu sendiri, yang:

    • Mendefinisikan pola peristiwa yang hanya cocok dengan Object Created peristiwa dari bucket Amazon S3 tertentu.

    • Menentukan topik Amazon SNS sebagai target yang memberikan acara EventBridge yang cocok.

Untuk detail teknis spesifik dari template, lihatRincian template.

Acara Amazon S3 dicocokkan dengan pola acara aturan, dan dikirim ke topik SNS jika cocok.

Sebelum Anda mulai

Untuk menerima peristiwa Amazon S3 di EventBridge, Anda harus mengaktifkan EventBridge dalam Amazon S3. Topik ini berasumsi EventBridge diaktifkan. Untuk informasi selengkapnya, lihat Mengaktifkan EventBridge di Panduan Pengguna Amazon S3.

Membuat aturan menggunakan CloudFormation

Untuk membuat aturan dan sumber daya yang terkait, kita akan membuat CloudFormation template dan menggunakannya untuk membuat tumpukan yang berisi aturan sampel, lengkap dengan sumber dan target.

penting

Anda akan ditagih untuk sumber daya Amazon yang digunakan jika Anda membuat tumpukan dari template ini.

Pertama, buat CloudFormation template.

  1. Di Templat bagian tersebut, klik ikon salin pada tab JSON atau YAMAL untuk menyalin konten templat.

  2. Tempelkan konten template ke file baru.

  3. Simpan file secara lokal.

Selanjutnya, gunakan template yang telah Anda simpan untuk menyediakan CloudFormation tumpukan.

Buat tumpukan menggunakan CloudFormation (konsol)
  1. Buka CloudFormation konsol di https://console.aws.amazon.com/cloudformation/.

  2. Pada halaman Stacks, dari menu Create stack, pilih dengan sumber daya baru (standar).

  3. Tentukan template:

    1. Di bawah Prasyarat, pilih Pilih templat yang ada.

    2. Di bawah Tentukan templat, pilih Unggah file templat.

    3. Pilih Pilih file, navigasikan ke file template, dan pilih.

    4. Pilih Berikutnya.

  4. Tentukan detail tumpukan:

    1. Masukkan nama tumpukan.

    2. Untuk parameter, terima nilai default untuk BucketName, SNSTopicDisplayName, SNSTopicNama, dan RuleName, atau masukkan nilai Anda sendiri.

    3. Untuk EmailAddress, masukkan alamat email yang valid tempat Anda ingin menerima notifikasi.

    4. Pilih Berikutnya.

  5. Konfigurasikan opsi tumpukan:

    1. Di bawah Opsi kegagalan tumpukan, pilih Hapus semua sumber daya yang baru dibuat.

      catatan

      Memilih opsi ini mencegah Anda dari kemungkinan ditagih untuk sumber daya yang kebijakan penghapusan menentukan mereka dipertahankan bahkan jika pembuatan tumpukan gagal. Untuk informasi selengkapnya, lihat DeletionPolicyatribut di Panduan CloudFormation Pengguna.

    2. Terima semua nilai default lainnya.

    3. Di bawah Kemampuan, centang kotak untuk mengetahui bahwa CloudFormation mungkin membuat sumber daya IAM di akun Anda.

    4. Pilih Berikutnya.

  6. Tinjau detail tumpukan dan pilih Kirim.

Buat tumpukan menggunakan CloudFormation (AWS CLI)

Anda juga dapat menggunakan AWS CLI untuk membuat tumpukan.

  • Gunakan perintah create-stack.

    • Terima nilai parameter template default, tentukan nama tumpukan dan alamat email Anda. Gunakan template-body parameter untuk meneruskan konten template, atau template-url untuk menentukan lokasi URL.

      aws cloudformation create-stack \ --stack-name eventbridge-rule-tutorial \ --template-body template-contents \ --parameters ParameterKey=EmailAddress,ParameterValue=your.email@example.com \ --capabilities CAPABILITY_IAM
    • Ganti nilai default dari satu atau beberapa parameter template. Misalnya:

      aws cloudformation create-stack \ --stack-name eventbridge-rule-tutorial \ ----template-body template-contents \ --parameters \ ParameterKey=EmailAddress,ParameterValue=your.email@example.com \ ParameterKey=BucketName,ParameterValue=my-custom-bucket-name \ ParameterKey=RuleName,ParameterValue=my-custom-rule-name \ --capabilities CAPABILITY_IAM

CloudFormation menciptakan tumpukan. Setelah pembuatan tumpukan selesai, sumber daya tumpukan siap digunakan. Anda dapat menggunakan tab Sumber Daya di halaman detail tumpukan untuk melihat sumber daya yang disediakan di akun Anda.

Setelah tumpukan dibuat, Anda akan menerima email konfirmasi berlangganan di alamat yang Anda berikan. Anda harus mengonfirmasi langganan ini untuk menerima pemberitahuan.

Menjelajahi kemampuan aturan

Setelah aturan dibuat, Anda dapat menggunakan EventBridge konsol untuk mengamati operasi aturan dan menguji pengiriman acara.

  1. Buka EventBridge konsol di https://console.aws.amazon.com/events/rumah? #/aturan.

  2. Pilih aturan yang Anda buat.

    Pada halaman detail aturan, bagian Rincian aturan menampilkan informasi tentang aturan, termasuk pola acara dan targetnya.

Memeriksa pola acara

Sebelum kita menguji operasi aturan, mari kita periksa pola acara yang telah kita tentukan untuk mengontrol peristiwa mana yang dikirim ke target. Aturan hanya akan mengirim peristiwa yang sesuai dengan kriteria pola ke target. Dalam hal ini, kami hanya ingin acara yang dihasilkan Amazon S3 saat objek dibuat di bucket khusus kami.

  • Pada halaman detail aturan, di bawah Pola acara, Anda dapat melihat pola acara hanya memilih peristiwa di mana:

    • Sumbernya adalah layanan Amazon S3 () aws.s3

    • Tipe detailnya adalah Object Created

    • Nama bucket cocok dengan nama bucket yang kami buat

    { "source": ["aws.s3"], "detail-type": ["Object Created"], "detail": { "bucket": { "name": ["eventbridge-rule-example-source"] } } }

Mengirim acara melalui aturan

Selanjutnya, kami akan menghasilkan peristiwa di sumber acara untuk menguji bahwa pencocokan aturan dan pengiriman beroperasi dengan benar. Untuk melakukan ini, kita akan mengunggah objek ke bucket S3 yang kita tentukan sebagai sumber acara.

  1. Buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/

  2. Dalam daftar Bucket, pilih bucket yang Anda buat dengan template (nama default:eventbridge-rule-example-source).

  3. Pilih Unggah.

  4. Unggah file pengujian untuk menghasilkan Object Created acara:

    1. Pilih Tambahkan file dan pilih file dari komputer Anda.

    2. Pilih Unggah.

  5. Tunggu beberapa saat hingga acara diproses oleh EventBridge dan hingga notifikasi dikirim.

  6. Periksa email Anda untuk pemberitahuan tentang acara pembuatan objek. Email akan berisi detail tentang acara S3, termasuk nama bucket dan kunci objek.

Melihat metrik aturan

Anda dapat melihat metrik untuk aturan Anda untuk mengonfirmasi bahwa peristiwa sedang diproses dengan benar.

  1. Di EventBridge konsol, pilih aturan Anda.

  2. Pilih tab Metrik.

  3. Anda dapat melihat metrik seperti:

    • Doa: berapa kali aturan dipicu.

    • TriggeredRules: jumlah aturan yang dipicu oleh peristiwa yang cocok.

Bersihkan: menghapus sumber daya

Sebagai langkah terakhir, kami akan menghapus tumpukan dan sumber daya yang dikandungnya.

penting

Anda akan ditagih untuk sumber daya Amazon yang terkandung dalam tumpukan selama itu ada.

  1. Buka CloudFormation konsol di https://console.aws.amazon.com/cloudformation/.

  2. Pada halaman Stacks, pilih tumpukan yang dibuat dari templat, lalu pilih Hapus, lalu konfirmasikan Hapus.

    CloudFormation memulai penghapusan tumpukan dan semua sumber daya yang disertakan.

CloudFormation rincian template

Template ini membuat sumber daya dan memberikan izin di akun Anda.

Sumber daya

CloudFormation Template untuk tutorial ini akan membuat sumber daya berikut di akun Anda:

penting

Anda akan ditagih untuk sumber daya Amazon yang digunakan jika Anda membuat tumpukan dari template ini.

  • AWS::S3::Bucket: Bucket Amazon S3 yang bertindak sebagai sumber acara untuk aturan tersebut, dengan EventBridge notifikasi diaktifkan.

  • AWS::SNS::Topic: Topik Amazon SNS yang bertindak sebagai target untuk acara yang cocok dengan aturan.

  • AWS::SNS::Subscription: Langganan email ke topik SNS.

  • AWS::IAM::Role: Peran eksekusi IAM yang memberikan izin ke EventBridge layanan di akun Anda.

  • AWS::Events::Rule: Aturan yang menghubungkan peristiwa bucket Amazon S3 ke topik Amazon SNS.

Izin

Template mencakup AWS::IAM::Role sumber daya yang mewakili peran eksekusi. Peran ini memberikan EventBridge layanan (events.amazonaws.com) izin berikut di akun Anda.

Izin berikut diberikan melalui kebijakan AmazonSNSFullAccess terkelola:

  • Akses penuh ke sumber daya dan operasi Amazon SNS

CloudFormation Template

Simpan kode YAMAL berikut sebagai file terpisah untuk digunakan sebagai CloudFormation template untuk tutorial ini.

YAML
AWSTemplateFormatVersion: '2010-09-09' Description: '[AWSDocs] EventBridge: event-bus-rule-get-started' Parameters: BucketName: Type: String Description: Name of the S3 bucket Default: eventbridge-rule-example-source SNSTopicDisplayName: Type: String Description: Display name for the SNS topic Default: eventbridge-rule-example-target SNSTopicName: Type: String Description: Name for the SNS topic Default: eventbridge-rule-example-target RuleName: Type: String Description: Name for the EventBridge rule Default: eventbridge-rule-example EmailAddress: Type: String Description: Email address to receive notifications AllowedPattern: '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+[a-zA-Z0-9-]*(\\.[a-zA-Z0-9-]+)*$' Resources: # S3 Bucket with notifications enabled S3Bucket: Type: AWS::S3::Bucket Properties: BucketName: !Ref BucketName NotificationConfiguration: EventBridgeConfiguration: EventBridgeEnabled: true # SNS Topic for email notifications SNSTopic: Type: AWS::SNS::Topic Properties: DisplayName: !Ref SNSTopicDisplayName TopicName: !Ref SNSTopicName # SNS Subscription for email SNSSubscription: Type: AWS::SNS::Subscription Properties: Protocol: email Endpoint: !Ref EmailAddress TopicArn: !Ref SNSTopic # EventBridge Rule to match S3 object creation events and send them to the SNS topic EventBridgeRule: Type: AWS::Events::Rule Properties: Name: !Ref RuleName Description: "Rule to detect S3 object creation and send email notification" EventPattern: source: - aws.s3 detail-type: - "Object Created" detail: bucket: name: - !Ref BucketName State: ENABLED Targets: - Id: SendToSNS Arn: !Ref SNSTopic RoleArn: !GetAtt EventBridgeRole.Arn # IAM Role for EventBridge to publish to SNS EventBridgeRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: events.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonSNSFullAccess Outputs: BucketName: Description: Name of the S3 bucket Value: !Ref S3Bucket SNSTopicARN: Description: ARN of the SNS topic Value: !Ref SNSTopic EmailSubscription: Description: Email address for notifications Value: !Ref EmailAddress
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "[AWSDocs] EventBridge: event-bus-rule-get-started", "Parameters": { "BucketName": { "Type": "String", "Description": "Name of the S3 bucket", "Default": "eventbridge-rule-example-source" }, "SNSTopicDisplayName": { "Type": "String", "Description": "Display name for the SNS topic", "Default": "eventbridge-rule-example-target" }, "SNSTopicName": { "Type": "String", "Description": "Name for the SNS topic", "Default": "eventbridge-rule-example-target" }, "RuleName": { "Type": "String", "Description": "Name for the EventBridge rule", "Default": "eventbridge-rule-example" }, "EmailAddress": { "Type": "String", "Description": "Email address to receive notifications", "AllowedPattern": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+[a-zA-Z0-9-]*(\\.[a-zA-Z0-9-]+)*$" } }, "Resources": { "S3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "BucketName": { "Ref": "BucketName" }, "NotificationConfiguration": { "EventBridgeConfiguration": { "EventBridgeEnabled": true } } } }, "SNSTopic": { "Type": "AWS::SNS::Topic", "Properties": { "DisplayName": { "Ref": "SNSTopicDisplayName" }, "TopicName": { "Ref": "SNSTopicName" } } }, "SNSSubscription": { "Type": "AWS::SNS::Subscription", "Properties": { "Protocol": "email", "Endpoint": { "Ref": "EmailAddress" }, "TopicArn": { "Ref": "SNSTopic" } } }, "EventBridgeRule": { "Type": "AWS::Events::Rule", "Properties": { "Name": { "Ref": "RuleName" }, "Description": "Rule to detect S3 object creation and send email notification", "EventPattern": { "source": [ "aws.s3" ], "detail-type": [ "Object Created" ], "detail": { "bucket": { "name": [ { "Ref": "BucketName" } ] } } }, "State": "ENABLED", "Targets": [ { "Id": "SendToSNS", "Arn": { "Ref": "SNSTopic" }, "RoleArn": { "Fn::GetAtt": [ "EventBridgeRole", "Arn" ] } } ] } }, "EventBridgeRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }, "ManagedPolicyArns": [ "arn:aws:iam::aws:policy/AmazonSNSFullAccess" ] } } }, "Outputs": { "BucketName": { "Description": "Name of the S3 bucket", "Value": { "Ref": "S3Bucket" } }, "SNSTopicARN": { "Description": "ARN of the SNS topic", "Value": { "Ref": "SNSTopic" } }, "EmailSubscription": { "Description": "Email address for notifications", "Value": { "Ref": "EmailAddress" } } } }