Amazon에서 데드 레터 대기열 리드라이브를 구성하는 방법을 알아봅니다. SQS - Amazon Simple Queue Service

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

Amazon에서 데드 레터 대기열 리드라이브를 구성하는 방법을 알아봅니다. SQS

데드 레터 대기열 리드라이브를 사용하여 기존 데드 레터 대기열에서 소비되지 않은 메시지를 이동할 수 있습니다. 기본적으로 DLQ(Dead Letter Queue) 리드라이브는 메시지를 DLQ(Dead Letter Queue)에서 소스 대기열로 이동합니다. 그러나 두 대기열이 동일한 유형인 경우 다른 대기열을 리드라이브 대상으로 구성할 수도 있습니다. 예를 들어 데드 레터 대기열이 FIFO 대기열인 경우 리드라이브 대상 대기열도 FIFO 대기열이어야 합니다. 또한 Amazon이 메시지를 SQS 이동하는 속도를 설정하도록 리드라이브 속도를 구성할 수 있습니다.

참고

메시지가 FIFO 대기열에서 FIFO 로 이동되면 DLQ원본 메시지의 중복 제거 ID가 원본 메시지의 ID로 바뀝니다. 이는 중복 DLQ 제거가 중복 제거 ID를 공유하는 두 개의 독립 메시지 저장을 방지하지 않도록 하기 위한 것입니다.

데드 레터 대기열은 가장 오래된 메시지부터 시작하여 수신된 순서대로 메시지를 리드라이브합니다. 그러나 대상 대기열은 수신 순서에 따라 리드라이브된 메시지뿐만 아니라 다른 생산자의 새 메시지도 수집합니다. 예를 들어 생산자가 데드레터 FIFO 대기열에서 리바이딩된 메시지를 동시에 수신할 때 소스 대기열로 메시지를 보내는 경우 리바이딩된 메시지는 생산자의 새 메시지와 상호 연동됩니다.

참고

리드라이브 작업은 보존 기간을 재설정합니다. 모든 재구동된 메시지는 새 가 있는 새 메시지로 간주되며 재구동된 메시지에 할당messageIDenqueueTime됩니다.

Amazon을 사용하여 기존 표준 대기열에 대한 데드 레터 대기열 리드라이브 구성 SQS API

StartMessageMoveTask, ListMessageMoveTasksCancelMessageMoveTask API 작업을 사용하여 데드 레터 대기열 리드라이브를 구성할 수 있습니다.

API 작업 설명

StartMessageMoveTask

지정된 소스 대기열에서 지정된 대상 대기열로 메시지를 이동하는 비동기 작업을 시작합니다.

ListMessageMoveTasks

특정 소스 대기열에서 가장 최근의 메시지 이동 작업(최대 10개)을 가져옵니다.

CancelMessageMoveTask

지정된 메시지 이동 작업을 취소합니다. 메시지 이동은 현재 상태가 인 경우에만 취소할 수 있습니다RUNNING.

Amazon SQS 콘솔을 사용하여 기존 표준 대기열에 대한 데드 레터 대기열 리드라이브 구성

  1. 에서 Amazon SQS 콘솔을 엽니다https://console.aws.amazon.com/sqs/.

  2. 탐색 창에서 대기열을 선택합니다.

  3. 배달 못한 편지 대기열로 구성한 대기열의 이름을 선택합니다.

  4. DLQ 리드라이브 시작을 선택합니다.

  5. 리드라이브 구성에서 메시지 대상에 대해 다음 중 하나를 수행합니다.

    • 메시지를 소스 대기열로 리드라이브하려면 소스 대기열로 리드라이브를 선택합니다.

    • 메시지를 다른 대기열로 리드라이브하려면 사용자 지정 대상으로 리드라이브를 선택합니다. 그런 다음 기존 대상 대기열의 Amazon 리소스 이름(ARN)을 입력합니다.

  6. 속도 제어 설정에서 다음 중 하나를 선택합니다.

    • 시스템 최적화 - 배달 못한 편지 대기열 메시지를 초당 최대 메시지 수로 리드라이브합니다.

    • 사용자 지정 최고 속도 - 배달 못한 편지 대기열 메시지를 초당 최대 사용자 지정 메시지 속도로 리드라이브합니다. 최대 허용 속도는 초당 500개의 메시지입니다.

      • 사용자 지정 최고 속도를 작은 값으로 시작하고 소스 대기열에 메시지가 넘치지 않는지 확인하는 것이 좋습니다. 그런 다음 사용자 지정 최대 속도 값을 점진적으로 늘려 소스 대기열의 상태를 계속 모니터링합니다.

  7. 배달 못한 편지 대기열 리드라이브 구성을 마쳤으면 메시지 리드라이브를 선택합니다.

    중요

    AmazonSQS은 데드 레터 대기열에서 메시지를 다시 가져오는 동안 메시지 필터링 및 수정을 지원하지 않습니다.

    DLQ(Dead Letter Queue) 리드라이브 작업은 최대 36시간까지 실행될 수 있습니다. Amazon은 계정당 최대 100개의 활성 리드라이브 작업을 SQS 지원합니다.

  8. 메시지 리드라이브 작업을 취소하려면 대기열의 세부 정보 페이지에서 DLQ리드라이브 취소를 선택합니다. 진행 중인 메시지 리드라이브를 취소하면 이미 이동 대상 대기열로 이동된 모든 메시지는 대상 대기열에 남아 있게 됩니다.

배달 못한 편지 대기열 리드라이브에 대한 대기열 권한 구성

정책에 권한을 추가하여 사용자에게 특정 배달 못한 편지 대기열 작업에 대한 액세스 권한을 부여할 수 있습니다. 배달 못한 편지 대기열 리드라이브에 필요한 최소 권한은 다음과 같습니다.

