View a markdown version of this page

재시도 정책 및 배달 못한 편지 대기열 - Amazon EventBridge

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

재시도 정책 및 배달 못한 편지 대기열

대상 호출이 실패하면 EventBridgeRetryPolicy는 기본적으로 5회 시도 또는 300초의 두 제한 중 하나에 도달할 때까지 이를 재시도한 다음의 Amazon SQS 대기열에 레코드를 씁니다OnFailureConfiguration.Arn. 구독자를 생성할 때 둘 다 설정합니다. 배달 못한 편지 대기열이 없으면 재시도를 소진하는 이벤트가 삭제되고 유일한 추적은 EventsDropped 지표입니다.

재시도 제한

먼저 한도에 도달하면 전송이 중지됩니다.

한도Range기본값
MaxRetryAttempts0~1855
MaxEventAgeInSeconds60~86,400300

기본값은 사용자 지정 이벤트 버스 - Classic 대상의 24시간 185회 시도보다 짧습니다. 재시도일에 의존하는 마이그레이션된 설계는 명시적으로 86,400MaxEventAgeInSeconds으로 설정해야 합니다. 그렇지 않으면 5분 이상 대상 중단 중에 실패하는 이벤트는 늦게 전달되는 대신 배달 못한 편지 대기열로 이동합니다. FIFO 구독자의 경우 실패한 이벤트는 재시도되는 동안 그룹의 이후 이벤트를 차단하므로 재시도 기간이 길면 지연 시간 순서가 바뀝니다.

배달 못한 편지 레코드

레코드는 이벤트가 아닌 JSON 문서입니다. 다음 예제는 한 배치에서 함께 실패한 두 이벤트에 대한 레코드 하나를 보여줍니다.

{ "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": "..." } ] }

대기열에 도달하는 모든 실패가 먼저 재시도되었습니다.를 건너뛰는 전송 실패는 없습니다RetryPolicy. EventBridge 자체 내의 장애는 EventBridge에서 제한 없이 재시도되며 레코드를 생성하지 않습니다. 다음 표에는 레코드에 포함할 수 있는 코드가 나열되어 있습니다. errorMessage는 1,024자로 잘립니다.

errorCode실패한 항목errorMessage
CUSTOMER_VALIDATION대상 API가 요청을 거부함(4xx 응답): 잘못된 값, 누락된 필드, 잘못된 본문대상 API의 자체 메시지
ACCESS_DENIEDEventBridge가 전송 역할을 수임할 수 없거나, 역할이 대상을 호출할 수 없거나, 대상의 AWS KMS 키가 액세스를 거부했습니다.EventBridge가 역할을 수임할 수 없습니다. 역할이 존재하고 신뢰 정책이 EventBridge 서비스 보안 주체가 역할을 수임하도록 허용하는지 확인합니다. 또는 EventBridge가 리소스에 액세스할 수 없습니다. 해당 정책이 존재하고 EventBridge 서비스 보안 주체 액세스를 허용하는지 확인합니다.
RESOURCE_NOT_FOUND대상 또는 해당 AWS KMS 키가 존재하지 않습니다.가 위의 메시지 또는 일반 메시지에 액세스할 수 없음
INPUT_TRANSFORMATION_FAILURETransformer 또는 범용 대상 Input 표현식이 값을 반환하거나 생성하지 않았습니다.표현식 오류
THROTTLING대상이 호출을 제한했습니다.일반 메시지
EXECUTION_TIMEOUT대상이 내에서 응답하지 않음 InvocationTimeoutSeconds일반 메시지
REQUEST_TOO_LARGE요청이 대상의 크기 제한을 초과했습니다. 더 작습니다. MaxBatchSize 일반 메시지
PARTIAL_BATCH_FAILURE대상은 배치의 일부를 수락하고 나머지는 거부했습니다. 레코드의는 거부된 이벤트만 failedMessages 나열합니다.일반 메시지
RESOURCE_CONFLICT대상이 충돌을 보고했습니다. 예를 들어 이미 사용 중인 이름입니다.일반 메시지
KMS_INVALID_STATE대상의 AWS KMS 키가 비활성화되었거나 삭제 보류 중입니다.일반 메시지
SFN_TYPE_NOT_SUPPORTEDREQUEST_RESPONSE가 동기식 실행을 지원하지 않는 표준 상태 시스템에서 사용됨일반 메시지
COMPUTE_EXECUTION_ERRORREQUEST_RESPONSE 함수 또는 실행이 실행되고 오류를 보고함일반 메시지
INVOCATION_DEPENDENCY_INTERNAL대상이 서버 오류(5xx 응답)를 반환했습니다.일반 메시지
LOOP_DETECTED이벤트 또는 이벤트에서 파생된 이벤트가 대상 버스를 통해 이미 전달되었습니다. 섹션을 참조하세요. 루프 감지 일반 메시지
INTERNAL_SERVER_ERROR재시도를 여전히 소진한 호출 중 EventBridge 내부 실패일반 메시지

일반 메시지는 전송 실패입니다. 조사할 때이 레코드의 오류 코드와 요청 ID를 사용하고 장애가 지속되면 AWS Support에 문의하세요. EventBridge는 기본 메시지를 전달할 때 다른 서비스의 내부가 노출될 수 있는 모든 곳에서 이를 사용합니다. 따라서 이러한 코드의 경우 errorCode 및 targetRequestId는 전송된 요청을 전달하는 EVENT_DELIVERY_ATTEMPT 로그 레코드와 함께 작동해야 하는 사실입니다. 동일한 값이 Amazon SQS 메시지 속성(ERROR_CODE, , ERROR_MESSAGE, SUBSCRIBER_ARN, BUS_ARN, TARGET_ARNEXHAUSTED_RETRY_CONDITION, RETRY_ATTEMPTS)과 함께 도착하므로 소비자가 본문을 구문 분석하지 않고 라우팅할 수 있습니다. FIFO 구독자의 경우 FIFO 대기열을 배달 못한 편지 대기열로 사용합니다. EventBridge는 이벤트의 MessageGroupId에서 각 레코드의를 설정EventGroupId하므로 한 그룹에 대한 레코드는 순서대로 유지됩니다.

전송 역할에는 대기열sqs:SendMessage에가 필요합니다. 이 값이 없으면 OnFailureDestinationFailed 지표는 쓸 수 없는 각 레코드를 계산하고 해당 이벤트는 손실됩니다.

배달 못한 편지 대기열에서 이벤트 수정

대기열에는 이벤트가 아닌 레코드가 보관되므로 버스에서 이벤트를 재생하여 리드라이브합니다. 이벤트는 버스의 보존 기간 내에 있어야 합니다.

  1. 레코드를 읽고 모든와 가장 빠른 및 최신 failedMessages[].eventId를 수집합니다timestamp.

  2. 역할의 정책, 대상 또는 표현식과 같은 원인 errorCode 이름을 수정합니다.

  3. 동일한 대상 및 역할,가 가장 빠른 타임스탬프이고 StartingPoint가 EndPoint 최신인 POINT_IN_TIME 시작 위치, 식별자에 대한 SYSTEM_METADATA 필터를 사용하여 동일한 버스에 구독자를 생성합니다.

  4. 구독자가 이벤트를 전달하면 이벤트를 삭제하고 대기열에서 레코드를 삭제합니다.

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

재생된 이벤트는 aws:DeliveryType와 함께 도착REPLAY하므로 소비자가 실시간 트래픽에서 알릴 수 있습니다.