

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

# 對 Amazon SQS API 錯誤進行故障診斷
<a name="troubleshooting-api-errors"></a>

下列主題涵蓋 Amazon SQS API 呼叫時最常傳回的錯誤，以及如何進行疑難排解。

## QueueDoesNotExist 錯誤
<a name="queuedoesnotexist-error"></a>

當 Amazon SQS 服務找不到提及的 Amazon SQS 動作佇列時，將會傳回此錯誤。

**可能的原因和緩解措施：**
+ **區域不正確：**檢閱 Amazon SQS 用戶端組態，以確認您在用戶端上設定了正確的區域。當您未在用戶端上設定區域時， SDK 或 會從[組態檔案](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)或環境變數 AWS CLI 中選擇區域。如果軟體開發套件在組態檔案中找不到區域，則軟體開發套件預設會將該區域設定為 us-east-1。
+ **佇列最近可能會遭到刪除：**如果佇列在 API 呼叫之前遭到刪除，則 API 呼叫會傳回此錯誤。在發生錯誤之前，檢查 CloudTrail 是否有任何 [DeleteQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteQueue.html) 操作。
+ **許可問題：**如果請求 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 ？](https://repost.aws/knowledge-center/sqs-queuedoesnotexist-errors)。

## InvalidAttributeValue 錯誤
<a name="invalidattributevalue-error"></a>

更新 Amazon SQS 佇列資源政策，或使用不正確的政策或委託人屬性時，將會傳回此錯誤。

**可能的原因和緩解措施：**
+ **無效的資源政策：**檢查資源政策是否具有所有必要欄位。如需詳細資訊，請參閱 [IAM JSON 政策元素參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)和[驗證 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_policy-validator.html)。您也可以使用 [IAM 政策產生器](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html)來建立和測試 Amazon SQS 資源政策。請確定政策為 JSON 格式。
+ **無效的委託人：**確保 `Principal`元素存在於資源政策中，且該值有效。如果您的 Amazon SQS 資源政策`Principal`元素包含 IAM 實體，請在使用該政策之前確定實體存在。Amazon SQS 會驗證 IAM 實體的資源政策和檢查。如果 IAM 實體不存在，您會收到錯誤。若要確認 IAM 實體，請使用 [`GetRole`](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)和 [`GetUser`](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html) APIs。

如需如何對`InvalidAttributeValue`錯誤進行疑難排解的詳細資訊，請參閱 *AWS 知識中心指南*中的[如何在對 Amazon SQS 佇列進行 API 呼叫時對 QueueDoesNotExist 錯誤進行疑難排解？](https://repost.aws/knowledge-center/sqs-invalid-parameter-policy)。

## ReceiptHandle 錯誤
<a name="receipthandle-error"></a>

發出 [`DeleteMessage`](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html) 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」錯誤進行故障診斷？](https://repost.aws/knowledge-center/sqs-receipt-handle-error)。