

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

# Mengkonfigurasi klien layanan dalam kode untuk AWS SDK for Java 2.x
<a name="configuring-service-clients-code"></a>

Sebagai alternatif untuk—atau selain— [mengkonfigurasi klien layanan secara eksternal, Anda dapat mengonfigurasinya secara](configuring-service-clients-ext.md) terprogram dalam kode.

Dengan mengonfigurasi klien layanan dalam kode, Anda mendapatkan kontrol halus dari banyak opsi yang tersedia untuk Anda. Sebagian besar konfigurasi yang dapat Anda atur secara eksternal juga tersedia untuk Anda atur dalam kode.

## Konfigurasi dasar dalam kode
<a name="conf-service-client-code-basic"></a>

Misalnya, cuplikan berikut menyetel ke Wilayah AWS `EU_SOUTH_2` untuk klien layanan Amazon S3 dalam kode:

```
S3Client s3Client = S3Client.builder()
        .region(Region.EU_SOUTH_2)
        .build();
```

Cuplikan sebelumnya menunjukkan metode pabrik statis,. `builder()` `builder()`Metode mengembalikan `builder` objek yang memungkinkan Anda untuk menyesuaikan klien layanan. Metode penyetel yang lancar mengembalikan `builder` objek—dalam hal ini, sebuah [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3ClientBuilder.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3ClientBuilder.html)instance—sehingga Anda dapat menghubungkan panggilan metode untuk kenyamanan dan kode yang lebih mudah dibaca. Setelah Anda mengkonfigurasi properti yang Anda inginkan, panggil `build()` metode untuk membuat klien.

## Konfigurasi lanjutan dalam kode
<a name="conf-service-client-code-several"></a>

Cuplikan berikut menunjukkan opsi konfigurasi tambahan:

```
ClientOverrideConfiguration clientOverrideConfiguration =
        ClientOverrideConfiguration.builder()
                .apiCallAttemptTimeout(Duration.ofSeconds(1))
                .addMetricPublisher(CloudWatchMetricPublisher.create())
                .build();

S3Client s3Client = S3Client.builder()
        .region(Region.EU_SOUTH_2)
        .credentialsProvider(EnvironmentVariableCredentialsProvider.create())
        .overrideConfiguration(clientOverrideConfiguration)
        .httpClientBuilder(
                ApacheHttpClient.builder()
                        .maxConnections(100)
                        .connectionTimeout(Duration.ofSeconds(5))
                        .proxyConfiguration(ProxyConfiguration.builder()
                                .endpoint(URI.create("http://proxy:8080"))
                                .build())
        ).build();
```

Pada cuplikan sebelumnya, Anda dapat melihat beberapa titik masuk untuk mengonfigurasi klien layanan:
+ [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/config/ClientOverrideConfiguration.Builder.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/config/ClientOverrideConfiguration.Builder.html) menyediakan opsi konfigurasi umum di semua klien layanan. Pengaturan ini adalah perilaku AWS spesifik yang independen dari implementasi HTTP apa pun.
+ **Konfigurasi klien HTTP melalui implementasi pembuat klien HTTP terpisah.** `ApacheHttpClient.Builder`Ini adalah contoh. Klien layanan menyediakan `httpClientBuilder()` metode untuk mengaitkan klien HTTP yang dikonfigurasi ke klien layanan.
+ **Metode pada [pembangun klien](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3ClientBuilder.html) itu sendiri,** seperti `region()` dan `credentialsProvider()`

### Konfigurasi yang sama menggunakan blok konfigurasi
<a name="service-client-config-lambda"></a>

