View a markdown version of this page

Konfigurasikan klien HTTP di AWS SDK for Java 2.x - 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 klien HTTP di AWS SDK for Java 2.x

Anda dapat mengubah klien HTTP untuk digunakan untuk klien layanan Anda serta mengubah konfigurasi default untuk klien HTTP dengan AWS SDK for Java 2.x. Bagian ini membahas klien HTTP dan pengaturan untuk SDK.

Klien HTTP tersedia di SDK untuk Java

Klien sinkron

Klien HTTP sinkron di SDK untuk Java mengimplementasikan SdkHttpClient antarmuka. Klien layanan sinkron, seperti S3Client atauDynamoDbClient, memerlukan penggunaan klien HTTP sinkron. Men AWS SDK untuk Java awarkan tiga klien HTTP sinkron.

Apache5HttpClient (default)

Apache5HttpClientadalah versi terbaru ApacheHttpClient yang dibangun di atas Apache 5.x HttpClient. Versi 5.x adalah versi yang secara aktif dikelola oleh Apache, dan meningkatkan versi sebelumnya yang digunakan dengan ApacheHttpClient membawa kompatibilitas ekosistem Java modern termasuk dukungan utas virtual untuk Java 21, dan fleksibilitas logging yang ditingkatkan melalui SLF4J. Apache5HttpClientdiganti ApacheHttpClient sebagai klien sinkron default dalam versi 2.46.0 AWS SDK untuk Java 2.x. Ini memiliki API dan fitur yang identik, membuatnya ideal sebagai pengganti drop-in. Untuk informasi tentang mengkonfigurasiApache5HttpClient, lihatKonfigurasikan klien HTTP berbasis Apache 5.x.

ApacheHttpClient
catatan

ApacheHttpClienttidak digunakan lagi karena Apache HttpClient 4.x dalam mode pemeliharaan. Gunakan berbasis Apache5HttpClient Apache HttpClient 5.x.

ApacheHttpClientdibangun di atas Apache 4.x HttpClient. Untuk informasi tentang mengkonfigurasiApacheHttpClient, lihatKonfigurasikan klien Apache-based HTTP.

AwsCrtHttpClient

AwsCrtHttpClientmenyediakan throughput tinggi dan IO non-pemblokiran. Hal ini dibangun di atas Com AWS mon Runtime (CRT) Http Client. Untuk informasi tentang mengkonfigurasi AwsCrtHttpClient dan menggunakannya dengan klien layanan, lihatKonfigurasikan AWS klien HTTP berbasis CRT.

UrlConnectionHttpClient

Untuk meminimalkan jumlah stoples dan pustaka pihak ketiga yang digunakan aplikasi Anda, Anda dapat menggunakan UrlConnectionHttpClient. Untuk informasi tentang mengkonfigurasiUrlConnectionHttpClient, lihatKonfigurasikan klien HTTP URLConnection berbasis.

Klien asinkron

Klien HTTP asinkron di SDK untuk Java mengimplementasikan SdkAsyncHttpClient antarmuka. Klien layanan asinkron, seperti S3AsyncClient atauDynamoDbAsyncClient, memerlukan penggunaan klien HTTP asinkron. Men AWS SDK untuk Java awarkan dua klien HTTP asinkron.

NettyNioAsyncHttpClient (default)

NettyNioAsyncHttpClientadalah klien HTTP default yang digunakan oleh klien asinkron. Untuk informasi tentang mengkonfigurasiNettyNioAsyncHttpClient, lihatKonfigurasikan klien HTTP berbasis Netty.

AwsCrtAsyncHttpClient

Hal AwsCrtAsyncHttpClient ini didasarkan pada Com AWS mon Runtime (CRT) HTTP Client. Untuk informasi tentang mengkonfigurasiAwsCrtAsyncHttpClient, lihatKonfigurasikan AWS klien HTTP berbasis CRT.

Rekomendasi klien HTTP

Beberapa faktor ikut berperan ketika Anda memilih implementasi klien HTTP. Gunakan informasi berikut untuk membantu Anda memutuskan.

Perbandingan klien HTTP

Tabel berikut memberikan informasi terperinci untuk setiap klien HTTP.

Klien HTTP Sinkronisasi atau asinkron Kapan harus digunakan Limitation/drawback
Klien HTTP berbasis Apache 5.x

(klien HTTP sinkronisasi default)

Sinkronkan Gunakan jika Anda lebih suka latensi rendah daripada throughput tinggi Waktu startup lebih lambat dibandingkan dengan klien HTTP lainnya
URLConnection-based Klien HTTP Sinkronkan Gunakan jika Anda memiliki persyaratan keras untuk membatasi dependensi pihak ketiga

• Tidak mendukung metode HTTP PATCH, yang diperlukan oleh beberapa API seperti operasi Pembaruan Amazon ApiGateway

