對 Amazon SQS API 錯誤進行故障診斷 - Amazon Simple Queue Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

對 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 實體,請使用 GetRoleGetUser APIs。

如需如何對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」錯誤進行故障診斷?