

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

# 에서 HTTP 클라이언트 구성 AWS SDK for Java 2.x
<a name="http-configuration"></a>

이 섹션에서는 서비스 클라이언트에 사용할 HTTP 클라이언트를 변경하고 AWS SDK for Java 2.x를 사용하여 HTTP 클라이언트의 기본 구성을 변경할 수 있습니다. 이 단원에서는 SDK의 HTTP 클라이언트 및 설정에 대해 설명합니다.

## SDK for Java에서 사용 가능한 HTTP 클라이언트
<a name="http-clients-available"></a>

### 동기식 HTTP 클라이언트
<a name="http-config-sync"></a>

SDK for Java의 동기식 HTTP 클라이언트는 [SdkHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/SdkHttpClient.html) 인터페이스를 구현합니다. 동기식 서비스 클라이언트(예: `S3Client` 또는 `DynamoDbClient`)를 사용하려면 동기식 HTTP 클라이언트를 사용해야 합니다. 는 세 개의 동기 HTTP 클라이언트를 AWS SDK for Java 제공합니다.

**ApacheHttpClient(기본값)**  
[ApacheHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache/ApacheHttpClient.html)는 동기 서비스 클라이언트를 위한 기본 HTTP 클라이언트입니다. `ApacheHttpClient` 구성에 대한 내용은 [Apache 기반 HTTP 클라이언트 설정](http-configuration-apache.md)을 참조하세요.

**AwsCrtHttpClient**  
[AwsCrtHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/crt/AwsCrtHttpClient.html)는 높은 처리량과 비차단 IO를 제공합니다. 공통 AWS 런타임(CRT) Http 클라이언트를 기반으로 합니다. `AwsCrtHttpClient`를 구성하고 서비스 클라이언트와 함께 사용하는 방법에 대한 자세한 내용은 [AWS CRT 기반 HTTP 클라이언트 구성](http-configuration-crt.md)을 참조하세요.

**UrlConnectionHttpClient**  
애플리케이션에서 사용하는 항아리 및 타사 라이브러리 수를 최소화하려면 [UrlConnectionHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/urlconnection/UrlConnectionHttpClient.html)를 사용하면 됩니다. `UrlConnectionHttpClient` 구성에 대한 내용은 [URL 연결 기반 HTTP 클라이언트 구성](http-configuration-url.md)을 참조하세요.

**Apache5HttpClient**  
[Apache5HttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache5/Apache5HttpClient.html)는 Apache 5.x HttpClient를 기반으로 구축`ApacheHttpClient`된의 업데이트된 버전입니다. * HttpClient 버전 5.x*는 Apache에서 적극적으로 유지 관리하는 버전이며, Java 21에 대한 가상 스레드 지원, SLF4J를 통한 향상된 로깅 유연성 등 최신 Java 에코시스템 호환성을 `ApacheHttpClient` 제공하여에서 사용하는 이전 버전을 개선합니다. `Apache5HttpClient`는 향후 버전의 Java 2.x용 AWS SDK에서를 기본 동기식 클라이언트`ApacheHttpClient`로 대체합니다. API와 기능이 동일하므로 드롭인 대체로 적합합니다. `Apache5HttpClient` 구성에 대한 내용은 [Apache 5.x 기반 HTTP 클라이언트 구성](http-configuration-apache5.md)을 참조하세요.

### 비동기 클라이언트
<a name="http-config-async"></a>

SDK for Java의 비동기 HTTP 클라이언트는 [SdkAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/async/SdkAsyncHttpClient.html) 인터페이스를 구현합니다. 비동기 서비스 클라이언트(예: `S3AsyncClient` 또는 `DynamoDbAsyncClient`)를 사용하려면 비동기 HTTP 클라이언트를 사용해야 합니다. 는 두 개의 비동기 HTTP 클라이언트를 AWS SDK for Java 제공합니다.

**NettyNioAsyncHttpClient(기본값)**  
[NettynioAsynchTPClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/nio/netty/NettyNioAsyncHttpClient.html)는 비동기 클라이언트가 사용하는 기본 HTTP 클라이언트입니다. `NettyNioAsyncHttpClient` 구성에 대한 내용은 [Netty 기반 HTTP 클라이언트를 구성](http-configuration-netty.md)을 참조하세요.

**AwsCrtAsyncHttpClient**  
[AwsCrtAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.html)는 AWS 공통 런타임(CRT) HTTP 클라이언트를 기반으로 합니다. `AwsCrtAsyncHttpClient` 구성에 대한 내용은 [AWS CRT 기반 HTTP 클라이언트 구성](http-configuration-crt.md)을 참조하세요.

## HTTP 클라이언트 권장 사항
<a name="http-clients-recommend"></a>

HTTP 클라이언트 구현을 선택할 때는 몇 가지 요인이 작용합니다. 다음 정보는 결정을 하는 데 도움을 줍니다.

### HTTP 클라이언트 비교
<a name="http-clients-recommend-compare"></a>

다음 표에는 각 HTTP 클라이언트에 대한 자세한 정보가 나와 있습니다.


