

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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 または AWS CLI は、[設定ファイル](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)または環境変数からリージョンを選択します。SDK は、設定ファイルにリージョンを見つけられない場合、デフォルトでリージョンを us-east-1 に設定します。
+ **キューが最近削除された可能性がある:** API コールの実行前にキューが削除されていた場合、API コールはこのエラーを返します。エラーの発生前に [DeleteQueue](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteQueue.html) オペレーションがあったかどうかを CloudTrail で確認してください。
+ **アクセス許可の問題:** リクエスト元の AWS Identity and Access Management (IAM) ユーザーまたはロールに必要なアクセス許可がない場合、次のエラーが返されることがあります。

  ```
  The specified queue does not exist or you do not have access to it.
  ```

  アクセス許可を確認し、正しいアクセス許可を使用して API コールを行ってください。

`QueueDoesNotExist` エラーのトラブルシューティングの詳細については、「*AWS 情報センターガイド*」の「[Amazon SQS キューに API 呼び出しを行う際の QueueDoesNotExist エラーのトラブルシューティング方法を教えてください。](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) API と [`GetUser`](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html) API を使用します。

`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 を呼び出すときに、ReceipthHandleisInvalid エラーおよび InvalidParameterValue エラーのトラブルシューティングを行うにはどうすればよいですか？](https://repost.aws/knowledge-center/sqs-receipt-handle-error)」を参照してください。