Kebijakan coba lagi peristiwa dan menggunakan antrean surat mati - Amazon EventBridge

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

Kebijakan coba lagi peristiwa dan menggunakan antrean surat mati

Terkadang peristiwa tidak berhasil dikirim ke target yang ditentukan dalam aturan. Ini dapat terjadi ketika, misalnya, sumber daya target tidak tersedia, ketika tidak EventBridge memiliki izin ke sumber daya target, atau karena kondisi jaringan. Ketika suatu peristiwa tidak berhasil dikirim ke target karena kesalahan yang dapat diambil, EventBridge coba lagi mengirim acara tersebut. Anda mengatur panjang waktu mencoba, dan jumlah upaya coba lagi dalam pengaturan Kebijakan coba lagi untuk target. Secara default, EventBridge coba lagi mengirim acara selama 24 jam dan hingga 185 kali dengan mundur dan jitter eksponensial, atau penundaan acak. Jika suatu peristiwa tidak dikirimkan setelah semua upaya percobaan ulang habis, acara dibatalkan dan EventBridge tidak terus memprosesnya. 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 EventBridge digunakan 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.

Kesalahan peristiwa ditangani dengan cara yang berbeda. Beberapa peristiwa dibatalkan atau dikirim ke DLQ tanpa upaya mencoba lagi. Sebagai contoh, untuk kesalahan yang dihasilkan dari izin yang hilang ke target, atau sumber daya target yang tidak lagi ada, semua upaya coba lagi gagal sampai tindakan yang diambil untuk menyelesaikan masalah mendasar. Daripada mencoba lagi, EventBridge kirimkan acara ini langsung ke DLQ, jika Anda memilikinya.

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

Setiap pesan di DLQ Anda akan menyertakan atribut kustom berikut:

  • RULE_ARN

  • TARGET_ARN

  • ERROR_CODE

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

    • CONNECTION_FAILURE

    • CROSS_ACCOUNT_INGESTION_FAILED

    • CROSS_REGION_INGESTION_FAILED

    • ERROR_FROM_TARGET

    • EVENTS_IN_BATCH_REQUEST_REJECTED

    • 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

    • 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 Lagi yang Habis, ARN Aturan, Upaya Coba Lagi, dan ARN Target. Anda dapat menggunakan nilai-nilai ini untuk mengidentifikasi peristiwa dan penyebab kegagalan.

  • Izin untuk DLQs di akun yang sama:

  • 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

Saat Anda mengonfigurasi DLQ untuk target aturan, EventBridge mengirimkan peristiwa dengan pemanggilan gagal ke antrean Amazon SQS yang dipilih. Agar berhasil mengirimkan acara ke antrian, EventBridge harus memiliki izin untuk melakukannya. Saat Anda mengonfigurasi target untuk aturan dan memilih DLQ menggunakan EventBridge konsol, izin akan ditambahkan secara otomatis. Jika Anda membuat aturan menggunakan API, atau menggunakan antrean yang ada di AWS akun lain, Anda harus secara manual membuat kebijakan berbasis sumber daya yang memberikan izin yang diperlukan dan kemudian melampirkannya ke antrian.

Kebijakan berbasis sumber daya berikut menunjukkan cara memberikan izin yang diperlukan untuk mengirim pesan peristiwa ke antrean EventBridge 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 akun 123456789012. AWS ConditionPernyataan tersebut hanya mengizinkan permintaan yang berasal dari aturan bernama "MyTestRule" yang dibuat di Wilayah us-west-2 di akun 123456789012. AWS

{ "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" } } }

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 lebih lanjut lihatIzin 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.

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