

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

# で AWS 共有設定プロファイルを使用する AWS SDK for Java 2.x
<a name="credentials-profiles"></a>

共有 `config` と `credentials` ファイルを使用して、複数のプロファイルを設定できます。これにより、アプリケーションは複数の認証情報設定を使用できます。`[default]` プロファイルについては前述に記載したとおりです。SDK は、[ProfileCredentialsProvider](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/ProfileCredentialsProvider.html) クラスを使用して、共有 `credentials` ファイルで定義されたプロファイルから設定をロードします。

次のコードスニペットは、`my_profile` というプロファイルの一部として定義された認証情報を使用するサービスクライアントを構築する方法を示しています。

```
Region region = Region.US_WEST_2;
DynamoDbClient ddb = DynamoDbClient.builder()
      .region(region)
      .credentialsProvider(ProfileCredentialsProvider.create("my_profile"))
      .build();
```

## 別のプロファイルをデフォルトとして設定する
<a name="set-a-custom-profile-as-the-default"></a>

`[default]` プロファイル以外のプロファイルをアプリケーションのデフォルトとして設定するには、`AWS_PROFILE` 環境変数をカスタムプロファイルの名前に設定します。

この変数を Linux、macOS、または Unix で設定するには、`export` を使用します。

```
export AWS_PROFILE="other_profile"
```

Windows でこれらの変数を設定するには、`set` を使用します。

```
set AWS_PROFILE="other_profile"
```

または、`aws.profile` Java システムプロパティをプロファイルの名前に設定します。

## プロファイルの認証情報を再ロード
<a name="profile-reloading"></a>

ビルダーにプロファイル認証情報を再ロードする `profileFile()` メソッドを持つ認証情報プロバイダーならどれでも設定できます。これらの認証情報プロファイルクラスは `ProfileCredentialsProvider`、`DefaultCredentialsProvider`、`InstanceProfileCredentialsProvider`、および `ProfileTokenProvider.` です。

**注記**  
プロファイル認証情報の再ロードは、プロファイルファイル内の設定でのみ機能します。`aws_access_key_id`、`aws_secret_access_key`、および `aws_session_token`。  
`region`、`sso_session`、`sso_account_id`、および `source_profile` などの設定は無視されます。

サポートされている認証情報プロバイダーがプロファイル設定を再ロードするように設定するには、`profileFile()` ビルダーメソッドに [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/profiles/ProfileFileSupplier.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/profiles/ProfileFileSupplier.html) のインスタンスを指定します。次のコード例は、`[default]` プロファイルから認証情報設定を再ロードする `ProfileCredentialsProvider` を示しています。

```
ProfileCredentialsProvider provider = ProfileCredentialsProvider
    .builder()
    .profileFile(ProfileFileSupplier.defaultSupplier())
    .build();

// Set up a service client with the provider instance.
DynamoDbClient dynamoDbClient = DynamoDbClient.builder()
                    .region(Region.US_EAST_1)
                    .credentialsProvider(provider)
                    .build();

/*
    Before dynamoDbClient makes a request, it reloads the credentials settings 
    by calling provider.resolveCredentials().
*/
```

`ProfileCredentialsProvider.resolveCredentials()` が呼び出されると、SDK for Java は設定を再ロードします。`ProfileFileSupplier.defaultSupplier()` は SDK が提供する`ProfileFileSupplier` の[いくつかの便利な実装](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/profiles/ProfileFileSupplier.html)の 1 つです。ユースケースで必要な場合は、独自の実装を提供できます。

次の例は、`ProfileFileSupplier.reloadWhenModified()` の便利なメソッドの使用方法を示しています。`reloadWhenModified()` は `Path` パラメータを取るので、標準 `~/.aws/credentials` (または`config`) 場所ではなく、設定のソースファイルを柔軟に指定できます。

ファイルの内容が変更されたと SDK が判断した場合にのみ、`resolveCredentials()` が呼び出されたときに設定が再ロードされます。

```
Path credentialsFilePath = ...

ProfileCredentialsProvider provider = ProfileCredentialsProvider
    .builder()
    .profileFile(ProfileFileSupplier.reloadWhenModified(credentialsFilePath, ProfileFile.Type.CREDENTIALS))
    .profileName("my-profile")
    .build();
/*
    A service client configured with the provider instance calls provider.resolveCredential()
    before each request.
*/
```

`ProfileFileSupplier.aggregate()` メソッドは複数の設定ファイルの内容をマージします。`resolveCredentials()` への呼び出しごとにファイルを再ロードするか、ファイルの設定を最初に読み取った時点で固定するかを決めることができます。

次の例は、プロファイル設定を含む 2 つのファイルの設定を結合する `DefaultCredentialsProvider` を示しています。SDK は、`resolveCredentials()` が呼び出されて設定が変更されるたびに、`credentialsFilePath` 変数が指すファイル内の設定を再ロードします。`profileFile` オブジェクトの設定は変わりません。

```
Path credentialsFilePath = ...;
ProfileFile profileFile = ...;

DefaultCredentialsProvider provider = DefaultCredentialsProvider
        .builder()
        .profileFile(ProfileFileSupplier.aggregate(
                ProfileFileSupplier.reloadWhenModified(credentialsFilePath, ProfileFile.Type.CREDENTIALS),
                ProfileFileSupplier.fixedProfileFile(profileFile)))
        .profileName("my-profile")
        .build();
/*
    A service client configured with the provider instance calls provider.resolveCredential()
    before each request.
*/
```