View a markdown version of this page

Berlangganan acara di Bus Acara Kustom - Amazon EventBridge

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Berlangganan acara di Bus Acara Kustom

Pelanggan adalah salah satu sumber daya yang mengatakan acara mana yang Anda inginkan dan ke mana harus mengirimnya. Anda membuatnya denganCreateSubscriber, menamai bus, filter, dan satu target. Ini mengawasi bus itu, menyimpan peristiwa yang sesuai dengan filternya, secara opsional mengubah masing-masing, dan mengirimkannya ke tepat satu target. Untuk menggembirakan acara ke beberapa target, buat satu pelanggan untuk setiap target di bus yang sama.

EventBridge menerapkan satu pelanggan membuat atau menghapus pada satu waktu di bus tertentu, akun mana pun yang dipanggil. Bus kedua CreateSubscriber atau DeleteSubscriber di bus yang sama saat sedang berjalan gagalConcurrentModificationException; coba lagi. Kuota Bus Acara KustomOleh karena itu, tarif buat dan hapus berlaku per bus.

Memfilter peristiwa mana yang mencapai target

FilterConfigurationmemegang daftarFilters. Setiap filter memiliki Pattern sintaks pola dalam EventBridge peristiwa, dan satuScope. Anda dapat memiliki paling banyak satu filter per lingkup, dan EventBridge memberikan acara hanya jika cocok dengan setiap filter dalam daftar. Pelanggan tanpa FilterConfiguration menerima setiap acara di bus.

  • DATA: cocok dengan muatan. Tulis pola terhadap bentuk yang dijelaskan diStruktur acara: data, metadata, dan metadata sistem.

  • METADATA: cocok dengan pasangan kunci-nilai yang ditetapkan produsenPutRawEvents, hanya kecocokan tepat.

  • SYSTEM_METADATA: cocok dengan kum EventBridge pulan bidang, seperti aws:Source atauEventGroupId.

Untuk sintaks pola, aturan cakupan, dan contoh, lihatMemfilter acara untuk pelanggan.

Mengubah muatan

Transformer.TypeMemilih apa yang diterima target. Target universal tidak menggunakannya; lihatTarget universal untuk Bus Acara Kustom.

  • RAW, default. Muatan saja.

  • WITH_METADATA. Acara lengkap:Data,Metadata, danSystemMetadata.

  • JSONATA. Hasil ekspresi JSONata masukJsonataConfiguration.Expression, dibungkus dalam pembatas{% %}, dengan acara tersedia sebagai. $events

EventBridge memeriksa sintaks ekspresi saat Anda membuat pelanggan dan mengevaluasinya pada waktu pengiriman. Ekspresi yang melempar, atau yang tidak menghasilkan nilai, gagal dalam pengiriman peristiwa itu. Uji ekspresi terhadap peristiwa nyata sebelum Anda bergantung padanya. Untuk apa $events yang berlaku, fungsi tambahan, dan batasnya, lihatMengubah acara dengan JSONata.

Menyampaikan ke satu target

InvokeConfigurationmembawaTargetArn, RoleArn yang meng EventBridge asumsikan untuk memanggil target, dan paling banyak satu blok parameter yang cocok dengan tipe target. Sebagian besar nilai parameter menerima ekspresi JSONata, sehingga nilai dapat berasal dari peristiwa. Tabel berikut mencantumkan tipe target yang dipesan lebih dahulu dan blok parameternya; masing-masing memiliki halaman sendiri di Target untuk pelanggan Bus Acara Kustom bawahnya.

TargetBlok parameter
Antrean Amazon SQSSqsParameters
Fungsi lambdaLambdaParameters
Aliran KinesisKinesisParameters
Fungsi langkah mesin statusStepFunctionsParameters
Topik Amazon SNSSnsParameters
Titik akhir HTTP atau tujuan APIHttpParameters
Aliran FirehoseFirehoseParameters

