外部での AWS SDK for Java 2.x サービスクライアントの設定
多くの設定はコードの外部で管理できます。設定を外部で処理する場合、同じ Java プロセス内のすべてのアプリケーションに適用できます。ほとんどの設定は、環境変数、JVM システムプロパティ、または個別の共有 AWS config ファイルのいずれかとして設定できます。共有 config ファイルでは「プロファイル」と呼ばれる異なる設定セットを保持して、環境やテストごとに異なる設定を提供できます。
ほとんどの環境変数と共有 config ファイルの設定は標準化されており、AWS SDK やツール全体で共有されて、異なる言語やアプリ間でも一貫した機能をサポートします。多くの場合、SDK for Java が使用できる JVM システムプロパティは環境変数をミラーリングします。
SDK 設定の詳細については、「AWS SDK とツールのリファレンスガイド」を参照してください。SDK が環境変数、JVM システムプロパティ、設定ファイルから解決できるすべての設定を確認するには、「AWS SDK とツールのリファレンスガイド」の「設定リファレンス」を参照してください。
クライアント設定の設定プロバイダーチェーン
SDK は、複数の場所 (またはソース) を確認して設定値を見つけます。
-
コードまたはサービスクライアント自体に設定されている明示的な設定は、他の設定よりも優先されます。
-
JVM システムプロパティ
-
JVM システムプロパティの設定の詳細については、「AWS SDK およびツールリファレンスガイド」の「JVM システムプロパティの設定方法」を参照してください。
-
-
環境変数
-
環境変数の設定の詳細については、「AWS SDK とツールのリファレンスガイド」の「環境変数」を参照してください。
-
シェルの環境変数は、システム全体、ユーザー全体、特定のターミナルセッションなど、さまざまなスコープレベルで設定できることに注意してください。
-
-
共有
configおよびcredentialsファイル-
これらのファイルの設定については、「AWS SDK とツールのリファレンスガイド」の「共有
configファイルとcredentialsファイル」を参照してください。
-
-
SDK ソースコード自体が提供するデフォルト値が最後に使用されます。
-
Region などの一部のプロパティにはデフォルトがありません。これらのプロパティは、コード、環境設定、または共有
configファイルのいずれかで明示的に指定する必要があります。SDK が必要な設定を解決できない場合、API リクエストは実行時に失敗する可能性があります。
-
この一般的な設定チェーンに加えて、SDK for Java 2.x は認証情報プロバイダーチェーンや AWS リージョン プロバイダーチェーンなどの特殊なプロバイダーチェーンも使用します。これらの特殊なチェーンは、SDK が実行されている環境を考慮したプロバイダーを追加します。たとえば、コンテナまたは EC2 インスタンスなどです。
外部設定を使用して設定されたサービスクライアントの作成
AWS のサービス と通信するには、アプリケーションにサービスクライアントを作成する必要があります。サービスクライアントは AWS のサービス への重要な接続であり、複雑な通信の詳細をすべて処理するため、ユーザーには負担がかかりません。セキュリティ、エラー処理、再試行などの重要なタスクを自動的に処理するため、ユーザーは技術的な複雑さに対処するのではなく、アプリケーションの構築に集中できます。
create() メソッドの使用
必要なすべての設定が外部ソースからのものである場合は、シンプルな方法でサービスクライアントを作成できます。
S3Client s3Client = S3Client.create();
前のコードスニペットにより S3Client インスタンスが作成されます。作成時に、SDK は設定を取得するために設定プロバイダチェーンを順に参照します。SDK が設定値を見つけると、チェーンの後方に別の構成が存在していても、その値が使用されます。
たとえば、ユーザーがシステムプロパティ -Daws.region=us-west-2 を設定して AWS リージョン の JVM を設定したとします。AWS_REGION 環境変数も設定されている場合、その値は無視されます。
デフォルトのリージョンプロバイダーチェーンとデフォルトの認証情報プロバイダーチェーンも、作成プロセスで使用されます。チェーン上のどこかで、SDK は使用する AWS リージョン を解決し、リクエスト署名のための認証情報を取得できるようにする設定を見つける必要があります。SDK がこれらの値を見つけられない場合、クライアントの作成は失敗します。
この空のビルダーパターンを使用してクライアントを作成できますが、通常、このパターンはコードで設定を追加するときに使用します。
SDK for Java 2.x 環境変数と JVM システムプロパティ
ほとんどの AWS SDK でサポートされているクロス SDK 設定に加えて、SDK for Java 2.x は以下の設定を提供します。
注記
これらの環境変数と JVM システムプロパティは、主に高度なユースケース、テスト、または特定のデプロイシナリオを対象としています。ほとんどのアプリケーションコードでは、より高い型の安全性と IDE サポートを得るために、SDK のクライアントビルダーが提供するプログラムによる設定オプションを使用することが推奨されます。
コンテナ認証情報プロバイダーの環境変数
リファレンスガイドに記載されている標準のコンテナ認証情報環境変数に加えて、SDK は以下もサポートしています。
AWS_CONTAINER_SERVICE_ENDPOINT – この環境変数は、コンテナ認証情報プロバイダーを使用するときにコンテナメタデータサービスのエンドポイントを指定します。
Java のシステムプロパティ: aws.containerServiceEndpoint
デフォルト値: http://169.254.170.2
HTTP クライアント実装環境変数
SYNC_HTTP_SERVICE_IMPL – SDK が使用するデフォルトの同期 HTTP 実装を明示的に識別します。これは、クラスパス上に複数の実装が存在する場合に便利です。または、実装の検出にはクラスパスのスキャンが必要となるため、パフォーマンス最適化として有効です。
Java のシステムプロパティ: software.amazon.awssdk.http.service.impl
ASYNC_HTTP_SERVICE_IMPL – SDK が使用するデフォルトの非同期 HTTP 実装を明示的に識別します。これは、クラスパス上に複数の実装が存在する場合に便利です。または、実装の検出にはクラスパスのスキャンが必要となるため、パフォーマンス最適化として有効です。
Java のシステムプロパティ: software.amazon.awssdk.http.async.service.impl