

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

# Apache 5.x 기반 HTTP 클라이언트 구성
<a name="http-configuration-apache5"></a>

## Apache5HttpClient 액세스
<a name="http-apache-5-dependency"></a>

를 사용하려면에 대한 종속성을 추가**apache5-client**하고 서비스 클라이언트`Apache5HttpClient`에 대해를 명시적으로 구성`Apache5HttpClient`해야 합니다.

```
<dependencyManagement>
   <dependencies>
        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>bom</artifactId>
            <version>2.41.0*</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>s3</artifactId>
    </dependency>
    
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>apache5-client</artifactId>
    </dependency>
</dependencies>
```

\$1빨간색으로 표시된 버전을 사용하려는 Java SDK 버전으로 바꿉니다. [Maven Central](https://central.sonatype.com/artifact/software.amazon.awssdk/bom)에서 최신 정보를 찾습니다.

### `Apache5HttpClient` 사용 및 구성
<a name="http-config-apache-5-config"></a>

서비스 클라이언트 구축과 함께 `Apache5HttpClient`의 인스턴스를 구성하거나 여러 서비스 클라이언트에서 공유하도록 단일 인스턴스를 구성할 수 있습니다.

어느 접근 방식이든 [Apache5HttpClient.Builder](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache5/Apache5HttpClient.Builder.html)를 사용하여 Apache 5 기반 HTTP 클라이언트의 속성을 구성합니다.

#### 모범 사례: Apache5HttpClient 인스턴스를 서비스 클라이언트에 전용
<a name="http-apache5-dedicated-instance"></a>

`Apache5HttpClient`의 인스턴스를 구성해야 하는 경우 전용 `Apache5HttpClient` 인스턴스를 구축하는 것이 좋습니다. 서비스 클라이언트 빌더의 httpClientBuilder 메서드를 사용하여이 작업을 수행할 수 있습니다. 이렇게 하면 SDK에서 HTTP 클라이언트의 수명 주기를 관리하므로 더 이상 필요하지 않을 때 `Apache5HttpClient` 인스턴스를 종료하지 않을 경우 잠재적인 메모리 누수를 방지할 수 있습니다.

다음 예제에서는 S3Client를 생성하고 maxConnections 및 connectionTimeout 값을 `Apache5HttpClient` 사용하여의 임베디드 인스턴스를 구성합니다. HTTP 인스턴스는 `S3Client.Builder`의 `httpClientBuilder` 메서드를 사용하여 생성됩니다.

**가져오기**

```
import software.amazon.awssdk.http.apache5.Apache5HttpClient;
import software.amazon.awssdk.services.s3.S3Client;
import java.time.Duration;
```

**코드**

```
S3Client s3Client = S3Client   // Singleton: Use the s3Client for all requests.
    .builder()
    .httpClientBuilder(Apache5HttpClient.builder()
        .maxConnections(100)
        .connectionTimeout(Duration.ofSeconds(5))
    )
    .build();

// Perform work with the s3Client.

s3Client.close();   // Requests completed: Close all service clients.
```

#### 대안 접근 방식: `Apache5HttpClient` 인스턴스 공유
<a name="http-apache5-shared-instance"></a>

애플리케이션의 리소스 및 메모리 사용량을 낮추려면 `Apache5HttpClient`를 구성하고 여러 서비스 클라이언트에서 공유할 수 있습니다. HTTP 연결 풀이 공유되므로 리소스 사용량이 줄어듭니다.

**참고**  
`Apache5HttpClient` 인스턴스를 공유한 경우 폐기할 준비가 되면 인스턴스를 닫아야 합니다. SDK는 서비스 클라이언트가 닫힐 때 인스턴스를 닫지 않습니다.

다음 예제는 두 서비스 클라이언트에서 사용하는 Apache 기반 HTTP 클라이언트를 구성하는 예제입니다. 구성된 `ApacheHttpClient` 인스턴스는 각 빌더의 httpClient 메서드로 전달됩니다. 서비스 클라이언트와 HTTP 클라이언트가 더 이상 필요하지 않으면 코드가 명시적으로 닫습니다. 코드는 HTTP 클라이언트를 마지막으로 닫습니다.

**가져오기**

```
import software.amazon.awssdk.http.SdkHttpClient;
import software.amazon.awssdk.http.apache5.Apache5HttpClient;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.s3.S3Client;
```

**코드**

```
SdkHttpClient apache5HttpClient = Apache5HttpClient.builder()
        .maxConnections(100).build();

// Singletons: Use the s3Client and dynamoDbClient for all requests.
S3Client s3Client = 
    S3Client.builder()
            .httpClient(apache5HttpClient).build();

DynamoDbClient dynamoDbClient = 
    DynamoDbClient.builder()
                  .httpClient(apache5HttpClient).build();

// Perform work with the s3Client and dynamoDbClient.

// Requests completed: Close all service clients.
s3Client.close();
dynamoDbClient.close();
apache5HttpClient.close();  // Explicitly close apache5HttpClient.
```