Konfigurasikan proxy HTTP - AWS SDK for Java 2.x

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Konfigurasikan proxy HTTP

Anda dapat mengkonfigurasi proxy HTTP dengan menggunakan kode, dengan mengatur properti sistem Java, atau dengan mengatur variabel lingkungan.

Konfigurasikan dalam kode

Anda mengonfigurasi proxy dalam kode dengan ProxyConfiguration pembuat khusus klien saat Anda membangun klien layanan. Kode berikut menunjukkan contoh konfigurasi proxy untuk klien HTTP berbasis Apache yang digunakan oleh klien layanan Amazon S3.

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();

Bagian untuk setiap klien HTTP dalam topik ini menunjukkan contoh konfigurasi proxy.

Konfigurasikan proxy HTTP dengan pengaturan eksternal

Bahkan jika Anda tidak secara eksplisit menggunakan ProxyConfiguration pembuat dalam kode, SDK mencari pengaturan eksternal untuk mengonfigurasi konfigurasi proxy default.

Secara default, SDK pertama-tama mencari properti sistem JVM. Jika satu properti ditemukan, SDK menggunakan nilai dan nilai properti sistem lainnya. Jika tidak ada properti sistem yang tersedia, SDK mencari variabel lingkungan proxy.

SDK dapat menggunakan properti sistem Java berikut dan variabel lingkungan.

Properti sistem Java
Properti sistem Deskripsi Dukungan klien HTTP

http.ProxyHost

Nama host dari server proxy HTTP

Semua

http.Proxyport

Nomor port server proxy HTTP

Semua

http.ProxyUser

Nama pengguna untuk otentikasi proxy HTTP

Semua

http.ProxyPassword

Kata sandi untuk otentikasi proxy HTTP

Semua

http. nonProxyHosts

Daftar host yang harus dijangkau secara langsung, melewati proxy. Daftar ini juga valid ketika HTTPS digunakan.

Semua

https.proxyhost

Nama host dari server proxy HTTPS

Netty, CRT

https.proxyport

Nomor port server proxy HTTPS

Netty, CRT

https.proxyuser

Nama pengguna untuk otentikasi proxy HTTPS

Netty, CRT
https.proxyPassword Kata sandi untuk otentikasi proxy HTTPS Netty, CRT
Variabel-variabel lingkungan
Variabel lingkungan Deskripsi Dukungan klien HTTP
HTTP_PROXY 1

URL yang valid dengan skema HTTP

Semua

HTTPS_PROXY 1

URL yang valid dengan skema HTTPS

Netty, CRT

TIDAK_PROXY 2

Daftar host yang harus dijangkau secara langsung, melewati proxy. Daftar ini valid untuk HTTP dan HTTPS.

Semua

Semua - Semua klien HTTP yang ditawarkan oleh SDK—UrlConnectionHttpClient,, ApacheHttpClientNettyNioAsyncHttpClient,AwsCrtAsyncHttpClient.

Netty - Klien HTTP berbasis Netty (). NettyNioAsyncHttpClient

CRT - Klien HTTP AWS berbasis CRT, (AwsCrtHttpClientdan). AwsCrtAsyncHttpClient

1 Variabel lingkungan yang ditanyakan, apakah HTTP_PROXY atauHTTPS_PROXY, tergantung pada pengaturan skema di klien. ProxyConfiguration Skema default adalah HTTP. Cuplikan berikut menunjukkan cara mengubah skema ke HTTPS yang digunakan untuk resolusi variabel lingkungan.

SdkHttpClient httpClient = ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .scheme("https") .build()) .build();

2 Variabel NO_PROXY lingkungan mendukung campuran pemisah “|” dan “,” antara nama host. Nama host mungkin termasuk wildcard “*”.

Gunakan kombinasi pengaturan

Anda dapat menggunakan kombinasi pengaturan proxy HTTP dalam kode, properti sistem, dan variabel lingkungan.

contoh — konfigurasi yang disediakan oleh properti sistem dan kode
// 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 menyelesaikan pengaturan proxy berikut.

Host = localhost Port = 1234 Password = SYS_PROP_password UserName = username Non ProxyHost = null
contoh — properti sistem dan variabel lingkungan tersedia

Setiap ProxyConfiguration pembangun klien HTTP menawarkan pengaturan bernama useSystemPropertyValues danuseEnvironmentVariablesValues. Secara default, kedua pengaturan adalahtrue. Saattrue, SDK secara otomatis menggunakan nilai dari properti sistem atau variabel lingkungan untuk opsi yang tidak disediakan oleh ProxyConfiguration pembuat.

penting

Properti sistem lebih diutamakan daripada variabel lingkungan. Jika properti sistem proxy HTTP ditemukan, SDK mengambil semua nilai dari properti sistem dan tidak ada dari variabel lingkungan. Jika Anda ingin memprioritaskan variabel lingkungan di atas properti sistem, setel useSystemPropertyValues ke. false

Untuk contoh ini, pengaturan berikut tersedia runtime:

// 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"

Klien layanan dibuat dengan salah satu pernyataan berikut. Tak satu pun dari pernyataan secara eksplisit menetapkan pengaturan proxy.

DynamoDbClient client = DynamoDbClient.create(); DynamoDbClient client = DynamoDbClient.builder().build(); DynamoDbClient client = DynamoDbClient.builder() .httpClient(ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .build()) .build()) .build();

Pengaturan proxy berikut diselesaikan oleh SDK:

Host = SYS_PROP_HOST.com Port = 2222 Password = SYS_PROP_PASSWORD UserName = SYS_PROP_USER Non ProxyHost = null

Karena klien layanan memiliki pengaturan proxy default, SDK mencari properti sistem dan kemudian variabel lingkungan. Karena pengaturan properti sistem lebih diutamakan daripada variabel lingkungan, SDK hanya menggunakan properti sistem.

Jika penggunaan properti sistem diubah menjadi false seperti yang ditunjukkan dalam kode berikut, SDK hanya menyelesaikan variabel lingkungan.

DynamoDbClient client = DynamoDbClient.builder() .httpClient(ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .useSystemPropertyValues(Boolean.FALSE) .build()) .build()) .build();

Pengaturan proxy yang diselesaikan menggunakan HTTP adalah:

Host = ENV_VAR_HOST Port = 3333 Password = EnvironmentPassword UserName = EnvironmentUser Non ProxyHost = environmentnonproxy.host, environmentnonproxy2.host:1234