AWS SDK for Java 1.x は 2024 年 7 月 31 日にメンテナンスモードに入り、2025 年 12 月 31 日にサポート終了
AWS リージョン 選択
リージョンを使用すると、特定の地域に物理的に存在する AWS のサービスにアクセスすることができます。これは、冗長性と、ユーザーがアクセスする場所の近くでのデータとアプリケーションの実行を維持するために有効です。
リージョンでのサービス可用性の確認
特定の AWS のサービス がリージョンで使用できるかどうかを確認するには、使用するリージョンで isServiceSupported メソッドを使用します。
Region.getRegion(Regions.US_WEST_2) .isServiceSupported(AmazonDynamoDB.ENDPOINT_PREFIX);
指定できるリージョンに関しては、「Regions」クラスのドキュメントを参照して、サービスのエンドポイントプレフィックスを使用してクエリを実行します。各サービスのエンドポイントプレフィックスはサービスインターフェイスで定義されています。たとえば、DynamoDB のエンドポイントプレフィックスは AmazonDynamoDB で定義されています。
リージョンを選択する
AWS SDK for Java のバージョン 1.4 から、リージョン名を指定でき、SDK は自動的に適切なエンドポイントを選択します。自分でエンドポイントを選択する場合は、「特定のエンドポイントの選択」を参照してください。
リージョンを明示的に設定するには、「Regions」列挙型を使用することをお勧めします。これは、公開されている利用可能なすべてのリージョンを列挙したものです。その列挙型からリージョンを使用してクライアントを作成するには、以下のコードを使用します。
AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard() .withRegion(Regions.US_WEST_2) .build();
使用するリージョンが Regions 列挙型にない場合は、リージョンの名前を示す string を使用してリージョンを設定できます。
AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard() .withRegion("{region_api_default}") .build();
注記
ビルダーを使用してクライアントをビルドした後、そのクライアントはイミュータブルとなり、リージョンは変更不可能です。同じサービスで複数の AWS リージョン を使用している場合は、複数のクライアント (リージョンごとに 1 つ) を作成する必要があります。
特定のエンドポイントの選択
各 AWS クライアントは、クライアントを呼び出す際に、withEndpointConfiguration メソッドを呼び出して、リージョン内の特定のエンドポイントを使用するように設定できます。
例えば、欧州 (アイルランド) リージョンを使用するように Amazon S3 クライアントを設定するには、次のコードを使用します。
AmazonS3 s3 = AmazonS3ClientBuilder.standard() .withEndpointConfiguration(new EndpointConfiguration( "https://s3.eu-west-1.amazonaws.com", "eu-west-1")) .withCredentials(CREDENTIALS_PROVIDER) .build();
すべての AWS のサービスで使用されるリージョンと対応するエンドポイントの最新リストについては、リージョンとエンドポイントを参照してください。
環境に基づくリージョンの自動的な決定
重要
このセクションは、クライアントビルダーを使用して AWS のサービスにアクセスする場合にのみ適用されます。クライアントコンストラクターを使用して作成された AWS クライアントは、環境からリージョンを自動的に決定せず、代わりにデフォルトの SDK リージョン (USEast1) を使用します。
Amazon EC2 または Lambda で実行する場合に、コードが実行されているリージョンと同じリージョンを使用するようにクライアントを構成することができます。そうすることによって、コードとそれが実行される環境が分離され、レイテンシーの低減や冗長化のために複数のリージョンにデプロイすることが容易になります。
コードが実行されているリージョンを SDK で自動的に検出するには、クライアントビルダーを使用する必要があります。
認証情報/リージョンのデフォルトプロバイダーチェーンを使用して環境からリージョンを決定するには、クライアントビルダーの defaultClient メソッドを使用します。
AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient();
これは、standard に続けて build を使用するのと同じです。
AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard() .build();
withRegion メソッドを使用してリージョンを明示的に設定しない場合は、SDK がリージョンのデフォルトプロバイダーチェーンに問い合わせて、使用するリージョンを決定しようとします。
デフォルトリージョンプロバイダーチェーン
リージョンルックアップ手順は以下のとおりです。
-
ビルダー自体で
withRegionまたはsetRegionを使用して設定されている明示的なリージョンは、その他の設定より優先されます。 -
AWS_REGION環境変数が確認されます。設定されている場合は、そのリージョンを使用してクライアントが設定されます。注記
この環境変数は Lambda コンテナによって設定されます。
-
SDK は AWS の共有設定ファイル (通常は
~/.aws/configにあります) を確認します。リージョンプロパティがあると、SDK はこのプロパティを使用します。-
AWS_CONFIG_FILE環境変数を使用すると、共有設定ファイルの場所をカスタマイズできます。 -
AWS_PROFILE環境変数またはaws.profileシステムプロパティを使用すると、SDK によってロードされるプロファイルをカスタマイズできます。
-
-
SDK は、Amazon EC2 インスタンスのメタデータサービスを使用して現在実行中の Amazon EC2 インスタンスのリージョンを決定しようとします。
-
この時点で SDK によってリージョンがまだ見つかっていない場合は、クライアント作成が失敗し、例外が発生します。
AWS アプリケーション開発の一般的なアプローチとしては、ローカル開発では共有設定ファイル (認証情報のデフォルトプロバイダーチェーンの使用を参照) を使用してリージョンを設定し、AWS インフラストラクチャでの実行時には、リージョンのデフォルトプロバイダーチェーンに依存してリージョンを決定します。これによって、クライアントの作成が大幅に簡略化され、アプリケーションの性が維持されます。