スマート設定デフォルト
注記
設定ページのレイアウトを理解したり、以下の AWS SDK とツールによるサポートの表を解釈したりするには、「このガイドの設定ページについて」を参照してください。
スマート設定デフォルト機能を使用すると、AWS SDK は他の設定で事前定義され最適化されたデフォルト値を使用できるようになります。
この機能を設定するには、以下のように使用します。
defaults_mode- AWSconfig共有ファイル設定AWS_DEFAULTS_MODE- 環境変数aws.defaultsMode- JVM システムプロパティ: Java/Kotlin のみ-
この設定では、アプリケーションアーキテクチャに合ったモードを選択できます。これにより、アプリケーションに最適なデフォルト値が使用できるようになります。AWS SDK 設定に明示的に値が設定されている場合は、その値が常に優先されます。AWS SDK 設定に明示的に値が設定されておらず、
defaults_modeがレガシーと等しくない場合、この機能ではアプリケーションに最適化されたさまざまな設定に異なるデフォルト値を使用できます。設定には、HTTP 通信設定、再試行動作、サービスの地域エンドポイント設定、および SDK 関連のあらゆる設定が含まれる可能性があります。この機能を使用するお客様は、一般的な使用シナリオに合わせた新しいデフォルト設定を取得できます。defaults_modeがlegacyと等しくない場合は、SDK をアップグレードするときにアプリケーションのテストを行うことをおすすめします。これは、ベストプラクティスの進化によってこの機能のデフォルト値が変わる可能性があるためです。デフォルト値:
legacy注意:SDK の新しいメジャーバージョンでのデフォルトは
standardになります。有効な値:
-
legacy– SDK によって異なり、defaults_modeが確立される前から存在していたデフォルト設定を使用します。 -
standard– ほとんどのシナリオで安全に実行できる最新の推奨デフォルト値を使用します。 -
in-region– 標準モードに基づいて構築されており、同じ AWS リージョン 内から AWS のサービス を呼び出すアプリケーションに合わせた最適化が含まれています。 -
cross-region– 標準モードに基づいて構築されており、別のリージョンから AWS のサービス を呼び出すアプリケーションに合わせた最適化が含まれています。 -
mobile– 標準モードに基づいて構築されており、モバイルアプリケーションに合わせた最適化が含まれています。 -
auto– 標準モードに基づいて構築されており、実験的な機能が含まれています。SDK はランタイム環境を検出して適切な設定を自動的に決定しようとします。自動検出はヒューリスティックに基づいてあり、100% の精度は得られません。ランタイム環境を特定できない場合は、standardモードが使用されます。自動検出では、インスタンスのメタデータをクエリすることがあり、レイテンシーが発生する可能性があります。起動時のレイテンシーがアプリケーションにとって最重要な場合は、代わりに明示的なdefaults_modeを選択することをおすすめします。
configファイルにこの値を設定する例を以下に示します。[default]defaults_mode= standard以下のパラメータは、
defaults_modeの選択に基づいて最適化される可能性があります。-
retryMode– SDK が再試行を試みる方法を指定します。「再試行動作」を参照してください。 -
stsRegionalEndpoints– AWS Security Token Service (AWS STS) と通信するために使用する AWS のサービス エンドポイントを SDK が判別する方法を指定します。「AWS STS リージョンエンドポイント」を参照してください。 -
s3UsEast1RegionalEndpoints–us-east-1リージョンへの Amazon S3 と通信するために使用する AWS サービスエンドポイントを SDK が判別する方法を指定します。 -
connectTimeoutInMillis– ソケットで初めて接続を試みた後、タイムアウトするまでの時間。クライアントが接続ハンドシェイクの完了を受け取らない場合、クライアントは断念しオペレーションは失敗します。 -
tlsNegotiationTimeoutInMillis– CLIENT HELLO メッセージが送信されてから、クライアントとサーバーが暗号を完全にネゴシエートしてキーを交換するまでの TLS ハンドシェイクにかかる最大時間。
-
各設定のデフォルト値は、アプリケーションで選択した defaults_mode によって異なります。これらの値は、現在以下のように設定されています(変更される可能性があります)。
| パラメータ | standard モード |
in-region モード |
cross-region モード |
mobile モード |
|---|---|---|---|---|
retryMode
|
standard |
standard |
standard |
standard |
stsRegionalEndpoints
|
regional |
regional |
regional |
regional |
s3UsEast1RegionalEndpoints
|
regional |
regional |
regional |
regional |
connectTimeoutInMillis
|
3100 | 1100 | 3100 | 30000 |
tlsNegotiationTimeoutInMillis
|
3100 | 1100 | 3100 | 30000 |
たとえば、選択した defaults_mode が standard の場合、standard の値が(有効な retry_mode オプションから)retry_mode に割り当てられ、regional の値が(有効な stsRegionalEndpoints オプションから)stsRegionalEndpoints に割り当てられます。
AWS SDK とツールによるサポート
以下の SDK は、このトピックで説明する機能と設定をサポートします。部分的な例外があれば、すべて記載されています。JVM システムプロパティ設定は、AWS SDK for Java と AWS SDK for Kotlin でのみサポートされます。
| SDK | サポート | 注意または詳細情報 |
|---|---|---|
| AWS CLI v2 | なし | |
| SDK for C++ | あり | 最適化されていないパラメーター:stsRegionalEndpoints、s3UsEast1RegionalEndpoints、tlsNegotiationTimeoutInMillis。 |
| SDK for Go V2 (1.x) |
あり | 最適化されていないパラメーター:retryMode、stsRegionalEndpoints、s3UsEast1RegionalEndpoints。 |
| SDK for Go 1.x (V1) | なし | |
| SDK for Java 2.x | あり | 最適化されていないパラメーター:stsRegionalEndpoints。 |
| SDK for Java 1.x | なし | |
| SDK for JavaScript 3.x | あり | 最適化されていないパラメーター:stsRegionalEndpoints、s3UsEast1RegionalEndpoints、tlsNegotiationTimeoutInMillis。connectTimeoutInMillis は connectionTimeout と呼ばれます。 |
| SDK for JavaScript 2.x | なし | |
| SDK for Kotlin | なし | |
| SDK for .NET 4.x | あり | 最適化されていないパラメーター:connectTimeoutInMillis、tlsNegotiationTimeoutInMillis。 |
| SDK for .NET 3.x | あり | 最適化されていないパラメーター:connectTimeoutInMillis、tlsNegotiationTimeoutInMillis。 |
| SDK for PHP 3.x | あり | 最適化されていないパラメーター:tlsNegotiationTimeoutInMillis。 |
| SDK for Python (Boto3) |
あり | 最適化されていないパラメーター:tlsNegotiationTimeoutInMillis。 |
| SDK for Ruby 3.x | あり | |
| SDK for Rust | なし | |
| SDK for Swift | なし | |
| Tools for PowerShell V5 | あり | 最適化されていないパラメーター:connectTimeoutInMillis、tlsNegotiationTimeoutInMillis。 |
| Tools for PowerShell V4 | あり | 最適化されていないパラメーター:connectTimeoutInMillis、tlsNegotiationTimeoutInMillis。 |