

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 에서 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()`가 호출되면 Java용 SDK가 설정을 다시 로드합니다. `ProfileFileSupplier.defaultSupplier()`는 SDK에서 제공하는 `ProfileFileSupplier`의 [여러 편의 구현](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/profiles/ProfileFileSupplier.html) 중 하나입니다. 사용 사례에 필요한 경우 자체 구현을 제공할 수 있습니다.

다음 예제는 `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()`를 호출할 때마다 다시 로드할지 아니면 파일을 처음 읽을 때 파일 설정을 고정할지를 결정합니다.

다음 예제는 프로필 설정이 포함된 두 파일의 설정을 병합하는 `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.
*/
```