Amazon SQS 대기열에 API를 호출할 때 QueueDoesNotExist 오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 3월 23일

Amazon Simple Queue Service(Amazon SQS) 대기열에 API를 호출할 때 다음과 유사한 QueueDoesNotExist 오류가 나타납니다. "이 wsdl 버전에 대해 지정된 대기열이 존재하지 않습니다.(The specified queue does not exist for this wsdl version.)" 이 오류가 발생하는 이유는 무엇이며 어떻게 문제를 해결할 수 있습니까?

해결 방법

QueueDoesNotExist 오류는 GetQueueAttributes, SendMessage 및 DeleteMessage 등 다양한 Amazon SQS API 호출에서 발생할 수 있습니다. 이 오류를 해결하려면 다음과 같은 가능한 원인 및 해결 단계를 검토합니다.

잘못된 대기열 URL

요청에 제공된 대기열 URL이 올바르고 오타가 없는지 확인합니다.

중요: 대상 대기열 유형이 FIFO인 경우 대기열 URL에 접미사 .fifo를 추가해야 합니다.

잘못된 리전

QueueDoesNotExist 예외는 잘못된 AWS 리전에 요청이 이루어지면 반환됩니다. 소프트웨어 개발 키트(SDK) 및 AWS Command Line Interface(AWS CLI)는 대기열 URL에서 대상 리전을 선택하지 않습니다. 대신 리전이 클라이언트 구성에 의해 결정됩니다.

API 호출을 수행하기 전에 Amazon SQS 클라이언트에서 리전을 올바르게 구성해야 합니다. Amazon SQS 클라이언트 구성을 검토하여 클라이언트에 올바른 리전이 구성되어 있는지 확인합니다. 클라이언트에서 리전이 구성되지 않은 경우 SDK 또는 AWS CLI는 구성 파일이나 환경 변수에서 리전을 선택합니다. 구성 파일에 리전이 없으면 SDK는 기본적으로 리전을 us-east-1로 설정합니다.

AWS CloudTrail에서 실패한 API 호출을 지원하는 경우 고객 계정의 모든 리전에서 실패한 Amazon SQS 작업이 있는지 확인합니다. 모든 리전을 확인하면 해당 리전이 문제의 원인인지 판단하는 데 도움이 될 수 있습니다.

SDK 또는 AWS CLI에서 디버그 로그를 활성화하여 요청의 리전을 확인할 수도 있습니다. 디버그 로그에는 요청에 대한 대상 호스트가 표시됩니다.

: Host: sqs.us-east-1.amazonaws.com

최근에 삭제되거나 삭제된 대기열

대기열이 최근에 제거된 경우 일시적으로 QueueDoesNotExist 오류가 발생할 수 있습니다. 실패한 API 호출의 타임스탬프를 식별한 다음 오류 발생 시점에 대한 모든 PurgeQueue 작업에 대해 CloudTrail을 확인합니다.

대기열이 AWS CloudFormation 또는 유사한 배포 스택의 일부인 경우 대기열이 삭제될 때도 오류가 발생할 수 있습니다. 스택을 업데이트하거나 삭제하면 대기열이 삭제되고 다시 작성될 수 있습니다. 삭제 중에 대기열에 대한 API 호출이 이루어진 경우 QueueDoesNotExist 오류가 발생하여 요청이 실패할 수 있습니다. 오류가 발생하는 동안 모든 DeleteQueue 작업에 대해 CloudTrail을 확인합니다.

교차 계정 GetQueueUrl

API 호출의 경우 일반적으로 SDK 또는 AWS CLI는 대기열 URL에서 대상 대기열 계정 번호를 가져옵니다. 그러나 GetQueueUrl API 호출은 요청에서 대기열의 AWS 계정을 제공하지 않습니다. 즉, 기본적으로 발신자 계정에 대해 요청이 이루어집니다. 요청이 교차 계정 대기열용이라면 대상 대기열 계정 번호를 API 호출 QueueOwnerAWSAccountId 파라미터로 지정해야 합니다.

메세지가 전송 실패 대기열로 이동됨

표준 SQS 대기열의 경우 전송 실패 대기열(DLQ)이 구성되면 재시도 후 메시지가 DLQ로 이동합니다. 메시지가 DLQ로 이동된 후 기본 대기열에서 이전 ReceiptHandle을 사용하여 DeleteMessage 작업을 수행하는 경우 QueueDoesNotExist 오류가 발생할 수 있습니다. 구성된 VisibilityTimeout 창에서 메시지를 삭제해야 합니다.

사용 권한 부족

IAM 사용자 또는 역할에 충분한 권한이 없는 경우 GetQueueUrl API를 보낼 때 QueueDoesNotExist를 수신할 수 있습니다. 쿼리를 실행하려면 IAM 사용자 또는 역할에 쿼리를 실행하는 SQS 대기열에 대한 GetQueueUrl 권한이 있어야 합니다.

자세한 내용은 GetQueueURL을 참조하세요.

추가 문제 해결

추가 문제 해결을 위해 AWS Support에 문의하는 경우 실패한 API 호출의 RequestIdtimestamp를 식별해야 합니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?