Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

再試行動作 - AWS SDKsとツール

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

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

再試行動作

注記

設定ページのレイアウトの理解、または以下の AWS SDKs「」を参照してくださいこのガイドの設定ページについて

再試行動作には、SDK が AWS のサービスへのリクエストによる障害からの回復を試みるかに関する設定が含まれます。

この機能を設定するには、以下のように使用します。

retry_mode - 共有 AWS configファイル設定
AWS_RETRY_MODE - 環境変数
aws.retryMode - JVM システムプロパティ: Java/Kotlin のみ

SDK または開発者ツールが再試行を試みる方法を指定します。

デフォルト値: この値は SDK に固有です。特定の SDK ガイドまたは SDK のコードベースでデフォルトの を確認しますretry_mode

有効な値:

  • standard – (推奨) AWS SDKs 全体で推奨される再試行ルールのセット。このモードには、再試行されるエラーの標準セットが含まれており、再試行回数を自動的に調整して可用性と安定性を最大化します。このモードは、マルチテナントアプリケーションで安全に使用できます。max_attempts が明示的に設定されていない限り、このモードでのデフォルトの最大試行回数は 3 回です。

  • adaptive – 標準モードの機能やクライアント側の自動レート制限を含む、特殊なユースケースにのみ適した再試行モード。この再試行モードは、アプリケーションテナントを分離するように注意しない限り、マルチテナントアプリケーションにはお勧めしません。詳細については「standard 再試行モードと adaptive 再試行モードの選択」を参照してください。このモードは実験的であり、将来動作が変わる可能性があります。

  • legacy – (非推奨) SDK に固有 (特定の SDK ガイドまたは SDK のコードベースを確認してください)。

max_attempts - 共有 AWS configファイル設定
AWS_MAX_ATTEMPTS - 環境変数
aws.maxAttempts - JVM システムプロパティ: Java/Kotlin のみ

1 回のリクエストで行う最大試行回数を指定します。

デフォルト値:この値が指定されていない場合、デフォルトは retry_mode の設定の値によって異なります。

  • retry_modelegacy の場合 – SDK 固有のデフォルト値を使用します(max_attempts デフォルトについては、特定の SDK ガイドまたは SDK のコードベースを確認してください)。

  • retry_modestandard の場合 – 3 回試行します。

  • retry_modeadaptive の場合 – 3 回試行します。

有効な値: 0 より大きい数値。

standard 再試行モードと adaptive 再試行モードの選択

の使用が により適していることが確実でない限り、standard再試行モードを使用することをお勧めしますadaptive

注記

adaptive モードは、バックエンドサービスがリクエストをスロットリングするスコープに基づいてクライアントをプールしていることを前提としています。これを行わないと、両方のリソースに同じクライアントを使用している場合、1 つのリソースのスロットリングにより、無関係なリソースのリクエストが遅延する可能性があります。

標準 アダプティブ
アプリケーションのユースケース: すべて。 アプリケーションのユースケース:
  1. レイテンシーの影響を受けません。

  2. クライアントは 1 つのリソースにのみアクセスするか、アクセスするサービスリソースごとにクライアントを個別にプールするロジックを提供します。

サーキットブレークをサポートして、停止中に SDK が再試行するのを防ぎます。 サーキットブレークをサポートして、停止中に SDK が再試行するのを防ぎます。
障害発生時にジッターされたエクスポネンシャルバックオフを使用します。 動的バックオフ期間を使用して、レイテンシーが増加する可能性と引き換えに、失敗したリクエストの数を最小限に抑えるよう試みます。
最初のリクエストの試行を遅らせることはなく、再試行のみを行います。 最初のリクエスト試行をスロットリングまたは遅延できます。

adaptive モードを使用する場合、アプリケーションはスロットリングされる可能性のある各リソースを中心に設計されたクライアントを構築する必要があります。この場合、リソースは、それぞれについて考えるよりも細かく調整されます AWS のサービス。 は、リクエストのスロットリングに使用する追加のディメンションを持つ AWS のサービス ことができます。例として Amazon DynamoDB サービスを使用しましょう。DynamoDB は、アクセスされるテーブル AWS リージョン に加えて を使用してリクエストを調整します。つまり、コードがアクセスしている 1 つのテーブルは、他のテーブルよりもスロットリングされる可能性があります。コードが同じクライアントを使用してすべてのテーブルにアクセスし、それらのテーブルの 1 つへのリクエストがスロットリングされた場合、アダプティブ再試行モードではすべてのテーブルのリクエストレートが低下します。コードは、Region-and-tableつのクライアントを持つように設計する必要があります。adaptive モードの使用時に予期しないレイテンシーが発生した場合は、使用しているサービスの特定の AWS ドキュメントガイドを参照してください。

再試行モードの実装の詳細

