기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
에서 HTTP 클라이언트 구성 AWS SDK for Java 2.x
이 섹션에서는 서비스 클라이언트에 사용할 HTTP 클라이언트를 변경하고 AWS SDK for Java 2.x를 사용하여 HTTP 클라이언트의 기본 구성을 변경할 수 있습니다. 이 단원에서는 SDK의 HTTP 클라이언트 및 설정에 대해 설명합니다.
SDK for Java에서 사용 가능한 HTTP 클라이언트
동기식 HTTP 클라이언트
SDK for Java의 동기식 HTTP 클라이언트는 SdkHttpClientS3Client 또는 DynamoDbClient)를 사용하려면 동기식 HTTP 클라이언트를 사용해야 합니다. 는 세 개의 동기 HTTP 클라이언트를 AWS SDK for Java 제공합니다.
- ApacheHttpClient(기본값)
-
ApacheHttpClient
는 동기 서비스 클라이언트를 위한 기본 HTTP 클라이언트입니다. ApacheHttpClient구성에 대한 내용은 Apache 기반 HTTP 클라이언트 설정을 참조하세요. - AwsCrtHttpClient
-
AwsCrtHttpClient
는 높은 처리량과 비차단 IO를 제공합니다. 공통 AWS 런타임(CRT) Http 클라이언트를 기반으로 합니다. AwsCrtHttpClient를 구성하고 서비스 클라이언트와 함께 사용하는 방법에 대한 자세한 내용은 AWS CRT 기반 HTTP 클라이언트 구성을 참조하세요. - UrlConnectionHttpClient
-
애플리케이션에서 사용하는 항아리 및 타사 라이브러리 수를 최소화하려면 UrlConnectionHttpClient
를 사용하면 됩니다. UrlConnectionHttpClient구성에 대한 내용은 URL 연결 기반 HTTP 클라이언트 구성을 참조하세요.
비동기 클라이언트
SDK for Java의 비동기 HTTP 클라이언트는 SdkAsyncHttpClientS3AsyncClient 또는 DynamoDbAsyncClient)를 사용하려면 비동기 HTTP 클라이언트를 사용해야 합니다. 는 두 개의 비동기 HTTP 클라이언트를 AWS SDK for Java 제공합니다.
- NettyNioAsyncHttpClient(기본값)
-
NettynioAsynchTPClient
는 비동기 클라이언트가 사용하는 기본 HTTP 클라이언트입니다. NettyNioAsyncHttpClient구성에 대한 내용은 Netty 기반 HTTP 클라이언트를 구성을 참조하세요. - AwsCrtAsyncHttpClient
-
AwsCrtAsyncHttpClient
는 AWS 공통 런타임(CRT) HTTP 클라이언트를 기반으로 합니다. AwsCrtAsyncHttpClient구성에 대한 내용은 AWS CRT 기반 HTTP 클라이언트 구성을 참조하세요.
HTTP 클라이언트 권장 사항
HTTP 클라이언트 구현을 선택할 때는 몇 가지 요인이 작용합니다. 다음 정보는 결정을 하는 데 도움을 줍니다.
권장 사항 순서도
다음 순서도는 사용할 HTTP 클라이언트를 결정하는 데 도움이 되는 일반적인 지침을 제공합니다.
HTTP 클라이언트 비교
다음 표에는 각 HTTP 클라이언트에 대한 자세한 정보가 나와 있습니다.
| HTTP 클라이언트 | 동기 또는 비동기 | 사용해야 하는 경우 | 제한 및 단점 |
|---|---|---|---|
| Apache 기반 HTTP 클라이언트 (기본 동기화 HTTP 클라이언트) |
동기화 | 높은 처리량보다 낮은 지연 시간을 선호하는 경우 사용 | 다른 HTTP 클라이언트에 비해 시작 시간이 느림 |
| URLConnection 기반 HTTP 클라이언트 | 동기화 | 타사 종속성을 제한해야 하는 까다로운 요구 사항이 있는 경우 사용 | Amazon APIGateway Update 작업과 같은 일부 API에 필요한 HTTP PATCH 메서드를 지원하지 않 |
| AWS CRT 기반 동기화 HTTP 클라이언트1 | 동기화 |
• 애플리케이션이에서 실행 중인 경우 사용 AWS Lambda • 짧은 지연 시간보다 높은 처리량을 선호하는 경우 사용 • SDK 클라이언트 동기화를 선호하는 경우 사용 |
다음 Java 시스템 속성은 지원되지 않습니다.
|
| Netty 기반 HTTP 클라이언트 (기본 비동기 HTTP 클라이언트) |
비동기 |
• 애플리케이션에서 Kinesis API SubscribeToShard와 같이 HTTP/2 지원이 필요한 API를 호출하는 경우에 사용 |
다른 HTTP 클라이언트에 비해 시작 시간이 느림 |
| AWS CRT 기반 비동기 HTTP 클라이언트1 | 비동기 | • 애플리케이션이 AWS Lambda에서 실행 중인 경우 사용 • 짧은 지연 시간보다 높은 처리량을 선호하는 경우 사용 • SDK 클라이언트 비동기화를 선호하는 경우 사용 |
• 다음 Java 시스템 속성은 지원되지 않습니다.
|
1추가적인 이점 때문에 가능하면 AWS CRT 기반 HTTP 클라이언트를 사용하는 것이 좋습니다.
스마트 구성 기본값
AWS SDK for Java 2.x (버전 2.17.102 이상)는 스마트 구성 기본 기능을 제공합니다. 이 기능은 HTTP 클라이언트에 영향을 주지 않는 다른 속성과 함께 두 개의 HTTP 클라이언트 속성을 최적화합니다.
스마트 구성 기본값은 사용자가 제공한 기본값 모드 값을 기반으로 connectTimeoutInMillis 및 tlsNegotiationTimeoutInMillis 속성에 적절한 값을 설정합니다. 애플리케이션의 특성에 따라 기본 모드 값을 선택합니다.
스마트 구성 기본값 및 애플리케이션에 가장 적합한 기본값 모드 값을 선택하는 방법에 대한 자세한 내용은 AWS SDK 및 도구 참조 안내서를 참조하세요.
다음은 애플리케이션의 기본값 모드를 설정하는 네 가지 방법입니다.
시스템 속성, 환경 변수 또는 AWS 구성 파일을 사용하여 기본 모드를 전역으로 설정하는 경우 HTTP 클라이언트를 빌드할 때 설정을 재정의할 수 있습니다.
httpClientBuilder() 메서드로 HTTP 클라이언트를 빌드하면 빌드 중인 인스턴스에만 설정이 적용됩니다. 여기에 그 예제가 나와 있습니다. 이 예제의 Netty 기반 HTTP 클라이언트는 connectTimeoutInMillis 및 tlsNegotiationTimeoutInMillis에 대해 전역적으로 설정된 모든 기본 모드 값을 재정의합니다.