Bus Acara Kustom atau Bus Acara Kustom - Klasik juga dapat menjadi target: atur bus ARN sebagaiTargetArn. Untuk target FIFO seperti antrian Amazon SQS FIFO, tetapkan pengidentifikasi deduplikasi target sendiri di blok parameter, misalnyaSqsParameters.MessageDeduplicationId, ke nilai per pesan yang diturunkan dari peristiwa dengan ekspresi JSONata. Konstanta membuat target membuang setiap pesan setelah yang pertama.

Target universal memanggil tindakan AWS API secara langsung, tanpa fungsi di antaranya. ARN-nya memiliki bentukarn:aws:events:::aws-sdk:service:apiAction, misalnyaarn:aws:events:::aws-sdk:dynamodb:putItem, dan menyimpan permintaan sebagai JSON atau sebagai ekspresi JSONata yang memproduksinya. UniversalTargetParameters.Input Untuk aturan penamaan, batching, dan perilaku kegagalan, lihatTarget universal untuk Bus Acara Kustom.

Saat Anda membuat pelanggan, EventBridge menyelesaikan jenis target dari ARN dan memeriksa tiga hal: bahwa blok parameter cocok dengan tipe target, bahwa ARN milik akun Anda, dan bahwa setiap ekspresi diurai. Apakah target ada, apakah peran dapat mencapainya, dan apakah API target menerima nilai diperiksa saat pengiriman, jadi konfirmasikan pengiriman pertama di target.

Percobaan ulang dan antrian surat mati

RetryPolicymenetapkan berapa lama EventBridge percobaan ulang pengiriman yang gagal, secara default 5 upaya dalam 300 detik, dan memberi OnFailureConfiguration.Arn nama antrian Amazon SQS yang menerima catatan untuk setiap peristiwa yang menghabiskan percobaan ulang. Atur keduanya saat Anda membuat pelanggan. Untuk batasan, format rekaman, dan cara mengulang, lihatKebijakan coba ulang dan antrian surat mati.

Peran pengiriman

Peran RoleArn harus milik akun Anda dan mempercayai prinsi events.amazonaws.com pal layanan. Penelep iam:PassRole on Anda membutuhkan peran untuk membuat pelanggan, atau EventBridge menolak permintaan sebelum memeriksa ARN target. Kebijakan izin peran memerlukan dua hibah.

  • Tindakan yang dibutuhkan target, misalnya sqs:SendMessage pada antrian, lambda:InvokeFunction pada fungsi, sns:Publish pada topik, atau kinesis:PutRecords pada aliran.

  • sqs:SendMessagedi antrian huruf mati di. OnFailureConfiguration.Arn Tanpa itu, pengiriman yang gagal tidak memiliki tempat untuk merekam dirinya sendiri, dan peristiwa itu hilang tanpa sinyal.

Kebijakan kepercayaan berikut memungkinkan EventBridge untuk mengambil peran.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Kebijakan izin berikut mengirimkan ke antrian Amazon SQS dan huruf mati ke antrian kedua.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "InvokeTheTarget", "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-1:111122223333:large-orders" }, { "Sid": "WriteToTheDeadLetterQueue", "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-1:111122223333:large-orders-dlq" } ] }

Contoh: mengirimkan pesanan besar ke antrian

Perintah berikut membuat pelanggan yang mengirimkan pesanan lebih dari 500 ke antrian Amazon SQS, untuk acara yang diterbitkan denganPutEvents, dan mengirimkan kegagalan ke antrian surat mati.

aws eventsv2 create-subscriber \ --name large-orders \ --event-bus-arn arn:aws:events:us-east-1:111122223333:event-busv2/orders/EXAMPLE1234567890abcdef \ --filter-configuration '{ "Filters": [ { "Scope": "DATA", "Pattern": "{\"detail\":{\"total\":[{\"numeric\":[\">\",500]}]}}" } ] }' \ --invoke-configuration '{ "TargetArn": "arn:aws:sqs:us-east-1:111122223333:large-orders", "RoleArn": "arn:aws:iam::111122223333:role/EventBusDeliveryRole" }' \ --on-failure-configuration '{ "Arn": "arn:aws:sqs:us-east-1:111122223333:large-orders-dlq" }'

