翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
HTTP プロキシの設定
HTTP プロキシを設定するには、コードを使用するか、Java システムプロパティを設定するか、環境変数を設定します。
コードでの設定
サービスクライアントをビルドするときに、クライアント固有の 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 システムプロパティを検索します。プロパティが 1 つでも見つかった場合、SDK はその値と、他のシステムプロパティの値を使用します。使用可能なシステムプロパティがない場合、SDK はプロキシ環境変数を検索します。
SDK では、次の Java システムプロパティと環境変数を使用できます。
| システムプロパティ | 説明 | HTTP クライアントのサポート |
|---|---|---|
|
HTTP.プロキシホスト |
HTTP プロキシサーバーのホスト名 |
すべて |
|
http.proxyPort |
HTTP プロキシサーバーのポート番号 |
すべて |
| http.proxyUser |
HTTP プロキシ認証用のユーザー名 |
すべて |
|
http.proxyPassword |
HTTP プロキシ認証用のパスワード |
すべて |
| http.nonProxyHosts |
プロキシをバイパスして直接アクセスする必要があるホストのリスト。このリストは、HTTPS を使用する場合にも有効です |
すべて |
| https.proxyHost |
HTTPS プロキシサーバーのホスト名 |
ネッティ、CRT |
|
https.proxyPort |
HTTPS プロキシサーバーのポート番号 |
ネッティ、CRT |
| https.proxyUser |
HTTPS プロキシ認証用のユーザー名 |
ネッティ、CRT |
| https.proxyPassword | HTTPS プロキシ認証用のパスワード | ネッティ、CRT |
| 環境変数 | 説明 | HTTP クライアントのサポート |
|---|---|---|
| HTTP_PROXY1 |
HTTP のスキームを持つ有効な URL |
すべて |
|
HTTPS_PROXY1 |
HTTPS のスキームを持つ有効な URL |
ネッティ、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();
2 NO_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