View a markdown version of this page

Menggunakan antrian surat mati untuk memproses peristiwa yang tidak terkirim di EventBridge - Amazon EventBridge

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

Menggunakan antrian surat mati untuk memproses peristiwa yang tidak terkirim di EventBridge

Untuk menghindari kehilangan peristiwa setelah gagal dikirim ke target, Anda dapat mengkonfigurasi antrean surat mati (DLQ) dan mengirim semua peristiwa gagal untuk diproses kemudian.

EventBridge DLQ adalah antrian Amazon SQS standar yang digunakan EventBridge untuk menyimpan peristiwa yang tidak berhasil dikirim ke target. Ketika Anda membuat aturan dan menambahkan target, Anda dapat memilih menggunakan DLQ atau tidak. Bila Anda mengonfigurasi DLQ, Anda dapat mempertahankan setiap peristiwa yang tidak berhasil dikirim. Kemudian Anda dapat menyelesaikan masalah yang mengakibatkan pengiriman peristiwa gagal dan memproses peristiwa di lain waktu.

Saat Anda mengonfigurasi DLQ untuk target aturan, EventBridge mengirimkan peristiwa dengan pemanggilan gagal ke antrian Amazon SQS yang dipilih.

Kesalahan peristiwa ditangani dengan cara yang berbeda. Beberapa peristiwa dibatalkan atau dikirim ke DLQ tanpa upaya mencoba lagi. Misalnya, untuk kesalahan akibat hilangnya izin ke target, sumber daya target yang tidak ada lagi, atau target yang tidak dapat ditemukan karena alamat yang tidak valid atau kegagalan pencarian DNS, upaya percobaan ulang tidak akan terjadi sampai tindakan diambil untuk menyelesaikan masalah yang mendasarinya. EventBridge mengirimkan peristiwa ini langsung ke DLQ target, jika Anda telah menentukannya.

Ketika pengiriman acara gagal, EventBridge menerbitkan peristiwa ke CloudWatch metrik Amazon yang menunjukkan bahwa target invocation gagal. Jika Anda menggunakan DLQ, metrik tambahan dikirim ke CloudWatch termasuk InvocationsSentToDLQ danInvocationsFailedToBeSentToDLQ.

Anda juga dapat menentukan DLQ untuk bus acara, jika Anda menggunakannya AWS KMS kunci yang dikelola pelanggan untuk mengenkripsi acara saat istirahat. Untuk informasi selengkapnya, lihat Menggunakan antrian huruf mati untuk menangkap kesalahan peristiwa terenkripsi di EventBridge.

Setiap pesan di DLQ Anda akan menyertakan atribut khusus berikut:

  • RULE_ARN

  • TARGET_ARN

  • ERROR_CODE

    Berikut ini adalah contoh kode kesalahan yang dapat dikembalikan oleh DLQ:

    • ACTION_DECRYPTION_FAILURE

    • CONNECTION_FAILURE

    • CROSS_ACCOUNT_INGESTION_FAILED

    • CROSS_REGION_INGESTION_FAILED

    • ERROR_FROM_TARGET

    • EVENT_DECRYPTION_FAILURE

    • EVENT_ENCRYPTION_FAILURE

    • EVENTS_IN_BATCH_REQUEST_REJECTED

    • FAILED_TO_ASSUME_ROLE

    • INTERNAL_ERROR

    • INVALID_JSON

    • INVALID_PARAMETER

    • NO_PERMISSIONS

    • NO_RESOURCE

    • RESOURCE_ALREADY_EXISTS

    • RESOURCE_LIMIT_EXCEEDED

    • RESOURCE_MODIFICATION_COLLISION

    • RULE_DECRYPTION_FAILURE

    • SDK_CLIENT_ERROR

    • THIRD_ACCOUNT_HOP_DETECTED

    • THIRD_REGION_HOP_DETECTED

    • THROTTLING

    • TIMEOUT

    • TRANSIENT_ASSUME_ROLE

    • UNKNOWN

  • ERROR_MESSAGE

  • EXHAUSTED_RETRY_CONDITION

    Kondisi berikut dapat dikembalikan:

    • MaximumRetryAttempts

    • MaximumEventAgeInSeconds

  • RETRY_ATTEMPTS

Video berikut membahas pengaturan DLQ:

Pertimbangan untuk menggunakan antrean surat mati

