View a markdown version of this page

Kebijakan coba ulang dan antrian 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 ulang dan antrian surat mati

Ketika panggilan target gagal, coba EventBridge lagi sampai salah satu dari dua batas ter RetryPolicy capai, secara default 5 upaya atau 300 detik, lalu tulis catatan ke antrian Amazon SQS di. OnFailureConfiguration.Arn Atur keduanya saat Anda membuat pelanggan: tanpa antrian huruf mati, peristiwa yang menghabiskan percobaan ulangnya dijatuhkan, dan satu-satunya jejak adalah metriknya. EventsDropped

Batas coba lagi

Pengiriman berhenti pada batas mana pun yang dicapai terlebih dahulu.

KuotaKisaranDefault
MaxRetryAttempts0 sampai 1855
MaxEventAgeInSeconds60 sampai 86.400300

Defaultnya lebih pendek dari 24 jam dan 185 upaya target Custom Event Bus - Klasik. Desain yang dimigrasi yang mengandalkan satu hari percobaan ulang harus disetel MaxEventAgeInSeconds ke 86.400 secara eksplisit; jika tidak, peristiwa yang gagal selama pemadaman target lebih dari 5 menit akan masuk ke antrian surat mati alih-alih dikirim terlambat. Untuk pelanggan FIFO, peristiwa yang gagal memblokir peristiwa selanjutnya dalam grupnya selama dicoba ulang, jadi jendela percobaan ulang yang panjang memperdagangkan pesanan untuk latensi.

Catatan surat mati

Catatan adalah dokumen JSON, bukan acara. Contoh berikut menunjukkan satu catatan untuk dua peristiwa yang gagal bersama-sama dalam satu batch.

{ "version": "1.0", "busArn": "arn:aws:events:us-east-1:111122223333:event-busv2/orders/EXAMPLE1234567890abcdef", "subscriberArn": "arn:aws:events:us-east-1:111122223333:subscriber/large-orders/EXAMPLEabcdef1234567890", "targetArn": "arn:aws:sqs:us-east-1:111122223333:large-orders", "errorCode": "ACCESS_DENIED", "errorMessage": "The delivery role is not authorized to perform sqs:SendMessage on the target.", "exhaustedRetryCondition": "MaximumEventAgeInSeconds", "retryAttempts": 4, "failedMessages": [ { "eventId": "a1b2c3d4-...", "eventGroupId": "order-1001", "deduplicationId": null, "timestamp": "2026-09-16T18:40:12Z", "targetRequestId": "..." }, { "eventId": "e5f6a7b8-...", "eventGroupId": "order-1001", "deduplicationId": null, "timestamp": "2026-09-16T18:40:13Z", "targetRequestId": "..." } ] }

Setiap kegagalan yang mencapai antrian dicoba ulang terlebih dahulu: tidak ada kegagalan pengiriman yang dilewatiRetryPolicy. Kegag EventBridge alan di dalam dirinya sendiri dicoba ulang EventBridge tanpa batas dan tidak pernah menghasilkan catatan. Tabel berikut mencantumkan kode yang dapat dibawa oleh catatan. errorMessagedipangkas menjadi 1.024 karakter.

errorCodeApa yang gagalerrorMessage
CUSTOMER_VALIDATIONAPI target menolak permintaan (respons 4xx): nilai buruk, bidang yang hilang, badan yang cacatPesan API target sendiri
ACCESS_DENIEDEventBridge tidak dapat mengambil peran pengiriman, peran tidak diizinkan untuk memanggil target, atau AWS KMS kunci target ditolak aksesEventBridge tidak bisa berasumsirole. Periksa apakah peran tersebut ada dan kebijakan kepercayaannya memungkinkan prinsi EventBridge pal layanan untuk memikulkannya. atau tidak EventBridge dapat mengaksesresource. Periksa apakah itu ada dan kebijakannya memungkinkan akses utama EventBridge layanan.
RESOURCE_NOT_FOUNDTarget, atau kun AWS KMS cinya, tidak adaTidak dapat mengakses pesan di atas, atau pesan umum
INPUT_TRANSFORMATION_FAILUREEksp Transformer resi atau target universal Input melemparkan atau tidak menghasilkan nilaiKesalahan ekspresi
THROTTLINGTarget membatasi panggilanPesan umum
EXECUTION_TIMEOUTTarget tidak merespon di dalam InvocationTimeoutSecondsPesan umum
REQUEST_TOO_LARGEPermintaan melebihi batas ukuran target; lebih rendah MaxBatchSizePesan umum
PARTIAL_BATCH_FAILURETarget menerima bagian dari batch dan menolak sisanya; catatan hanya mencant failedMessages umkan peristiwa yang ditolakPesan umum
RESOURCE_CONFLICTTarget melaporkan konflik, misalnya nama yang sudah digunakanPesan umum
KMS_INVALID_STATEKunci target dinonaktifkan atau menunggu penghapusan AWS KMS Pesan umum
SFN_TYPE_NOT_SUPPORTEDREQUEST_RESPONSEdigunakan dengan mesin status Standar, yang tidak mendukung eksekusi sinkronPesan umum
COMPUTE_EXECUTION_ERRORREQUEST_RESPONSEFungsi atau eksekusi berjalan dan melaporkan kesalahanPesan umum
INVOCATION_DEPENDENCY_INTERNALTarget mengembalikan kesalahan server (respons 5xx)Pesan umum
LOOP_DETECTEDPeristiwa, atau peristiwa yang berasal darinya, sudah melewati bus target; lihat Deteksi loopPesan umum
INTERNAL_SERVER_ERRORKegagalan di dalam EventBridge saat melakukan panggilan yang masih menghabiskan percobaan ulangPesan umum