AWS SDKsトークンバケットを使用して、リクエストを再試行するかどうか、およびリクエストの送信速度を決定します (adaptive再試行モードの場合)。SDK では、再試行トークンバケットとリクエストレートトークンバケットの 2 つのトークンバケットが使用されます。

  • 再試行トークンバケットは、SDK が停止中にアップストリームサービスとダウンストリームサービスを保護するために再試行を一時的に無効にする必要があるかどうかを判断するために使用されます。トークンは再試行する前にバケットから取得され、リクエストが成功するとバケットに返されます。再試行時にバケットが空の場合、SDK はリクエストを再試行しません。

  • リクエストレートトークンバケットは、リクエストの送信レートを決定するためにadaptive、再試行モードでのみ使用されます。トークンはリクエストの送信前にバケットから取得され、サービスによって返されるスロットリングレスポンスに基づいて動的に決定されたレートでバケットに返されます。

以下は、standardadaptive 再試行モードの両方の大まかな擬似コードです。

MakeSDKRequest() { attempts = 0 loop { GetSendToken() response = SendHTTPRequest() RequestBookkeeping(response) if not Retryable(response) return response attempts += 1 if attempts >= MAX_ATTEMPTS: return response if not HasRetryQuota(response) return response delay = ExponentialBackoff(attempts) sleep(delay) } }

擬似コードで使用されるコンポーネントの詳細は次のとおりです。

GetSendToken:

このステップはadaptive再試行モードでのみ使用されます。このステップでは、リクエストレートトークンバケットからトークンを取得します。トークンが使用できない場合、トークンが利用可能になるまで待機します。SDK には、リクエストを待機する代わりに失敗させる設定オプションがある場合があります。バケット内のトークンは、クライアントが受信したスロットリングレスポンスの数に基づいて動的に決定されるレートで補充されます。

SendHTTPRequest:

このステップでは、 リクエストを に送信します AWS。 AWS SDKsは、HTTP リクエストを行うときに接続プールを使用して既存の接続を再利用する HTTP ライブラリを使用します。通常、スロットリングエラーが原因でリクエストが失敗した場合は接続が再利用されますが、一時的なエラーが原因でリクエストが失敗した場合は接続は再利用されません。

RequestBookkeeping:

リクエストが成功すると、トークンがトークンバケットに追加されます。adaptive 再試行モードの場合のみ、リクエストレートトークンバケットのフィルレートは、受信したレスポンスのタイプに基づいて更新されます。

Retryable:

このステップでは、以下に基づいて応答を再試行できるかどうかを判断します。

  • HTTP ステータスコード 。

  • サービスから返されたエラーコード。

  • 接続エラーとは、SDK が受信したエラーの中で、サービスからの HTTP 応答が受信されないすべてのエラーを指します。

一時的なエラー(HTTP ステータスコード 400、408、500、502、503、504)とスロットリングエラー(HTTP ステータスコード 400、403、429、502、503、509)はすべて再試行される可能性があります。SDK の再試行動作は、エラーコードまたはサービスからのその他のデータと組み合わせて決定されます。

MAX_ATTEMPTS:

デフォルトの最大試行回数は、 retry_mode設定によって上書きされない限り、 max_attempts設定によって設定されます。

HasRetryQuota

このステップでは、再試行トークンバケットからトークンを取得します。再試行トークンバケットが空の場合、リクエストは再試行されません。

ExponentialBackoff

再試行可能なエラーの場合、再試行遅延は台形型エクスポネンシャルバックオフを使用して計算されます。SDK はジッター付きの切り捨て二進エクスポネンシャルバックオフを使用します。次のアルゴリズムは、i リクエストに対する応答の休止時間(秒単位)がどのように定義されているかを示しています。

seconds_to_sleep_i = min(b*r^i, MAX_BACKOFF)

前述のアルゴリズムでは、以下の値が適用されます。

b = random number within the range of: 0 <= b <= 1

r = 2

ほとんどの SDK では MAX_BACKOFF = 20 seconds です。確認のため、特定の SDK ガイドまたはソースコードを参照してください。

AWS SDKsとツールによるサポート

以下の SDK は、このトピックで説明する機能と設定をサポートします。部分的な例外があれば、すべて記載されています。JVM システムプロパティ設定は、 AWS SDK for Java と AWS SDK for Kotlin でのみサポートされます。

SDK サポート 注意または詳細情報
AWS CLI v2 はい
SDK for C++ はい
SDK for Go V2 (1.x) はい
SDK for Go 1.x (V1) いいえ
SDK for Java 2.x はい
SDK for Java 1.x はい JVM システムプロパティ: com.amazonaws.sdk.maxAttemptsの代わりに を使用しますaws.maxAttemptscom.amazonaws.sdk.retryMode の代わりに を使用しますaws.retryMode
SDK for JavaScript 3.x はい
SDK for JavaScript 2.x いいえ 最大再試行回数、ジッターを伴うエクスポネンシャルバックオフ、再試行バックオフのカスタムメソッドのオプションをサポートします。
SDK for Kotlin はい
SDK for .NET 3.x はい
SDK for PHP 3.x はい
SDK for Python (Boto3) はい
SDK for Ruby 3.x はい
SDK for Rust はい
SDK for Swift はい
Tools for PowerShell はい
プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.