HTTPklien - 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.

HTTPklien

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

HTTPklien tersedia di SDK untuk Java

Klien sinkron

HTTPKlien sinkron di SDK untuk Java mengimplementasikan SdkHttpClientantarmuka. Klien layanan sinkron, seperti S3Client atauDynamoDbClient, membutuhkan penggunaan klien sinkron. HTTP AWS SDK for Java Menawarkan tiga HTTP klien sinkron.

ApacheHttpClient (default)

ApacheHttpClientadalah HTTP klien default untuk klien layanan sinkron. Untuk informasi tentang mengonfigurasiApacheHttpClient, lihatKonfigurasikan klien berbasis Apache HTTP.

AwsCrtHttpClient

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

UrlConnectionHttpClient

Untuk meminimalkan jumlah toples dan pustaka pihak ketiga yang Anda gunakan aplikasi, Anda dapat menggunakan. UrlConnectionHttpClient Untuk informasi tentang mengonfigurasiUrlConnectionHttpClient, lihatKonfigurasikan HTTP klien URLConnection berbasis.

Klien asinkron

HTTPKlien asinkron di SDK untuk Java mengimplementasikan antarmuka. SdkAsyncHttpClient Klien layanan asinkron, seperti S3AsyncClient atauDynamoDbAsyncClient, membutuhkan penggunaan klien asinkron. HTTP AWS SDK for Java Menawarkan dua klien asinkronHTTP.

NettyNioAsyncHttpClient (default)

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

AwsCrtAsyncHttpClient

AwsCrtAsyncHttpClientIni didasarkan pada AWS Common Runtime (CRT) HTTP Client. Untuk informasi tentang mengonfigurasiAwsCrtAsyncHttpClient, lihatKonfigurasikan HTTP klien AWS CRT berbasis.

HTTPrekomendasi klien

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

Diagram alur rekomendasi

Diagram alur berikut memberikan panduan umum untuk membantu Anda menentukan HTTP klien mana yang akan digunakan.

Diagram alir rekomendasi HTTP klien.

HTTPperbandingan klien

Tabel berikut memberikan informasi rinci untuk setiap HTTP klien.

HTTPklien Sinkronisasi atau asinkron Kapan harus digunakan Batasan/kelemahan
Klien berbasis Apache HTTP

(HTTPklien sinkronisasi default)

Sinkronkan Gunakan jika Anda lebih suka latensi rendah daripada throughput tinggi Waktu startup lebih lambat dibandingkan dengan HTTP klien lain
URLConnectionberbasis HTTP klien Sinkronkan Gunakan jika Anda memiliki persyaratan sulit untuk membatasi dependensi pihak ketiga Tidak mendukung HTTP PATCH metode ini, diperlukan oleh beberapa orang APIS seperti operasi APIGateway Pembaruan Amazon
AWS CRTHTTPklien sinkronisasi berbasis 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 SDK klien sinkronisasi

Properti sistem Java berikut tidak didukung:

  • javax.net.ssl. keyStore

  • javax.net.ssl. keyStorePassword

  • javax.net.ssl. trustStore

  • javax.net.ssl. trustStorePassword

Klien berbasis Netty HTTP

(klien asinkron HTTP default)

Asinkron

• Gunakan jika aplikasi Anda memanggil APIs yang membutuhkan dukungan HTTP /2 seperti Kinesis API SubscribeToShard

Waktu startup lebih lambat dibandingkan dengan HTTP klien lain
AWS CRTklien asinkron HTTP berbasis 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

• Tidak mendukung klien layanan yang membutuhkan dukungan HTTP /2 seperti dan KinesisAsynClient TranscribeStreamingAsyncClient

Properti sistem Java berikut tidak didukung:

  • javax.net.ssl. keyStore

  • javax.net.ssl. keyStorePassword

  • javax.net.ssl. trustStore

  • javax.net.ssl. trustStorePassword

1 Karena manfaat tambahannya, kami sarankan Anda menggunakan HTTP klien AWS CRT berbasis 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 HTTP klien bersama dengan properti lain yang tidak memengaruhi HTTP klien.

Default konfigurasi cerdas menetapkan nilai yang masuk akal untuk tlsNegotiationTimeoutInMillis properti connectTimeoutInMillis 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 cocok untuk aplikasi Anda, lihat Panduan Referensi Alat dan Alat.AWS SDKs

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

Service client

Gunakan pembuat klien layanan untuk mengonfigurasi mode default langsung pada klien layanan. Contoh berikut menetapkan modus default untuk untukauto. 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 kepada Anda 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 perintah. java

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 untuk modus 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 HTTP klien dengan httpClientBuilder() metode ini, pengaturan hanya berlaku untuk instance yang sedang Anda bangun. Contoh dari ini ditunjukkan di sini. HTTPKlien berbasis Netty dalam contoh ini mengganti nilai mode default apa pun yang ditetapkan secara global untuk dan. connectTimeoutInMillis tlsNegotiationTimeoutInMillis