Pesan umum adalah Pengiriman gagal. Gunakan kode kesalahan catatan ini dan id permintaan saat menyelidiki, dan AWS hubungi Dukungan jika kegagalan berlanjut. EventBridge menggunakannya di mana pun meneruskan pesan yang mendasarinya dapat mengekspos internal layanan lain, jadi untuk kode-kode tersebut targetRequestId merupakan fakta-fakta untuk bekerja, bersama dengan catatan EVENT_DELIVERY_ATTEMPT log, yang membawa permintaan yang dikirim. errorCode Nilai yang sama tiba sebagai atribut pesan Amazon SQS (ERROR_CODE,ERROR_MESSAGE,SUBSCRIBER_ARN,TARGET_ARN,,BUS_ARN,EXHAUSTED_RETRY_CONDITION,RETRY_ATTEMPTS), sehingga konsumen dapat mengarahkannya tanpa mengurai tubuh. Untuk pelanggan FIFO, gunakan antrian FIFO sebagai antrian huruf mati; EventBridge menetapkan setiap catatan MessageGroupId dari acaraEventGroupId, sehingga catatan untuk satu grup tetap berurutan.

Peran pengiriman perlu sqs:SendMessage pada antrian. Tanpa itu, OnFailureDestinationFailed metrik menghitung setiap catatan yang tidak dapat ditulis, dan peristiwa itu hilang.

Mengemudi ulang peristiwa dari antrian huruf mati

Antrian menyimpan catatan, bukan peristiwa, jadi Anda mengemudi ulang dengan memutar ulang peristiwa dari bus. Acara harus tetap dalam periode retensi bus.

  1. Baca catatan dan kumpulkan semuanyafailedMessages[].eventId, ditambah yang paling awal dan terbarutimestamp.

  2. Perbaiki penyebab errorCode nama: kebijakan peran, target, atau ekspresi.

  3. Buat pelanggan di bus yang sama dengan target dan peran yang sama, posisi POINT_IN_TIME awal yang StartingPoint merupakan cap waktu paling awal dan yang EndPoint terbaru, dan SYSTEM_METADATA filter pada pengidentifikasi.

  4. Ketika pelanggan telah mengirimkan acara, hapus dan hapus catatan dari antrian.

aws eventsv2 create-subscriber \ --name redrive-2026-09-16 \ --event-bus-arn arn:aws:events:us-east-1:111122223333:event-busv2/orders/EXAMPLE1234567890abcdef \ --starting-position POINT_IN_TIME \ --point-in-time-configuration '{ "PointType": "TIMESTAMP", "StartingPoint": "2026-09-16T18:40:00Z", "EndPoint": "2026-09-16T18:41:00Z" }' \ --filter-configuration '{ "Filters": [ { "Scope": "SYSTEM_METADATA", "Pattern": "{\"aws:EventId\":[\"a1b2c3d4-...\",\"e5f6a7b8-...\"]}" } ] }' \ --invoke-configuration '{ "TargetArn": "arn:aws:sqs:us-east-1:111122223333:large-orders", "RoleArn": "arn:aws:iam::111122223333:role/EventBusDeliveryRole" }'

Acara yang diputar ulang tiba aws:DeliveryTypeREPLAY, sehingga konsumen dapat memberitahunya dari lalu lintas langsung.