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 | 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 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
,, ApacheHttpClient
NettyNioAsyncHttpClient
,AwsCrtAsyncHttpClient
.
Netty - Klien HTTP berbasis Netty (). NettyNioAsyncHttpClient
CRT - Klien HTTP AWS berbasis CRT, (AwsCrtHttpClient
dan). 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