Pemecahan masalah: Anda menerbitkan dan tidak ada yang sampai pada target

Tanggapan publikasi hanya mengatakan bahwa bus menerima dan menyimpan acara; itu tidak pernah mengkonfirmasi pengiriman. Kerjakan pemeriksaan berikut secara berurutan.

Gejala

Panggilan publikasi mengembalikan HTTP 200 tanpa entri yang gagal, dan target tidak menerima apa pun setelah beberapa menit.

Penyebab

Salah satu dari lima hal, dalam urutan frekuensi: pengiriman masih dicoba ulang; pelanggan dicabut STOPPED atau dicabut; pelanggan StartingPosition adalah LATEST dan acara dipublikasikan sebelum pelanggan ada; filter ditulis untuk API publikasi lainnya dan tidak cocok dengan apa pun; atau peran pengiriman tidak dapat mencapai target atau antrian surat mati. TargetInvocationsmemberitahu Anda bagian mana dari masalah yang Anda miliki. Poin data aktif TargetInvocations tanpa menyala EventsDelivered berarti pengiriman dicoba dan gagal. Tidak ada titik data aktif TargetInvocations saat mem FilterEvaluated ilikinya berarti tidak ada pengiriman yang dicoba; periksa apakah pelanggan adaRUNNING, dan periksa. EventTransformationFailures

Solusi
  1. Baca pelanggan. Stateharus RUNNING dan Revoked harus absen; itu hanya muncul ketika benar. Catatan StartingPosition dan filter.

    aws eventsv2 describe-subscriber \ --subscriber-arn arn:aws:events:us-east-1:111122223333:subscriber/large-orders/EXAMPLE1234567890abcdef
  2. Baca metrik pelanggan diAWS/EventsV2. FilterEvaluatedpada nol berarti tidak ada peristiwa yang mencapai pelanggan ini: produsen menerbitkan ke bus lain, atau sebelum pelanggan ada bersamaLATEST. FilterEvaluateddi atas nol dengan FilterMatched nol berarti filter tidak cocok; lihatStruktur acara: data, metadata, dan metadata sistem. Ketika FilterMatched memiliki titik data dan EventsDelivered tidak, pengiriman gagal, dan metrik mana yang mencatat hasilnya tergantung pada pelanggan: EventsDropped ketika tidak ada antrian huruf mati yang dikonfigurasi, OnFailureDestinationDelivered ketika acara mencapai antrian, dan OnFailureDestinationFailed kapan tidak.

  3. Nyalakan log dan reproduksi. Set LogConfiguration.Level el IncludePayload ke INFO dan keFULL, kaitkan pengiriman log, publikasikan lagi, dan baca EVENT_DELIVERY_ATTEMPT catatan. Masing-masing membawa kode kesalahan dan pesan target sendiri, dandetails.target_input, yang merupakan apa yang EventBridge dikirim daripada apa yang ingin Anda kirim. Lihat Pengamatan untuk Bus Peristiwa Kustom: metrik, log, dan CloudTrail.

  4. Jika filter adalah tersangka, tambahkan pelanggan diagnostik di bus yang sama tanpa filter Transformer.TypeWITH_METADATA, dan antrian yang Anda miliki sebagai target. Ini memberikan setiap acara persis seperti yang EventBridge dilihatnya, sebagaiData,Metadata, danSystemMetadata. Kemudian sederhanakan filter Anda satu kondisi pada satu waktu; kondisi terakhir yang Anda hapus adalah penyebabnya.

Verifikasi

Publikasikan satu acara yang harus cocok dan yang tidak seharusnya. Yang pertama tiba di target dan EventsDelivered bertambah satu; yang kedua tidak tiba dan ber FilterEvaluated tambah sementara FilterMatched tidak.

catatan

Metrik pelanggan tersedia untuk pemilik bus dan pemilik pelanggan; lognya hanya dikirimkan ke pemilik pelanggan.