

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
<a name="http-configuration"></a>

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 for Java
<a name="http-clients-available"></a>

### Klien sinkron
<a name="http-config-sync"></a>

Klien HTTP sinkron di SDK for Java mengimplementasikan [SdkHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/SdkHttpClient.html)antarmuka. Klien layanan sinkron, seperti `S3Client` atau`DynamoDbClient`, memerlukan penggunaan klien HTTP sinkron. Ini AWS SDK untuk Java menawarkan tiga klien HTTP sinkron.

**ApacheHttpClient (default)**  
[ApacheHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache/ApacheHttpClient.html)adalah klien HTTP default untuk klien layanan sinkron. Untuk informasi tentang mengonfigurasi`ApacheHttpClient`, lihat[Konfigurasikan klien HTTP berbasis Apache](http-configuration-apache.md). 

**AwsCrtHttpClient**  
[AwsCrtHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/crt/AwsCrtHttpClient.html)menyediakan 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, lihat[Konfigurasikan AWS klien HTTP berbasis CRT](http-configuration-crt.md).

**UrlConnectionHttpClient**  
Untuk meminimalkan jumlah toples dan pustaka pihak ketiga yang Anda gunakan aplikasi, Anda dapat menggunakan. [UrlConnectionHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/urlconnection/UrlConnectionHttpClient.html) Untuk informasi tentang mengonfigurasi`UrlConnectionHttpClient`, lihat[Konfigurasikan klien HTTP URLConnection berbasis](http-configuration-url.md).

**Apache5 HttpClient**  
[Apache5 HttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache5/Apache5HttpClient.html) *adalah versi terbaru yang dibangun di atas Apache 5.x. `ApacheHttpClient` HttpClient Versi 5.x* adalah versi yang dikelola secara aktif oleh Apache, dan meningkatkan versi sebelumnya yang digunakan dengan `ApacheHttpClient` menghadirkan kompatibilitas ekosistem Java modern termasuk dukungan thread virtual untuk Java 21, dan peningkatan fleksibilitas logging melalui SLF4 J. `Apache5HttpClient` akan menggantikan `ApacheHttpClient` sebagai klien sinkron default dalam versi masa depan SDK for AWS Java 2.x. Ini memiliki API dan fitur yang identik, membuatnya ideal sebagai pengganti drop-in. Untuk informasi tentang mengonfigurasi`Apache5HttpClient`, lihat[Konfigurasikan klien HTTP berbasis Apache 5.x](http-configuration-apache5.md).

### Klien asinkron
<a name="http-config-async"></a>

Klien HTTP asinkron di SDK for Java mengimplementasikan antarmuka. [SdkAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/async/SdkAsyncHttpClient.html) Klien layanan asinkron, seperti `S3AsyncClient` atau`DynamoDbAsyncClient`, memerlukan penggunaan klien HTTP asinkron. Ini AWS SDK untuk Java menawarkan dua klien HTTP asinkron.

**NettyNioAsyncHttpClient (default)**  
[NettyNioAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/nio/netty/NettyNioAsyncHttpClient.html)adalah klien HTTP default yang digunakan oleh klien asinkron. Untuk informasi tentang mengonfigurasi`NettyNioAsyncHttpClient`, lihat[Konfigurasikan klien HTTP berbasis Netty](http-configuration-netty.md).

**AwsCrtAsyncHttpClient**  
[AwsCrtAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.html)Ini didasarkan pada AWS Common Runtime (CRT) HTTP Client. Untuk informasi tentang mengonfigurasi`AwsCrtAsyncHttpClient`, lihat[Konfigurasikan AWS klien HTTP berbasis CRT](http-configuration-crt.md). 

## Rekomendasi klien HTTP
<a name="http-clients-recommend"></a>

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

### Perbandingan klien HTTP
<a name="http-clients-recommend-compare"></a>

Tabel berikut memberikan informasi rinci untuk setiap klien HTTP. 


| Klien HTTP | Sinkronisasi atau asinkron | Kapan harus digunakan | Batasan/kelemahan | 
| --- | --- | --- | --- | 
|  Klien HTTP berbasis Apache *(klien HTTP sinkronisasi default)* | Sinkronkan | Gunakan jika Anda lebih suka latensi rendah daripada throughput tinggi  | Waktu startup lebih lambat dibandingkan dengan klien HTTP lainnya | 
| URLConnectionberbasis HTTP klien | Sinkronkan | Gunakan jika Anda memiliki persyaratan sulit untuk membatasi dependensi pihak ketiga | • Tidak mendukung metode PATCH HTTP, yang diperlukan oleh APIs beberapa operasi APIGateway Pembaruan Amazon<br />• Tidak mendukung batas waktu koneksi idle yang dapat dikonfigurasi. Lihat [Mengonfigurasi klien HTTP URLConnection berbasis](http-configuration-url.md) untuk detailnya. | 
| AWS Klien HTTP sinkronisasi berbasis CRT 1  | Sinkronkan | • Gunakan jika aplikasi Anda berjalan di AWS Lambda<br />• Gunakan jika Anda lebih suka throughput tinggi daripada latensi rendah<br />• Gunakan jika Anda lebih suka menyinkronkan klien SDK | Properti sistem Java berikut tidak didukung:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/sdk-for-java/latest/developer-guide/http-configuration.html) | 
|  Klien HTTP berbasis Netty *(klien HTTP asinkron default)* | Asinkron | • Gunakan jika aplikasi Anda bergantung pada properti sistem Java untuk konfigurasi TLS (seperti) `javax.net.ssl.keyStore` | Waktu startup lebih lambat dibandingkan dengan klien HTTP lainnya | 
|  AWS Klien HTTP asinkron berbasis CRT 1  | Asinkron | • Gunakan jika aplikasi Anda berjalan di AWS Lambda<br />• Gunakan jika Anda lebih suka throughput tinggi daripada latensi rendah• Gunakan jika Anda lebih suka klien SDK async | Properti sistem Java berikut tidak didukung:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/sdk-for-java/latest/developer-guide/http-configuration.html) | 

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

## Default konfigurasi cerdas
<a name="http-config-smart-defaults"></a>

 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 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 ](https://docs.aws.amazon.com/sdkref/latest/guide/feature-smart-config-defaults.html)

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 untuk`auto`. `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 klien HTTP dengan `httpClientBuilder()` metode ini, pengaturan hanya berlaku untuk instance yang sedang Anda bangun. Contoh ini ditunjukkan [di sini](http-configuration-netty.md#http-config-netty-one-client). Klien HTTP berbasis Netty dalam contoh ini mengganti nilai mode default apa pun yang ditetapkan secara global untuk dan. `connectTimeoutInMillis` `tlsNegotiationTimeoutInMillis`