| HTTP 클라이언트 | 동기 또는 비동기 | 사용해야 하는 경우 | 제한 및 단점 | 
| --- | --- | --- | --- | 
|  Apache 기반 HTTP 클라이언트 *(기본 동기화 HTTP 클라이언트)* | 동기화 | 높은 처리량보다 낮은 지연 시간을 선호하는 경우 사용  | 다른 HTTP 클라이언트에 비해 시작 시간이 느림 | 
| URLConnection 기반 HTTP 클라이언트 | 동기화 | 타사 종속성을 제한해야 하는 까다로운 요구 사항이 있는 경우 사용 | • Amazon APIGateway 업데이트 작업과 같은 일부 APIs를 지원하지 않음<br />• 구성 가능한 유휴 연결 제한 시간을 지원하지 않습니다. 자세한 내용은 [ URLConnection 기반 HTTP 클라이언트 구성을](http-configuration-url.md) 참조하세요. | 
| AWS CRT 기반 동기화 HTTP 클라이언트1  | 동기화 | • 애플리케이션이에서 실행 중인 경우 사용 AWS Lambda<br />• 짧은 지연 시간보다 높은 처리량을 선호하는 경우 사용<br />• SDK 클라이언트 동기화를 선호하는 경우 사용 | 다음 Java 시스템 속성은 지원되지 않습니다.[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/sdk-for-java/latest/developer-guide/http-configuration.html) | 
|  Netty 기반 HTTP 클라이언트 *(기본 비동기 HTTP 클라이언트)* | 비동기 | • 애플리케이션이 TLS 구성에 Java 시스템 속성(예: `javax.net.ssl.keyStore`)을 사용하는 경우 사용합니다. | 다른 HTTP 클라이언트에 비해 시작 시간이 느림 | 
|  AWS CRT 기반 비동기 HTTP 클라이언트1  | 비동기 | • 애플리케이션이 AWS Lambda에서 실행 중인 경우 사용<br />• 짧은 지연 시간보다 높은 처리량을 선호하는 경우 사용• SDK 클라이언트 비동기화를 선호하는 경우 사용 | 다음 Java 시스템 속성은 지원되지 않습니다.[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/sdk-for-java/latest/developer-guide/http-configuration.html) | 

1추가적인 이점 때문에 가능하면 AWS CRT 기반 HTTP 클라이언트를 사용하는 것이 좋습니다.

## 스마트 구성 기본값
<a name="http-config-smart-defaults"></a>

 AWS SDK for Java 2.x (버전 2.17.102 이상)는 스마트 구성 기본 기능을 제공합니다. 이 기능은 HTTP 클라이언트에 영향을 주지 않는 다른 속성과 함께 두 개의 HTTP 클라이언트 속성을 최적화합니다.

스마트 구성 기본값은 사용자가 제공한 기본값 모드 값을 기반으로 `connectTimeoutInMillis` 및 `tlsNegotiationTimeoutInMillis` 속성에 적절한 값을 설정합니다. 애플리케이션의 특성에 따라 기본 모드 값을 선택합니다.

스마트 구성 기본값 및 애플리케이션에 가장 적합한 기본값 모드 값을 선택하는 방법에 대한 자세한 내용은 [AWS SDK 및 도구 참조 안내서](https://docs.aws.amazon.com/sdkref/latest/guide/feature-smart-config-defaults.html)를 참조하세요.

다음은 애플리케이션의 기본값 모드를 설정하는 네 가지 방법입니다.

------
#### [ Service client ]

서비스 클라이언트 빌더를 사용하여 서비스 클라이언트에서 직접 기본 모드를 구성하세요. 다음 예제에서는 `DynamoDbClient`에 대한 기본 출력 형식을 `auto`로 설정합니다.

```
DynamoDbClient ddbClient = DynamoDbClient.builder()
                            .defaultsMode(DefaultsMode.AUTO)
                            .build();
```

------
#### [ System property ]

`aws.defaultsMode` 시스템 속성을 사용하여 기본 모드를 지정할 수 있습니다. Java에서 시스템 속성을 설정하는 경우 서비스 클라이언트를 초기화하기 전에 속성을 설정해야 합니다.

다음 예제에서는 Java에서 설정된 시스템 속성을 사용하여 기본 모드를 `auto`로 설정하는 방법을 보여줍니다.

```
System.setProperty("aws.defaultsMode", "auto");
```

다음 예제는 `java` 명령의 `-D` 옵션을 사용하여 기본값 모드를 `auto`로 설정하는 방법을 보여줍니다.

```
java -Daws.defaultsMode=auto
```

------
#### [ Environment variable ]

환경 변수 `AWS_DEFAULTS_MODE`의 값을 설정하여 애플리케이션의 기본 모드를 선택합니다.

다음 정보는 환경 변수를 `auto` 사용하여 기본값 모드의 값을 설정하기 위해 실행하는 명령을 보여줍니다.


| 운영 체제 | 환경 변수를 설정하는 방법 | 
| --- | --- | 
| Linux, macOS 또는 Unix | export AWS\_DEFAULTS\_MODE=auto | 
| Windows | set AWS\_DEFAULTS\_MODE=auto | 

------
#### [ AWS config file ]

다음 예제와 같이 공유 AWS `config` 파일에 `defaults_mode` 구성 속성을 추가할 수 있습니다.

```
[default]
defaults_mode = auto
```

------

시스템 속성, 환경 변수 또는 AWS 구성 파일을 사용하여 기본 모드를 전역으로 설정하는 경우 HTTP 클라이언트를 빌드할 때 설정을 재정의할 수 있습니다.

`httpClientBuilder()` 메서드로 HTTP 클라이언트를 빌드하면 빌드 중인 인스턴스에만 설정이 적용됩니다. [여기](http-configuration-netty.md#http-config-netty-one-client)에 그 예제가 나와 있습니다. 이 예제의 Netty 기반 HTTP 클라이언트는 `connectTimeoutInMillis` 및 `tlsNegotiationTimeoutInMillis`에 대해 전역적으로 설정된 모든 기본 모드 값을 재정의합니다.