

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

# Amazon SQS のエラー処理および問題ありのメッセージ
<a name="best-practices-error-handling"></a>

このトピックでは、リクエストエラーの処理、問題ありのメッセージのキャプチャ、メッセージの信頼性を確保するためのデッドレターキュー保持の設定など、Amazon SQS でのエラーの管理と軽減に関する詳細な手順を示します。

****トピック****
+ [Amazon SQS でのリクエストエラーの処理](handling-request-errors.md)
+ [問題ありのメッセージのキャプチャ](capturing-problematic-messages.md)
+ [Amazon SQS でのデッドレターキュー保持の設定](setting-up-dead-letter-queue-retention.md)

# Amazon SQS でのリクエストエラーの処理
<a name="handling-request-errors"></a>

リクエストのエラーを処理するには、次の方法のいずれかを使用します:
+  AWS SDK を使用する場合は、自動*再試行とバックオフ*のロジックが既に用意されています。詳細については、「*Amazon Web Services 全般のリファレンス*」の「[エラーの再試行と AWSでのエクスポネンシャルバックオフ](https://docs.aws.amazon.com/general/latest/gr/api-retries.html)」を参照してください。
+ 再試行とバックオフに AWS SDK 機能を使用しない場合は、Amazon SQS からメッセージ、タイムアウト、エラーメッセージを受信せずに [ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html) アクションを再試行する前に一時停止 (200 ミリ秒など) してください。 Amazon SQS 同じ結果が得られる `ReceiveMessage` をそれ以降に使用するには、それよりも長い一時停止 (たとえば、400ms) を許可します。

# 問題ありのメッセージのキャプチャ
<a name="capturing-problematic-messages"></a>

処理できないすべてのメッセージをキャプチャし、\$1CloudWatch メトリクス\$1の正確さを確保するには、[[デッドレターキュー]](sqs-dead-letter-queues.md)を設定します。
+ Redrive ポリシーは、ソースキューがメッセージの処理の失敗を指定回数繰り返した後に、デッドレターキューにメッセージをリダイレクトします。
+ デッドレターキューを使用するとメッセージ数が減少し、*ポイズンピル*メッセージ (受信されたが処理できないメッセージ) が発生する可能性が低下します。
+ キューにポイズンピルメッセージを含めると、ポイズンピルメッセージの期間が正しく表示されないため、[`ApproximateAgeOfOldestMessage`](sqs-available-cloudwatch-metrics.md)CloudWatchメトリクスが歪む可能性があります。デッドレターキューを設定すると、このメトリクスを使用する場合の誤ったアラームの回避に役立ちます。

# Amazon SQS でのデッドレターキュー保持の設定
<a name="setting-up-dead-letter-queue-retention"></a>

標準キューの場合、メッセージの有効期限は常に元のエンキューのタイムスタンプに基づきます。デッドレターキューに移動すると、エンキューのタイムスタンプは変更されません。`ApproximateAgeOfOldestMessage` メトリクスは、メッセージが最初に送信されたときでは*なく*、メッセージがデッドレターキューに移動したときを示します。たとえば、メッセージがデッドレターキューに移動される前に、元のキューで1日費やすと仮定します。デッドレターキューの保持期間が4日間である場合、メッセージは3日後にデッドレターキューから削除され、`ApproximateAgeOfOldestMessage`は3日間です。したがって、デッドレターキューの保持期間を、元のキューの保持期間よりも長く設定することがベストプラクティスです。

FIFO キューでは、メッセージがデッドレターキューに移動すると、エンキューのタイムスタンプがリセットされます。`ApproximateAgeOfOldestMessage` メトリクスは、メッセージがデッドレターキューに移動した日を示します。上記の同じ例では、メッセージは 4 日後にデッドレターキューから削除され、`ApproximateAgeOfOldestMessage` は 4 日間です。