Amazon Simple Queue Service(Amazon SQS) 대기열에서 메지시를 삭제하면 ‘ReceiptHandleIsInvalid’ 또는 ‘InvalidParameterValue’ 오류가 표시됩니다.
간략한 설명
Amazon SQS 대기열에서 메시지를 수신하면 FIFO(First-In-First-Out) 및 표준 대기열에 대한 해당 메시지의 수신 핸들도 받게 됩니다. 메시지를 삭제하거나 표시 여부를 변경할 때는 확인 핸들이 필요합니다.
수신 핸들이 잘못되면 다음 예시와 비슷한 오류 메시지가 표시됩니다.
‘An error occurred (ReceiptHandleIsInvalid) when calling the DeleteMessage operation: The input receipt handle 'YOUR RECEIPT HANDLE' is not a valid receipt handle.’
수신 핸들이 만료된 경우 다음 예시와 비슷한 오류 메시지가 표시됩니다.
‘An error occurred (InvalidParameterValue) when calling the DeleteMessage operation: Value 'YOUR RECEIPT HANDLE' for parameter ReceiptHandle is invalid. Reason: The receipt handle has expired.’
수신 핸들은 가시성 시간 제한 기간이 지나면 만료됩니다. 가시성 시간 제한이 만료되면 메시지는 대기열로 돌아갑니다. 소비자로부터 메시지를 다시 받을 때 새 수신 핸들이 생깁니다. ‘InvalidParameterValue’ 오류는 최신 수신 핸들이 아니라 이전 수신 핸들을 사용했기 때문에 발생합니다.
중요: DeleteMessage API 작업에는 최신 수신 핸들을 사용하는 것이 좋습니다. 단, 표준 SQS 대기열을 사용하는 경우 이전 수신 핸들도 성공할 수 있습니다.
해결 방법
잘못되었거나 만료된 수신 핸들 오류를 방지하려면 SQS 대기열 가시성 시간 제한 기간 이내에 올바른 수신 핸들을 사용해 메시지를 삭제하십시오.
메시지를 여러 번 받는 경우, 가장 최근의 ReceiveMessage API 작업 응답을 검토하고 ReceiptHandle 값을 확인합니다. 그런 다음, DeleteMessage API 작업을 호출할 때 앞서 확인한 ReceiptHandle 값을 사용합니다.
또한 DeleteMessage API를 호출할 때 다음 오류가 발생할 수 있습니다.
‘An error occurred (ReceiptHandleIsInvalid) when calling the DeleteMessage operation: The receipt handle "YOUR RECEIPT HANDLE" is not valid for this queue.’
이 오류는 메시지를 메시지와 다른 SQS 대기열에서 받은 수신 핸들을 사용해 삭제할 때 발생합니다. 이 오류를 방지하려면 메시지를 포함한 SQS 대기열에서 받은 올바른 수신 핸들을 사용하십시오.
관련 정보
Amazon SQS 모범 사례