

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

# 서비스 클라이언트 생성
<a name="creating-clients"></a>

에 요청하려면 먼저 해당 서비스의 클라이언트를 인스턴스화 AWS 서비스해야 합니다.

사용할 HTTP 클라이언트, 로깅 수준 및 재시도 구성과 같은 서비스 클라이언트에 대한 공통 설정을 구성할 수 있습니다. 또한 각 서비스 클라이언트에는 AWS 리전 및 자격 증명 공급자가 필요합니다. SDK는 이러한 값을 사용하여 올바른 리전으로 요청을 보내고 올바른 자격 증명으로 요청에 서명합니다.

이러한 값은 코드에서 프로그래밍 방식으로 지정하거나 환경에서 자동으로 로드할 수 있습니다.

## 코드로 클라이언트 구성
<a name="programmatic-config"></a>

특정 값으로 서비스 클라이언트를 구성하려면 다음 코드 조각과 같이 서비스 클라이언트 팩토리 메서드에 전달된 Lambda 함수에서 해당 값을 지정할 수 있습니다.

```
val dynamoDbClient = DynamoDbClient {
    region = "us-east-1"
    credentialsProvider = ProfileCredentialsProvider(profileName = "myprofile")
}
```

구성 블록에서 지정하지 않은 모든 값은 기본값으로 설정됩니다. 예를 들어 이전 코드와 같이 자격 증명 공급자를 지정하지 않으면 자격 증명 공급자가 기본 [자격 증명 공급자 체인으로 기본 설정됩니다](credential-providers.md#default-credential-provider-chain).

**주의**  
와 같은 일부 속성에는 기본값이 `region` 없습니다. 프로그래밍 방식 구성을 사용할 때는 구성 블록에서 명시적으로 지정해야 합니다. SDK가 속성을 확인할 수 없는 경우 API 요청이 실패할 수 있습니다.

## 환경에서 클라이언트 구성
<a name="loading-from-the-environment"></a>

서비스 클라이언트를 생성할 때 SDK는 현재 실행 환경의 위치를 검사하여 일부 구성 속성을 확인할 수 있습니다. 이러한 위치에는 [공유 구성 및 자격 증명 파일](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html), [환경 변수](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html) 및 [JVM 시스템 속성](https://docs.aws.amazon.com/sdkref/latest/guide/jvm-system-properties.html)이 포함됩니다. 확인할 수 있는 속성에는 [AWS 리전](region-selection.md), [재시도 전략](retries.md), [로그 모드](logging.md#sdk-log-mode) 등이 포함됩니다. SDK가 실행 환경에서 확인할 수 있는 모든 설정에 대한 자세한 내용은 [AWS SDKs 및 도구 설정 참조 가이드를 참조하세요](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html).

환경 소스 구성으로 클라이언트를 생성하려면 서비스 클라이언트 인터페이스`suspend fun fromEnvironment()`에서 정적 메서드를 사용합니다.

```
val dynamoDbClient = DynamoDbClient.fromEnvironment()
```

이러한 방식으로 클라이언트를 생성하면 Amazon EC2 AWS Lambda또는 환경에서 서비스 클라이언트의 구성을 사용할 수 있는 기타 컨텍스트에서 실행할 때 유용합니다. 이렇게 하면 실행 중인 환경에서 코드를 분리하고 코드를 변경하지 않고도 애플리케이션을 여러 리전에 더 쉽게 배포할 수 있습니다.

또한 Lambda 블록을에 전달하여 특정 속성을 재정의할 수 있습니다`fromEnvironment`. 다음 예제에서는 환경(예: 리전)에서 일부 구성 속성을 로드하지만 특히 자격 증명 공급자를 재정의하여 프로필의 자격 증명을 사용합니다.

```
val dynamoDbClient = DynamoDbClient.fromEnvironment { 
    credentialsProvider = ProfileCredentialsProvider(profileName = "myprofile")
}
```

SDK는 프로그래밍 방식 설정이나 환경에서 확인할 수 없는 구성 속성에 기본값을 사용합니다. 예를 들어 코드 또는 환경 설정에서 자격 증명 공급자를 지정하지 않으면 자격 증명 공급자의 기본값은 [기본 자격 증명 공급자 체인](credential-providers.md#default-credential-provider-chain)입니다.

**주의**  
리전과 같은 일부 속성에는 기본값이 없습니다. 환경 설정에서 지정하거나 구성 블록에서 명시적으로 지정해야 합니다. SDK가 속성을 확인할 수 없는 경우 API 요청이 실패할 수 있습니다.

**참고**  
임시 액세스 키 및 SSO 구성과 같은 자격 증명 관련 속성은 실행 환경에서 찾을 수 있지만 생성 시 클라이언트가 값을 소싱하지 않습니다. 대신 각 요청에서 자격 증명 공급자 계층이 값에 액세스합니다.

## 클라이언트 닫기
<a name="closing-the-client"></a>

서비스 클라이언트가 더 이상 필요하지 않은 경우 서비스 클라이언트를 닫아 사용 중인 리소스를 해제합니다.

```
val dynamoDbClient = DynamoDbClient.fromEnvironment()
// Invoke several DynamoDB operations.
dynamoDbClient.close()
```

서비스 클라이언트는 [https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/-closeable/index.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/-closeable/index.html) 인터페이스를 확장하므로 다음 코드 조각과 같이 [https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/use.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/use.html) 확장을 사용하여 블록 끝에 클라이언트를 자동으로 닫을 수 있습니다.

```
DynamoDbClient.fromEnvironment().use { dynamoDbClient ->
    // Invoke several DynamoDB operations.
}
```

이전 예제에서 Lambda 블록은 방금 생성된 클라이언트에 대한 참조를 수신합니다. 이 클라이언트 참조에 대한 작업을 호출할 수 있으며 예외 발생을 포함하여 블록이 완료되면 클라이언트가 닫힙니다.