Alih-alih membuat objek terpisah dan kemudian meneruskannya ke metode klien layanan, metode AWS SDK for Java 2.x ini menyediakan metode yang menerima ekspresi lambda untuk membangun objek ini sebaris. Metode konfigurasi pada builder diberi nama yang sama, tetapi memiliki tanda tangan yang berbeda. Contoh:
+ [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/builder/SdkClientBuilder.html#overrideConfiguration(software.amazon.awssdk.core.client.config.ClientOverrideConfiguration)](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/builder/SdkClientBuilder.html#overrideConfiguration(software.amazon.awssdk.core.client.config.ClientOverrideConfiguration))
+ [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/builder/SdkClientBuilder.html#overrideConfiguration(java.util.function.Consumer)](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/client/builder/SdkClientBuilder.html#overrideConfiguration(java.util.function.Consumer))

Konfigurasi klien S3 yang ditunjukkan sebelumnya menggunakan pendekatan ini dapat dilakukan dalam satu blok kode:

```
S3Client s3Client = S3Client.builder()
        .region(Region.EU_SOUTH_2)
        .credentialsProvider(EnvironmentVariableCredentialsProvider.create())
        .overrideConfiguration(b -> b
                .apiCallAttemptTimeout(Duration.ofSeconds(1))
                .addMetricPublisher(CloudWatchMetricPublisher.create()))
        .httpClientBuilder(ApacheHttpClient.builder()
                .maxConnections(100)
                .connectionTimeout(Duration.ofSeconds(5))
                .proxyConfiguration(ProxyConfiguration.builder()
                        .endpoint(URI.create("http://proxy:8080"))
                        .build()))
        .build();
```

## Opsi konfigurasi tidak tersedia dalam kode
<a name="conf-servic-client-only-ext"></a>

Karena setelan berikut memengaruhi proses inisialisasi mendasar di SDK, Anda dapat mengatur pengaturan konfigurasi berikut hanya secara eksternal dan bukan dalam kode:

### Pengaturan Lokasi File
<a name="code-only-conf-file-loc"></a>

Pengaturan ini mengontrol lokasi file konfigurasi dan kredensyal bersama dan tidak dapat diganti secara terprogram setelah SDK memuatnya:
+ **AWS\$1CONFIG\$1FILE** (variabel lingkungan) **/AWS.configFile** (properti sistem JVM)
+ **AWS\$1SHARED\$1CREDENTIALS\$1FILE** **(variabel lingkungan)/aws. sharedCredentialsFile** (Properti sistem JVM)

Pengaturan ini harus diatur sebelum SDK memuat file konfigurasi, karena mereka menentukan di mana SDK mencari konfigurasi. Setelah SDK diinisialisasi, mengubah nilai-nilai ini tidak berpengaruh.

### Penonaktifan Layanan Metadata Instance
<a name="code-only-conf-imds"></a>
+ **AWS\$1EC2\$1METADATA\$1DISABLED (variabel lingkungan) /AWS.disableEC2Metadata** **(properti sistem JVM)**

Pengaturan ini mengontrol apakah SDK mencoba menggunakan Layanan Metadata Instans EC2 sama sekali. Setelah SDK diinisialisasi, Anda tidak dapat mengubah pengaturan ini secara terprogram.

### Pemilihan Profil
<a name="code-only-conf-profile"></a>
+ **AWS\$1PROFILE**(variabel lingkungan) **/aws.profile** (properti sistem JVM)

Setelan ini memberi tahu SDK profil mana yang akan dimuat dari file konfigurasi dan kredensyal bersama. Setelah dimuat, mengubah nilai ini tidak berpengaruh.

### Jalur Kredensyal Kontainer
<a name="code-only-conf-container-cred-path"></a>
+ **AWS\$1CONTAINER\$1CREDENTIALS\$1RELATIVE\$1URI**
+ **AWS\$1CONTAINER\$1KREDENSIALS\$1FULL\$1URI**
+ **AWS\$1CONTAINER\$1AUTHORIZATION\$1TOKEN**
+ **AWS\$1CONTAINER\$1OTORISASI\$1TOKEN\$1FILE**

Anda menggunakan variabel lingkungan ini untuk memberi tahu SDK cara mengambil kredensyal dari layanan kontainer. Setelah rantai penyedia kredensyal dibuat selama inisialisasi klien layanan, Anda tidak dapat mengubah pengaturan ini.

### Pilihan Implementasi HTTP Default
<a name="code-only-conf-http-impl"></a>
+ **SYNC\$1HTTP\$1SERVICE\$1IMPL (variabel lingkungan) /software.amazon.awssdk.http.service.impl (properti sistem** **JVM)**
+ **ASYNC\$1HTTP\$1SERVICE\$1IMPL (variabel lingkungan) /software.amazon.awssdk.http.async.service.impl** **(properti sistem JVM)**

Pengaturan global ini menentukan implementasi klien HTTP mana yang digunakan SDK untuk semua klien layanan kecuali diganti dalam kode untuk klien layanan individu. Anda harus mengatur ini sebelum SDK menginisialisasi klien HTTP dan tidak dapat diubah sesudahnya.