• Tidak mendukung batas waktu koneksi idle yang dapat dikonfigurasi. Lihat Konfigurasi klien URLConnection-based HTTP untuk detailnya.

AWS CRT-based sinkronisasi klien HTTP 1 Sinkronkan

• Gunakan jika aplikasi Anda berjalan di AWS Lambda

• Gunakan jika Anda lebih suka throughput tinggi daripada latensi rendah

• Gunakan jika Anda lebih suka menyinkronkan klien SDK

Properti sistem Java berikut tidak didukung:

  • javax.net.ssl.keystore

  • javax.net.ssl.key StorePassword

  • javax.net.ssl.TrustStore

  • javax.net.ssl.trust StorePassword

Netty-based Klien HTTP

(klien HTTP asinkron default)

Asinkron

• Gunakan jika aplikasi Anda bergantung pada properti sistem Java untuk konfigurasi TLS (sepertijavax.net.ssl.keyStore)

Waktu startup lebih lambat dibandingkan dengan klien HTTP lainnya
AWS CRT-based klien HTTP asinkron 1 Asinkron

• Gunakan jika aplikasi Anda berjalan di AWS Lambda

• Gunakan jika Anda lebih suka throughput tinggi daripada latensi rendah

• Gunakan jika Anda lebih suka klien async SDK

Properti sistem Java berikut tidak didukung:

  • javax.net.ssl.keystore

  • javax.net.ssl.key StorePassword

  • javax.net.ssl.TrustStore

  • javax.net.ssl.trust StorePassword

1 Karena manfaat tambahannya, kami sarankan Anda menggunakan klien AWS CRT-based HTTP jika memungkinkan.

Default konfigurasi cerdas

AWS SDK for Java 2.x (Versi 2.17.102 atau yang lebih baru) menawarkan fitur default konfigurasi cerdas. Fitur ini mengoptimalkan dua properti klien HTTP bersama dengan properti lain yang tidak mempengaruhi klien HTTP.

Default konfigurasi cerdas menetapkan nilai masuk akal untuk connectTimeoutInMillis tlsNegotiationTimeoutInMillis properti dan berdasarkan nilai mode default yang Anda berikan. Anda memilih nilai mode default berdasarkan karakteristik aplikasi Anda.

Untuk informasi selengkapnya tentang default konfigurasi cerdas dan cara memilih nilai mode default yang paling sesuai untuk aplikasi Anda, lihat Panduan Referensi AWS SDK dan Alat.

Berikut ini adalah empat cara untuk mengatur mode default untuk aplikasi Anda.

Service client

Gunakan pembangun klien layanan untuk mengonfigurasi mode default langsung pada klien layanan. Contoh berikut menetapkan mode default ke auto untuk. DynamoDbClient

DynamoDbClient ddbClient = DynamoDbClient.builder() .defaultsMode(DefaultsMode.AUTO) .build();
System property

Anda dapat menggunakan properti aws.defaultsMode sistem untuk menentukan mode default. Jika Anda mengatur properti sistem di Java, Anda perlu mengatur properti sebelum menginisialisasi klien layanan apa pun.

Contoh berikut menunjukkan cara mengatur mode default untuk auto menggunakan properti sistem yang disetel di Java.

System.setProperty("aws.defaultsMode", "auto");

Contoh berikut menunjukkan bagaimana Anda mengatur mode default untuk auto menggunakan -D opsi java perintah.

java -Daws.defaultsMode=auto
Environment variable

Tetapkan nilai untuk variabel lingkungan AWS_DEFAULTS_MODE untuk memilih mode default untuk aplikasi Anda.

Informasi berikut menunjukkan perintah untuk menjalankan untuk mengatur nilai mode default untuk auto menggunakan variabel lingkungan.

Sistem operasi Perintah untuk mengatur variabel lingkungan

Linux, macOS, atau Unix

export AWS_DEFAULTS_MODE=auto

Windows

set AWS_DEFAULTS_MODE=auto
AWS config file

Anda dapat menambahkan properti defaults_mode konfigurasi ke AWS config file bersama seperti yang ditunjukkan contoh berikut.

[default] defaults_mode = auto

Jika Anda menyetel mode default secara global dengan properti sistem, variabel lingkungan, atau file AWS konfigurasi, Anda dapat mengganti pengaturan saat membuat klien HTTP.

Saat Anda membangun klien HTTP dengan httpClientBuilder() metode ini, pengaturan hanya berlaku untuk instance yang Anda buat. Contohnya ditunjukkan di sini. Kli Netty-based en HTTP dalam contoh ini mengganti nilai mode default yang ditetapkan secara global untuk connectTimeoutInMillis dantlsNegotiationTimeoutInMillis.