기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
스케줄러에서 스케줄의 데드레터 대기열 구성하기 EventBridge
Amazon EventBridge Scheduler는 Amazon 심플 큐 서비스를 DLQ 사용하여 데드레터 큐 () 를 지원합니다. EventBridge 스케줄이 대상 호출에 실패할 경우 Scheduler는 호출 세부 정보 및 대상으로부터 수신한 모든 응답이 포함된 JSON 페이로드를 사용자가 지정하는 Amazon SQS 표준 대기열로 전달합니다.
다음 주제에서는 이를 JSON 데드레터 이벤트라고 합니다. Dead Letter 이벤트를 사용하면 일정이나 목표와 관련된 문제를 해결할 수 있습니다. 일정에 맞게 재시도 정책을 구성하면 EventBridge Scheduler는 설정한 최대 재시도 횟수를 모두 사용하여 데드레터 이벤트를 전달합니다.
다음 주제에서는 일정에 맞게 Amazon SQS 대기열을 구성하고, EventBridge Scheduler가 DLQ Amazon에 메시지를 전송하는 데 필요한 권한을 설정하고SQS, Amazon으로부터 데드레터 이벤트를 수신하는 방법을 설명합니다. DLQ
아마존 SQS 대기열 생성
일정에 DLQ 맞게 구성하기 전에 표준 Amazon SQS 대기열을 생성해야 합니다. Amazon SQS 콘솔을 사용하여 대기열을 생성하는 방법에 대한 지침은 Amazon 단순 SQS 대기열 서비스 개발자 안내서의 Amazon 대기열 생성을 참조하십시오.
참고
EventBridge 스케줄러는 FIFO 대기열을 스케줄과 같이 사용하는 것을 지원하지 않습니다. DLQ
다음 AWS CLI 명령을 사용하여 표준 대기열을 생성합니다.
$
aws sqs create-queue --queue-name
queue-name
성공하면 결과에 QueueURL
이 표시됩니다.
{
"QueueUrl": "https://sqs.us-west-2.amazonaws.com/123456789012/scheduler-dlq-test"
}
대기열을 만든 후 대기열을 기록해 둡니다ARN. EventBridge 스케줄러 일정에 DLQ 를 지정할 ARN 때 필요합니다. Amazon ARN SQS 콘솔에서 또는 get-queue-attributes
$
aws sqs get-queue-attributes --queue-url
your-dlq-url
--attribute-names QueueArn
성공하면 ARN 출력에 대기열이 표시됩니다.
{ "Attributes": { "QueueArn": "arn:aws:sqs:us-west-2:123456789012:scheduler-dlq-test" } }
다음 섹션에서는 스케줄 실행 역할에 필요한 권한을 추가하여 EventBridge Scheduler가 데드레터 이벤트를 Amazon에 전송할 수 있도록 합니다. SQS
실행 역할 권한 설정
EventBridge Scheduler가 SQS Amazon에 데드레터 이벤트를 전송하도록 하려면 일정 실행 역할에 다음과 같은 권한 정책이 필요합니다. 일정 실행 역할에 새 권한 정책을 연결하는 방법에 대한 자세한 내용은 실행 역할 설정을 참조하세요.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sqs:SendMessage" ], "Effect": "Allow", "Resource": "*" } ] }
참고
EventBridge Scheduler를 사용하여 Amazon SQS API 대상을 호출하는 경우 스케줄 실행 역할에 필요한 권한이 이미 첨부되어 있을 수 있습니다.
다음 섹션에서는 EventBridge Scheduler 콘솔을 사용하여 일정에 DLQ 맞는 콘솔을 지정해 보겠습니다.
DLQ(Dead Letter Queue) 지정
를 지정하려면 EventBridge Scheduler 콘솔 또는 AWS CLI 를 사용하여 기존 일정을 업데이트하거나 새 일정을 만드십시오. DLQ
다음 섹션에서는 를 사용하여 에서 AWS CLI 데드레터 이벤트를 수신해 보겠습니다. DLQ
dead-letter 이벤트 검색
다음 그림과 같이 receive-message
--max-number-of-messages
속성을 사용하여 검색할 메시지 수를 설정할 수 있습니다.
$
aws sqs receive-message --queue-url
your-dlq-url
--attribute-names All --message-attribute-names All --max-number-of-messages 1
성공한 경우 다음과 유사한 출력 화면이 표시됩니다.
{ "Messages": [ { "MessageId": "2aeg3510-fe3a-4f5a-ab6a-6906560eaf7e", "ReceiptHandle": "AQEBkNKTdOMrWgHKPoITRBwrPoK3eCSZIcZwVqCY0BZ+FfTcORFpopJbtCqj36VbBTlHreM8+qM/m5jcwqSlAlGmIJO/hYmMgn/+dwIty9izE7HnpvRhhEyHxbeTZ5V05RbeasYaBdNyi9WLcnAHviDh6MebLXXNWoFyYNsxdwJuG0f/w3htX6r3dxpXvvFNPGoQb8ihY37+u0gtsbuIwhLtUSmE8rbldEEwiUfi3IJ1zEZpUS77n/k1GWrMrnYg0Gx/BuaLzOrFi2F738XI/Hnh45uv3ca6OYwS1ojPQ1LtX2URg1haV5884FYlaRvY8jRlpCZabTkYRTZKSXG5KNgYZnHpmsspii6JNkjitYVFKPo0H91w5zkHlSx3REAuWk7m3r7PmOMvTNPMhctbD3CkTw==", "MD5OfBody": "07adc3fc889d6107d8bb8fda42fe0573", "Body": "{\"MessageBody\":\"Hello, world!",\"QueueUrl\":\"https://sqs.us-west-2.amazonaws.com/123456789012/does-not-exist\"}", "Attributes": { "SenderId": "AROA2DZE3W4CTL5ZR7EIN:ff00212d8c453aaaae644bc6846d4723", "ApproximateFirstReceiveTimestamp": "1652499058144", "ApproximateReceiveCount": "2", "SentTimestamp": "1652490733042" }, "MD5OfMessageAttributes": "f72c1d78100860e00403d849831d4895", "MessageAttributes": { "ERROR_CODE": { "StringValue": "AWS.SimpleQueueService.NonExistentQueue", "DataType": "String" }, "ERROR_MESSAGE": { "StringValue": "The specified queue does not exist for this wsdl version.", "DataType": "String" }, "EXECUTION_ID": { "StringValue": "ad06616e51cdf74a", "DataType": "String" }, "EXHAUSTED_RETRY_CONDITION": { "StringValue": "MaximumEventAgeInSeconds", "DataType": "String" } "IS_PAYLOAD_TRUNCATED": { "StringValue": "false", "DataType": "String" }, "RETRY_ATTEMPTS": { "StringValue": "0", "DataType": "String" }, "SCHEDULED_TIME": { "StringValue": "2022-05-14T01:12:00Z", "DataType": "String" }, "SCHEDULE_ARN": { "StringValue": "arn:aws:scheduler:us-west-2:123456789012:schedule/DLQ-test", "DataType": "String" }, "TARGET_ARN": { "StringValue": "arn:aws:scheduler:::aws-sdk:sqs:sendMessage", "DataType": "String" } } } ] }
대상 간접 호출이 실패한 가능한 원인을 식별하고 문제를 해결하는 데 도움이 되도록 dead-letter 이벤트의 다음 속성을 기록해 두십시오.
-
ERROR_CODE
— EventBridge Scheduler가 대상 서비스로부터 받는 오류 코드를 포함합니다. API 위 예제에서 Amazon에서 반환한 오류 코드는 SQS 입니다AWS.SimpleQueueService.NonExistentQueue
. EventBridge 스케줄러 문제로 인해 스케줄이 대상을 호출하지 못하는 경우 대신 다음 오류 코드가 표시됩니다.AWS.Scheduler.InternalServerError
-
ERROR_MESSAGE
— EventBridge Scheduler가 대상 서비스로부터 받는 오류 메시지를 포함합니다. API 위 예제에서 Amazon에서 반환한 오류 메시지는 SQS 입니다The specified queue does not exist for this wsdl version
. EventBridge Scheduler 문제로 인해 일정이 실패하는 경우 대신 다음 오류 메시지가 표시됩니다.Unexpected error occurred while processing the request
-
TARGET_ARN
— 스케줄이 호출하는 ARN 대상의 서비스 형식으로, 다음과 같은 서비스 ARN 형식:.arn:aws:scheduler:::aws-sdk:
service
:apiAction
-
EXHAUSTED_RETRY_CONDITION
— 이벤트가 에 전달된 이유를 나타냅니다. DLQ 이 속성은 대상의 API 오류가 영구적인 오류가 아니라 재시도 가능한 오류인 경우 나타납니다. 속성에는 EventBridge 스케줄에 대해 구성한 최대 재시도 횟수를 DLQ 초과한 후 Scheduler에서 전송한 경우 또는MaximumEventAgeInSeconds
이벤트가 일정에 구성한 최대 기간보다 오래되었는데도 전송에 실패한 경우 값이MaximumRetryAttempts
포함될 수 있습니다.
위 예제에서는 오류 코드와 오류 메시지를 기반으로 일정에 지정한 대상 대기열이 존재하지 않음을 확인할 수 있습니다.