本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
對 Amazon SQS API 錯誤進行故障診斷
下列主題涵蓋 Amazon SQS API 呼叫時最常傳回的錯誤,以及如何進行疑難排解。
QueueDoesNotExist 錯誤
當 Amazon SQS 服務找不到提及的 Amazon SQS 動作佇列時,將會傳回此錯誤。
可能的原因和緩解措施:
-
區域不正確:檢閱 Amazon SQS 用戶端組態,以確認您在用戶端上設定了正確的區域。當您未在用戶端上設定區域時, SDK 或 會從組態檔案或環境變數 AWS CLI 中選擇區域。如果軟體開發套件在組態檔案中找不到區域,則軟體開發套件預設會將該區域設定為 us-east-1。
-
佇列最近可能會遭到刪除:如果佇列在 API 呼叫之前遭到刪除,則 API 呼叫會傳回此錯誤。在發生錯誤之前,檢查 CloudTrail 是否有任何 DeleteQueue 操作。
-
許可問題:如果請求 AWS Identity and Access Management (IAM) 使用者或角色沒有必要的許可,則您可能會收到下列錯誤:
The specified queue does not exist or you do not have access to it.
檢查許可,並使用正確的許可進行 API 呼叫。
如需對QueueDoesNotExist錯誤進行故障診斷的詳細資訊,請參閱 AWS 知識中心指南中的如何對 QueueDoesNotExist 錯誤進行 API 呼叫 Amazon SQS ?
InvalidAttributeValue 錯誤
更新 Amazon SQS 佇列資源政策,或使用不正確的政策或委託人屬性時,將會傳回此錯誤。
可能的原因和緩解措施:
-
無效的資源政策:檢查資源政策是否具有所有必要欄位。如需詳細資訊,請參閱 IAM JSON 政策元素參考和驗證 IAM 政策。您也可以使用 IAM 政策產生器來建立和測試 Amazon SQS 資源政策。請確定政策為 JSON 格式。
-
無效的委託人:確保
Principal元素存在於資源政策中,且該值有效。如果您的 Amazon SQS 資源政策Principal元素包含 IAM 實體,請在使用該政策之前確定實體存在。Amazon SQS 會驗證 IAM 實體的資源政策和檢查。如果 IAM 實體不存在,您會收到錯誤。若要確認 IAM 實體,請使用GetRole和GetUserAPIs。
如需如何對InvalidAttributeValue錯誤進行疑難排解的詳細資訊,請參閱 AWS 知識中心指南中的如何在對 Amazon SQS 佇列進行 API 呼叫時對 QueueDoesNotExist 錯誤進行疑難排解?
ReceiptHandle 錯誤
發出 DeleteMessage API 呼叫時,如果接收控點不正確ReceiptHandleIsInvalid或過期,InvalidParameterValue可能會傳回錯誤或 。
-
ReceiptHandleIsInvalid 錯誤:如果接收控點不正確,您會收到類似此範例的錯誤:
An error occurred (ReceiptHandleIsInvalid) when calling the DeleteMessage operation: The input receipt handle <YOUR RECEIPT HANDLE> is not a valid receipt handle.
-
InvalidParameterValue 錯誤:如果接收控點已過期,您會收到類似此範例的錯誤:
An error occurred (InvalidParameterValue) when calling the DeleteMessage operation: Value <YOUR RECEIPT HANDLE> for parameter ReceiptHandle is invalid. Reason: The receipt handle has expired.
可能的原因和緩解措施:
系統會為每個接收的訊息建立接收控制代碼,並且僅在可見性逾時期間內有效。當可見性逾時期間過期時,訊息會在佇列中為消費者顯示。當您再次從消費者收到訊息時,會收到新的接收控點。為避免不正確或過期的接收處理常式錯誤,請使用正確的接收處理常式,在 Amazon SQS 佇列可見性逾時期間內刪除訊息。
如需如何對ReceiptHandle錯誤進行故障診斷的詳細資訊,請參閱 AWS 知識中心指南中的如何在使用 Amazon SQS DeleteMessage API 呼叫時對「ReceiptHandleIsInvalid」和「InvalidParameterValue」錯誤進行故障診斷?