최소 권한 필수 API 메서드
메시지 리드라이브 시작
  • 배달 못한 편지 대기열의 sqs:StartMessageMoveTask, sqs:ReceiveMessage, sqs:DeleteMessagesqs:GetQueueAttributes를 추가합니다. 데드 레터 대기열 또는 원본 소스 대기열(대SSE기열이라고도 함)이 암호화된 경우 메시지를 암호화하는 데 사용된 KMS 키에 kms:Decrypt 대해서도 필요합니다.

  • 대상 대기열의 sqs:SendMessage를 추가합니다. 대상 대기열이 암호화된 경우 kms:GenerateDataKeykms:Decrypt도 필요합니다.

진행 중인 메시지 리드라이브 취소
  • 배달 못한 편지 대기열의 sqs:CancelMessageMoveTask, sqs:ReceiveMessage, sqs:DeleteMessagesqs:GetQueueAttributes를 추가합니다. 데드 레터 대기열이 암호화된 경우(대SSE기열이라고도 함) kms:Decrypt도 필요합니다.

메시지 이동 상태 표시
  • 배달 못한 편지 대기열의 sqs:ListMessageMoveTaskssqs:GetQueueAttributes를 추가합니다.

암호화된 대기열 페어(배달 못한 편지 대기열이 있는 소스 대기열)에 대한 권한을 구성하려면

다음 단계를 사용하여 배달 못한 편지 대기열 리드라이브에 대한 최소 권한을 구성합니다.

  1. 에 로그인 AWS Management Console 하고 에서 IAM 콘솔을 엽니다https://console.aws.amazon.com/iam/.

  2. 탐색 창에서 Policies를 선택합니다.

  3. 다음 권한이 있는 정책을 생성하고 로그인 IAM 사용자 또는 역할에 연결합니다.

    • sqs:StartMessageMoveTask

    • sqs:CancelMessageMoveTask

    • sqs:ListMessageMoveTasks

    • sqs:ListDeadLetterSourceQueues

    • sqs:ReceiveMessage

    • sqs:DeleteMessage

    • sqs:GetQueueAttributes

    • 데드 레터 대기열ResourceARN의 입니다(예: 'arn:aws:sqs:<DLQ_region>:<DLQ_accountId>:<DLQ_name>").

    • sqs:SendMessage

    • 대상 대기열ResourceARN의 (예: 'arn:aws:sqs:<DestQueue_region>:<DestQueue_accountId>:<DestQueue_name>").

    • kms:Decrypt - 암호 해독 작업을 허용합니다.

    • kms:GenerateDataKey

    • 원본 소스 대기열에서 메시지를 암호화하는 데 사용된 KMS 암호화 키의 Resource ARN(s)(예: 'arn:aws:kms:<region>:<accountId>:key/<keyId_used to encrypt the message body>").

    • 리드라이브 대상 대기열에 사용되는 KMS 암호화 키ARN의 리소스(예: “arn:aws:kms:<region>:<accountId>:key/<keyId_used for the destination queue>").

    액세스 정책은 다음과 유사합니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:StartMessageMoveTask", "sqs:CancelMessageMoveTask", "sqs:ListMessageMoveTasks", "sqs:ReceiveMessage", "sqs:DeleteMessage", "sqs:GetQueueAttributes", "sqs:ListDeadLetterSourceQueues" ], "Resource": "arn:aws:sqs:<DLQ_region>:<DLQ_accountId>:<DLQ_name>" }, { "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:<DestQueue_region>:<DestQueue_accountId>:<DestQueue_name>" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:<region>:<accountId>:key/<keyId>" } ] }
암호화되지 않은 대기열 페어(배달 못한 편지 대기열이 있는 소스 대기열)을 사용하여 권한을 구성하려면

다음 단계를 사용하여 표준의 암호화되지 않은 배달 못한 편지 대기열에 대한 최소 권한을 구성합니다. 필요한 최소 권한은 배달 못한 편지 대기열에서 속성을 수신, 삭제 및 가져오고 소스 대기열로 속성을 전송하는 것입니다.

  1. 에 로그인 AWS Management Console 하고 에서 IAM 콘솔을 엽니다https://console.aws.amazon.com/iam/.

  2. 탐색 창에서 Policies를 선택합니다.

  3. 다음 권한이 있는 정책을 생성하고 로그인 IAM 사용자 또는 역할에 연결합니다.

    • sqs:StartMessageMoveTask

    • sqs:CancelMessageMoveTask

    • sqs:ListMessageMoveTasks

    • sqs:ListDeadLetterSourceQueues

    • sqs:ReceiveMessage

    • sqs:DeleteMessage

    • sqs:GetQueueAttributes

    • 데드 레터 대기열ResourceARN의 입니다(예: 'arn:aws:sqs:<DLQ_region>:<DLQ_accountId>:<DLQ_name>") .

    • sqs:SendMessage

    • 대상 대기열ResourceARN의 (예: 'arn:aws:sqs:<DestQueue_region>:<DestQueue_accountId>:<DestQueue_name>").

    액세스 정책은 다음과 유사합니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:StartMessageMoveTask", "sqs:CancelMessageMoveTask", "sqs:ListMessageMoveTasks", "sqs:ReceiveMessage", "sqs:DeleteMessage", "sqs:GetQueueAttributes", "sqs:ListDeadLetterSourceQueues" ], "Resource": "arn:aws:sqs:<DLQ_region>:<DLQ_accountId>:<DLQ_name>" }, { "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:<DestQueue_region>:<DestQueue_accountId>:<DestQueue_name>" } ] }