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