

 AWS SDK for Java 1.x는 2025년 12월 31일에 end-of-support되었습니다. 새로운 기능, 가용성 개선 및 보안 업데이트를 계속 받으려면 [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html)로 마이그레이션하는 것이 좋습니다.

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

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

요청을 하려면 Amazon Web Services먼저 서비스 클라이언트 객체를 생성합니다. 권장 방법은 서비스 클라이언트 빌더를 사용하는 것입니다.

각 AWS 서비스 에는 서비스 API의 각 작업에 대한 메서드가 있는 서비스 인터페이스가 있습니다. 예를 들어 DynamoDB의 서비스 인터페이스 이름은 [AmazonDynamoDBClient](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/AmazonDynamoDBClient.html)입니다. 각 서비스 인터페이스마다 서비스 인터페이스의 구현을 생성하는 데 사용할 수 있는 해당하는 클라이언트 빌더가 있습니다. 에 대한 클라이언트 빌더 클래스의 이름은 [AmazonDynamoDBClientBuilder](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/dynamodbv2/AmazonDynamoDBClientBuilder.html) DynamoDB 입니다.

## 클라이언트 빌더 가져오기
<a name="obtaining-a-client-builder"></a>

클라이언트 빌더의 인스턴스를 가져오려면 다음 예에서처럼 정적 팩토리 메서드인 `standard`를 사용합니다.

```
AmazonDynamoDBClientBuilder builder = AmazonDynamoDBClientBuilder.standard();
```

빌더가 있으면 빌더 API에서 여러 유용한 setter를 사용하여 클라이언트의 속성을 사용자 지정할 수 있습니다. 예를 들면 다음과 같이 사용자 지정 리전 및 사용자 지정 자격 증명 공급자를 설정할 수 있습니다.

```
AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.standard()
                        .withRegion(Regions.US_WEST_2)
                        .withCredentials(new ProfileCredentialsProvider("myProfile"))
                        .build();
```

**참고**  
유용한 `withXXX` 메서드는 `builder` 객체를 반환하므로 보다 읽기 쉽고 편리하도록 메서드 호출을 묶을 수 있습니다. 원하는 속성을 구성한 후에는 `build` 메서드를 호출하여 클라이언트를 생성할 수 있습니다. 클라이언트는 한 번 생성되고 나면 변경할 수 없으며 `setRegion` 또는 `setEndpoint` 호출이 실패합니다.

빌더는 동일한 구성을 사용하여 여러 클라이언트를 생성할 수 있습니다. 애플리케이션을 작성할 때는 빌더가 변경 가능하며 스레드 세이프가 아님에 주의해야 합니다.

다음 코드에서는 빌더가 클라이언트 인스턴스의 팩토리로 사용됩니다.

```
public class DynamoDBClientFactory {
    private final AmazonDynamoDBClientBuilder builder =
        AmazonDynamoDBClientBuilder.standard()
            .withRegion(Regions.US_WEST_2)
            .withCredentials(new ProfileCredentialsProvider("myProfile"));

    public AmazonDynamoDB createClient() {
        return builder.build();
    }
}
```

빌더는 [ClientConfiguration](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/ClientConfiguration.html) 및 [RequestMetricCollector](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/metrics/RequestMetricCollector.html)의 유용한 setter와, [RequestHandler2](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/handlers/RequestHandler2.html)의 사용자 지정 목록도 표시합니다.

다음은 모든 구성 가능한 속성을 재정의하는 전체 예제입니다.

```
AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.standard()
        .withRegion(Regions.US_WEST_2)
        .withCredentials(new ProfileCredentialsProvider("myProfile"))
        .withClientConfiguration(new ClientConfiguration().withRequestTimeout(5000))
        .withMetricsCollector(new MyCustomMetricsCollector())
        .withRequestHandlers(new MyCustomRequestHandler(), new MyOtherCustomRequestHandler)
        .build();
```

## 비동기 클라이언트 생성
<a name="creating-async-clients"></a>

 AWS SDK for Java 에는 모든 서비스(제외)에 대한 비동기(또는 비동기 Amazon S3) 클라이언트와 모든 서비스에 해당하는 비동기 클라이언트 빌더가 있습니다.

### 기본 ExecutorService를 사용하여 비동기 DynamoDB 클라이언트를 생성하려면
<a name="w3aab9c13b9b5"></a>

```
AmazonDynamoDBAsync ddbAsync = AmazonDynamoDBAsyncClientBuilder.standard()
        .withRegion(Regions.US_WEST_2)
        .withCredentials(new ProfileCredentialsProvider("myProfile"))
        .build();
```

동기(또는 동기화) 클라이언트 빌더가 지원하는 구성 옵션 외에도, 비동기 클라이언트를 사용할 때 사용자 지정 [ExecutorFactory](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/client/builder/ExecutorFactory.html)를 설정하여 비동기 클라이언트가 사용하는 `ExecutorService`을 변경할 수 있습니다. `ExecutorFactory`는 함수형 인터페이스이므로 Java 8 Lambda 표현식 및 메서드 참조와 상호 운용됩니다.

### 사용자 지정 executor를 사용하여 비동기 클라이언트를 생성하려면
<a name="w3aab9c13b9b9"></a>

```
AmazonDynamoDBAsync ddbAsync = AmazonDynamoDBAsyncClientBuilder.standard()
            .withExecutorFactory(() -> Executors.newFixedThreadPool(10))
            .build();
```

## DefaultClient 사용
<a name="using-defaultclient"></a>

동기 및 비동기 클라이언트 빌더에는 모두 `defaultClient`라는 또 다른 팩토리 메서드가 있습니다. 이 메서드는 기본 구성을 사용하여 서비스 클라이언트를 생성하며, 기본 공급자 체인을 사용하여 자격 증명 및 AWS 리전을 로드합니다. 자격 증명 또는 리전을 애플리케이션이 실행 중인 환경에서 확인할 수 없으면 `defaultClient` 호출이 실패합니다. 자격 [AWS 증명 및 리전 결정 방법에 대한 자세한 내용은 자격 증명 및 선택 작업을 참조하세요](credentials.md). [AWS 리전](java-dg-region-selection.md) 

### 기본 서비스 클라이언트를 생성하려면
<a name="w3aab9c13c11b5"></a>

```
AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient();
```

## 클라이언트 수명 주기
<a name="client-lifecycle"></a>

SDK의 서비스 클라이언트는 스레드 세이프이며, 성능을 최대화하려면 서비스 클라이언트를 수명이 긴 객체로 다루어야 합니다. 각 클라이언트마다 고유한 연결 풀 리소스가 있습니다. 더 이상 필요하지 않은 경우 리소스 누수를 방지하기 위해 클라이언트를 명시적으로 종료하십시오.

클라이언트를 명시적으로 종료하려면 `shutdown` 메서드를 호출합니다. `shutdown`을 호출한 후에는 모든 클라이언트 리소스가 해제되고 클라이언트를 사용할 수 없습니다.

### 클라이언트를 종료하려면
<a name="w3aab9c13c13b7"></a>

```
AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient();
ddb.shutdown();
// Client is now unusable
```