Pertimbangkan hal berikut saat mengonfigurasi DLQ untuk EventBridge.

  • Hanya antrean standar yang didukung. Anda tidak dapat menggunakan antrian FIFO untuk DLQ di. EventBridge

  • EventBridge menyertakan metadata peristiwa dan atribut pesan dalam pesan, termasuk: Kode Kesalahan, Pesan Kesalahan, Kondisi Coba Ulang yang Habis, Aturan ARN, Upaya Coba Ulang, dan ARN Target. Anda dapat menggunakan nilai-nilai ini untuk mengidentifikasi peristiwa dan penyebab kegagalan.

  • Izin untuk DLQs di akun yang sama:

    • Jika Anda menambahkan target ke aturan menggunakan konsol, dan Anda memilih antrian Amazon SQS di akun yang sama, kebijakan Menggunakan kebijakan berbasis sumber daya untuk Amazon EventBridge berbasis sumber daya yang memberikan EventBridge akses ke antrian akan dilampirkan ke antrian untuk Anda.

    • Jika Anda menggunakan PutTargets operasi EventBridge API untuk menambahkan atau memperbarui target untuk aturan, dan Anda memilih antrian Amazon SQS di akun yang sama, Anda harus memberikan izin secara manual ke antrian yang dipilih. Untuk mempelajari selengkapnya, lihat Memberikan izin untuk antrean surat mati.

  • Izin untuk menggunakan antrian Amazon SQS dari akun yang berbeda AWS .

    • Jika Anda membuat aturan dari konsol tersebut, antrean dari akun lain tidak ditampilkan untuk Anda pilih. Anda harus menyediakan ARN untuk antrean di akun lain, dan kemudian secara manual melampirkan kebijakan berbasis sumber daya untuk memberikan izin untuk antrean. Untuk pelajari selengkapnya, lihat Memberikan izin untuk antrean surat mati.

    • Jika Anda membuat aturan dengan menggunakan API, Anda harus secara manual melampirkan kebijakan berbasis sumber daya untuk antrean SQS di akun lain yang digunakan sebagai antrean surat mati. Untuk pelajari selengkapnya, lihat Memberikan izin untuk antrean surat mati.

  • Antrean Amazon SQS yang Anda gunakan harus berada di Wilayah yang sama di mana Anda membuat aturan.

Memberikan izin untuk antrean surat mati

Agar berhasil mengirimkan acara ke antrian, EventBridge harus memiliki izin untuk melakukannya. Saat Anda menentukan DLQ menggunakan EventBridge konsol, izin ditambahkan secara otomatis. Hal ini mencakup:

Jika Anda menentukan DLQ menggunakan API, atau menggunakan antrian yang ada di AWS akun lain, Anda harus membuat kebijakan berbasis sumber daya secara manual yang memberikan izin yang diperlukan dan kemudian melampirkannya ke antrian.

Contoh izin antrian huruf mati target

Kebijakan berbasis sumber daya berikut menunjukkan cara memberikan izin yang diperlukan untuk mengirim pesan acara EventBridge ke antrian Amazon SQS. Contoh kebijakan memberikan izin EventBridge layanan untuk menggunakan SendMessage operasi untuk mengirim pesan ke antrian bernama "MyEventDLQ”. Antrian harus berada di Wilayah us-west-2 di AWS akun 123456789012. Per Condition nyataan ini hanya mengizinkan permintaan yang berasal dari aturan bernama "MyTestRule" yang dibuat di Wilayah us-west-2 di AWS akun 123456789012.

{ "Sid": "Dead-letter queue permissions", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-west-2:123456789012:MyEventDLQ", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:events:us-west-2:123456789012:rule/MyTestRule" } } }

Contoh izin antrian huruf mati bus acara

Kebijakan berbasis sumber daya berikut menunjukkan cara memberikan izin yang diperlukan saat menentukan DLQ untuk bus acara. Dalam hal ini, aws:SourceArn menentukan ARN bus acara yang mengirim peristiwa ke DLQ. Di sini sekali lagi dalam contoh ini, antrian harus berada di Wilayah yang sama dengan bus acara.

{ "Sid": "Dead-letter queue permissions", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:region:account-id:queue-name", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:events:region:account-id:event-bus/event-bus-arn" } } }

Untuk melampirkan kebijakan ke antrean, gunakan konsol Amazon SQS, buka antrean, lalu pilih Kebijakan akses dan edit kebijakan. Anda juga dapat menggunakan AWS CLI. Untuk mempelajari selengkapnya, lihat Izin Amazon SQS.

Bagaimana cara mengirim ulang peristiwa antrean surat mati

Anda dapat memindahkan pesan dari DLQ dengan dua cara:

  • Hindari menulis logika konsumen Amazon SQS – Atur DLQ Anda sebagai sumber peristiwa untuk fungsi Lambda untuk menguras DLQ Anda.

  • Tulis logika konsumen Amazon SQS — Gunakan Amazon SQS API, AWS SDK, atau AWS CLI untuk menulis logika konsumen khusus untuk polling, pemrosesan, dan penghapusan pesan di DLQ.