기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
HTTP 프록시 구성
코드를 사용하거나, Java 시스템 속성을 설정하거나, 환경 변수를 설정하여 HTTP 프록시를 구성할 수 있습니다.
코드로 구성
서비스 클라이언트를 빌드할 때 클라이언트별 ProxyConfiguration 빌더를 사용하여 코드로 프록시를 구성합니다. 다음 예제는 Amazon S3 서비스 클라이언트에서 사용하는 Apache 기반 HTTP 클라이언트의 프록시 구성 예제를 보여줍니다.
SdkHttpClient httpClient1 = ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://proxy.example.com")) .username("username") .password("password") .addNonProxyHost("localhost") .build()) .build(); S3Client s3Client = S3Client.builder() .httpClient(httpClient) .build();
이 항목의 각 HTTP 클라이언트 단원에서는 프록시 구성 예제를 보여줍니다.
외부 설정을 사용하여 HTTP 프록시 구성
코드에서 ProxyConfiguration 빌더를 명시적으로 사용하지 않더라도 SDK는 외부 설정을 찾아 기본 프록시 구성을 구성합니다.
기본적으로 SDK는 먼저 JVM 시스템 속성을 검색합니다. 속성이 하나라도 발견되면 SDK는 값과 기타 시스템 속성 값을 사용합니다. 사용 가능한 시스템 속성이 없는 경우 SDK는 프록시 환경 변수를 찾습니다.
SDK는 다음 Java 시스템 속성 및 환경 변수를 사용할 수 있습니다.
| 시스템 속성 | 설명 | HTTP 클라이언트 지원 |
|---|---|---|
|
http.proxyHost |
HTTPS 프록시 서버의 호스트 이름 |
모두 |
|
http.proxyPort |
HTTPS 프록시 서버의 포트 번호 |
모두 |
| http.proxyUser |
HTTPS 프록시 인증을 위한 사용자 이름 |
모두 |
|
http.proxyPassword |
HTTPS 프록시 인증을 위한 비밀번호 |
모두 |
| http.nonProxyHosts |
프록시를 우회하여 직접 연결해야 하는 호스트 목록. 이 목록은 HTTPS를 사용하는 경우에도 유효합니다 |
모두 |
| https.ProxyHost |
HTTPS 프록시 서버의 호스트 이름 |
Netty, CRT |
|
https.ProxyPort |
HTTPS 프록시 서버의 포트 번호 |
Netty, CRT |
| https.proxyUser |
HTTPS 프록시 인증을 위한 사용자 이름 |
Netty, CRT |
| https.proxyPassword | HTTPS 프록시 인증을 위한 비밀번호 | Netty, CRT |
| 환경 변수 | 설명 | HTTP 클라이언트 지원 |
|---|---|---|
| HTTP_PROXY1 |
HTTP의 스키마가 있는 유효한 URL |
모두 |
|
HTTPS_PROXY1 |
HTTPS의 스키마가 있는 유효한 URL |
Netty, CRT |
| NO_PROXY2 |
프록시를 우회하여 직접 연결해야 하는 호스트 목록. 목록은 HTTP와 HTTPS 모두에 유효합니다. |
모두 |
모두: SDK에서 제공하는 모든 HTTP 클라이언트 - UrlConnectionHttpClient, ApacheHttpClient, NettyNioAsyncHttpClient, AwsCrtAsyncHttpClient
Netty: Netty 기반 HTTP 클라이언트(NettyNioAsyncHttpClient)
CRT: AWS CRT 기반 HTTP 클라이언트(AwsCrtHttpClient 및 AwsCrtAsyncHttpClient)
1쿼리된 환경 변수는 HTTP_PROXY 또는 HTTPS_PROXY에 관계없이 클라이언트의 ProxyConfiguration에 있는 스키마 설정에 따라 달라집니다. 기본 스키마는 HTTP입니다. 다음 코드 조각은 스키마를 환경 변수 해결에 사용되는 HTTPS로 변경하는 방법을 보여줍니다.
SdkHttpClient httpClient = ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .scheme("https") .build()) .build();
2NO_PROXY 환경 변수는 호스트 이름 간에 ‘|’ 및 ‘,’ 구분 기호의 조합을 지원합니다. 호스트 이름에는 ‘*’ 와일드카드가 포함될 수 있습니다.
설정 조합 사용
코드, 시스템 속성 및 환경 변수에서 HTTP 프록시 설정 조합을 사용할 수 있습니다.
예 - 시스템 속성과 코드로 제공되는 구성
// Command line with the proxy password set as a system property. $ java -Dhttp.proxyPassword=SYS_PROP_password -cp ... App // Since the 'useSystemPropertyValues' setting is 'true' (the default), the SDK will supplement // the proxy configuration in code with the 'http.proxyPassword' value from the system property. SdkHttpClient apacheHttpClient = ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://localhost:1234")) .username("username") .build()) .build(); // Use the apache HTTP client with proxy configuration. DynamoDbClient dynamoDbClient = DynamoDbClient.builder() .httpClient(apacheHttpClient) .build();
SDK는 다음 프록시 설정을 해결합니다.
Host = localhost Port = 1234 Password = SYS_PROP_password UserName = username Non ProxyHost = null
예 - 시스템 속성과 환경 변수 모두 사용
각 HTTP 클라이언트의 ProxyConfiguration 빌더는 useSystemPropertyValues 및 useEnvironmentVariablesValues라는 설정을 제공합니다. 기본적으로 두 설정은 모두 true입니다. true로 설정하면 SDK는 ProxyConfiguration 빌더를 통해 제공되지 않은 옵션에 대해 시스템 속성의 값 또는 환경 변수를 자동으로 사용합니다.
중요
이 시스템 속성은 환경 변수보다 우선합니다. HTTP 프록시 시스템 속성이 발견되면 SDK는 시스템 속성에서 모든 값을 검색하고 환경 변수에서는 검색하지 않습니다. 시스템 속성보다 환경 변수를 우선하도록 순위를 지정하려면 useSystemPropertyValues를 false로 설정합니다.
이 예제에서는 런타임에서 다음 설정을 사용할 수 있습니다.
// System properties http.proxyHost=SYS_PROP_HOST.com http.proxyPort=2222 http.password=SYS_PROP_PASSWORD http.user=SYS_PROP_USER // Environment variables HTTP_PROXY="http://EnvironmentUser:EnvironmentPassword@ENV_VAR_HOST:3333" NO_PROXY="environmentnonproxy.host,environmentnonproxy2.host:1234"
서비스 클라이언트는 다음 문 중 하나를 사용해 만듭니다. 모든 문은 프록시 설정을 명시적으로 설정하지 않습니다.
DynamoDbClient client = DynamoDbClient.create(); DynamoDbClient client = DynamoDbClient.builder().build(); DynamoDbClient client = DynamoDbClient.builder() .httpClient(ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .build()) .build()) .build();
SDK는 다음 프록시 설정을 확인합니다.
Host = SYS_PROP_HOST.com Port = 2222 Password = SYS_PROP_PASSWORD UserName = SYS_PROP_USER Non ProxyHost = null
서비스 클라이언트에는 기본 프록시 설정이 있으므로 SDK는 시스템 속성을 검색한 다음 환경 변수를 검색합니다. 시스템 속성 설정이 환경 변수보다 우선하므로 SDK는 시스템 속성만 사용합니다.
다음 코드와 같이 시스템 속성의 사용이 false로 변경되면 SDK는 환경 변수만 해결합니다.
DynamoDbClient client = DynamoDbClient.builder() .httpClient(ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .useSystemPropertyValues(Boolean.FALSE) .build()) .build()) .build();
HTTP를 사용하여 해결된 프록시 설정은 다음과 같습니다.
Host = ENV_VAR_HOST Port = 3333 Password = EnvironmentPassword UserName = EnvironmentUser Non ProxyHost = environmentnonproxy.host, environmentnonproxy2.host:1234