

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

# AWS リージョン の の設定 AWS SDK for Java 2.x
<a name="region-selection"></a>

SDK クライアントは、クライアントの作成時に AWS リージョン 指定した特定の AWS のサービス の に接続します。この設定により、アプリケーションはその地理的エリアの AWS リソースとやり取りできます。リージョンを明示的に設定せずにサービスクライアントを作成すると、SDK は外部設定からデフォルトのリージョンを使用します。

## を明示的に設定する AWS リージョン
<a name="region-selection-choose-region"></a>

リージョンを明示的に設定するには、[Region](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/regions/Region.html) クラスで定義されている定数を使用することをお勧めします。これは、公開されている利用可能なすべてのリージョンを列挙したものです。

そのクラスで列挙されたリージョンが設定されたクライアントを作成するには、クライアントビルダーの `region` メソッドを使用します。

```
Ec2Client ec2 = Ec2Client.builder()
          .region(Region.US_WEST_2)
          .build();
```

使用するリージョンが `Region` クラスの列挙でない場合は、静的な `of` メソッドを使用して新しいリージョンを作成することができます。このメソッドを使用することで、SDK をアップグレードせずに、新しいリージョンにアクセスすることができます。

```
Region newRegion = Region.of("us-east-42");
Ec2Client ec2 = Ec2Client.builder()
          .region(newRegion)
          .build();
```

**注記**  
ビルダーを使用してクライアントを構築すると、そのクライアントは*イミュータブル*になり、 AWS リージョン *は変更できません*。同じサービス AWS リージョン で複数の を使用する必要がある場合は、リージョンごとに 1 つずつ、複数のクライアントを作成する必要があります。

## SDK が環境 AWS リージョン からデフォルトを自動的に決定できるようにする
<a name="automatically-determine-the-aws-region-from-the-environment"></a>

コードが Amazon EC2 または で実行されている場合 AWS Lambda、コードが実行されている AWS リージョン のと同じ を使用するようにクライアントを設定できます。これにより、コードが実行中の環境から切り離され、レイテンシーや冗長性を低く AWS リージョン するためにアプリケーションを複数の にデプロイすることが容易になります。

デフォルトの AWS リージョン プロバイダーチェーンを使用して環境からリージョンを決定するには、クライアントビルダーの `create`メソッドを使用します。

```
Ec2Client ec2 = Ec2Client.create();
```

他の方法でクライアントを設定することもできますが、リージョンを設定することはできません。SDK は、デフォルトのリージョンプロバイダーチェーン AWS リージョン を使用して を取得します。

```
Ec2Client ec2Client = Ec2Client.builder()
        .credentialsProvider(ProfileCredentialsProvider.builder()
                .profileName("my-profile")
                .build())
        .build();
```

`region` メソッド AWS リージョン を使用して を明示的に設定しない場合、SDK はデフォルトのリージョンプロバイダーチェーンを参照して、使用するリージョンを決定します。

### デフォルトの AWS リージョン プロバイダーチェーンについて
<a name="default-region-provider-chain"></a>

 **SDK は次の手順で AWS リージョンを検索します。**

1. ビルダー自体で `region` メソッドを使用して設定されている明示的なリージョンは、その他の設定より優先されます。

1. SDK は JVM システムプロパティ `aws.region` を検索し、見つかった場合はその値を使用します。

1. `AWS_REGION` 環境変数が確認されます。設定されている場合は、そのリージョンを使用してクライアントが設定されます。
**注記**  
 Lambda コンテナはこの環境変数を設定します。

1. SDK は、[AWS 共有設定ファイルと認証情報ファイル](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html)内のアクティブなプロファイルをチェックします。`region` プロパティがあると、SDK はこのプロパティを使用します。

   `default` プロファイルは、`AWS_PROFILE` 環境変数または `aws.profile` JVM システムプロパティによって上書きされない限り、アクティブなプロファイルです。SDK が同じプロファイル (`default` プロファイルを含む) の両方のファイルで `region` プロパティを見つけた場合、SDK は共有認証情報ファイルの値を使用します。

1. SDK は、 Amazon EC2 インスタンスメタデータサービス (IMDS) を使用して、現在実行中 Amazon EC2 のインスタンスのリージョンを決定しようとします。
   + セキュリティを強化するには、SDK が IMDS のバージョン 1 を使用しないようにする必要があります。同じ設定を使用して、 [IAM ロールの認証情報を安全に取得する](ec2-iam-roles.md#securely-read-IAM-role_credentials) セクションで説明されているバージョン 1 を無効にします。

1. この時点で SDK によってリージョンがまだ見つかっていない場合は、クライアント作成が失敗し、例外が発生します。

 AWS アプリケーションを開発する場合の一般的なアプローチは、*共有設定ファイル*を使用してローカル開発用のリージョンを設定し、アプリケーションが AWS インフラストラクチャ上で実行されるときにデフォルトのリージョンプロバイダーチェーンを使用してリージョンを決定することです。これによって、クライアントの作成が大幅に簡略化され、アプリケーションの性が維持されます。

## リージョンでサービスが使用可能かどうかを確認する
<a name="region-selection-query-service"></a>

特定の AWS のサービス がリージョンで使用可能かどうかを確認するには、サービスクライアントで静的`serviceMetadata`メソッドを使用します。

```
DynamoDbClient.serviceMetadata().regions().forEach(System.out::println);
```

前のスニペットは、DynamoDB サービスを持つ AWS リージョン コードの長いリストを出力します。

```
af-south-1
ap-east-1
ap-northeast-1
ap-northeast-2
ap-northeast-3
ap-south-1
ap-south-2
ap-southeast-1
...
```

コードを使用して、サービスクライアントが使用するリージョンの[リージョンクラスの列挙](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/regions/Region.html)を検索できます。

たとえば、`ap-northeast-2` コードを使用してリージョンで DynamoDB を使用する場合は、少なくとも次の設定を使用しt DynamoDB クライアントを作成します。

```
DynamoDbClient ddb = DynamoDbClient.builder()
    .region(Region.AP_NORTHEAST_2)
    .build();
```

## 特定のエンドポイントを選択する
<a name="choosing-a-specific-endpoint"></a>

サービスのプレビュー機能を一般公開前にテストする場合など、特定の状況では、リージョン内の特定のエンドポイントを指定する必要がある場合があります。このような状況では、`endpointOverride` メソッドを呼び出してサービスクライアントを設定できます。

たとえば、特定のエンドポイントで欧州 (アイルランド) リージョンを使用するように Amazon EC2 クライアントを設定するには、次のコードを使用します。

```
Ec2Client ec2 = Ec2Client.builder()
               .region(Region.EU_WEST_1)
               .endpointOverride(URI.create("https://ec2.eu-west-1.amazonaws.com"))
               .build();
```

すべての AWS サービスの[リージョンと対応するエンドポイントの現在のリストについては、](https://docs.aws.amazon.com/general/latest/gr/rande.html)「リージョンとエンドポイント」を参照してください。