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
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:
Topik
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:
-
Jika Anda menambahkan target ke aturan menggunakan konsol, dan Anda memilih antrean Amazon SQS di akun yang sama, kebijakan berbasis sumber daya yang memberikan EventBridge akses ke antrian akan dilampirkan ke antrian untuk Anda.
-
Jika Anda menggunakan
PutTargets
pengoperasian EventBridge API untuk menambah atau memperbarui target aturan, dan Anda memilih antrean 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
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 Condition
Pernyataan 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.