

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

# Mengkonfigurasi titik akhir klien di AWS SDK for Java 2.x
<a name="endpoint-config"></a>

SDK for Java 2.x menyediakan beberapa cara untuk mengonfigurasi titik akhir layanan. Endpoint adalah URL yang digunakan SDK untuk melakukan panggilan API. Layanan AWS Secara default, SDK secara otomatis menentukan titik akhir yang sesuai untuk setiap layanan berdasarkan konfigurasi yang telah Wilayah AWS Anda konfigurasi. Namun, ada skenario di mana Anda mungkin perlu menyesuaikan atau mengganti titik akhir ini: 
+ Bekerja dengan implementasi layanan lokal atau pihak ketiga (seperti LocalStack)
+ Menghubungkan ke Layanan AWS melalui proxy atau titik akhir VPC
+ Pengujian terhadap titik akhir layanan beta atau pra-rilis

## Opsi konfigurasi titik akhir
<a name="endpoint-configuration-options"></a>

 AWS SDK for Java 2.x Ini menyediakan beberapa cara untuk mengkonfigurasi titik akhir: 
+ Konfigurasi dalam kode dengan menggunakan pembuat klien layanan
+ Konfigurasi eksternal dengan variabel lingkungan
+ Konfigurasi eksternal dengan properti sistem JVM
+ Konfigurasi eksternal dengan file AWS konfigurasi bersama

## Konfigurasi titik akhir dalam kode
<a name="in-code-endpoint-configuration"></a>

### Menggunakan `endpointOverride`
<a name="endpoint-override"></a>

 Cara paling langsung untuk mengonfigurasi titik akhir adalah dengan menggunakan `endpointOverride` metode pada pembuat klien layanan. Metode ini menerima `URI` objek yang mewakili URL endpoint kustom. 

**Example Menyetel titik akhir khusus untuk klien Amazon S3**  

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import java.net.URI;

S3Client s3 = S3Client.builder()
        .region(Region.US_WEST_2)
        .endpointOverride(URI.create("https://my-custom-s3-endpoint.example.com"))
        .build();
```

Saat menggunakan`endpointOverride`, Anda masih harus menentukan wilayah untuk klien, meskipun titik akhir disetel secara eksplisit. Wilayah ini digunakan untuk menandatangani permintaan. 

### Penemuan titik akhir
<a name="endpoint-discovery"></a>

Beberapa Layanan AWS mendukung penemuan titik akhir, di mana SDK dapat secara otomatis menemukan titik akhir optimal untuk digunakan. Anda dapat mengaktifkan atau menonaktifkan fitur ini menggunakan `endpointDiscoveryEnabled` metode pada pembuat klien layanan. 

**Example Mengaktifkan penemuan titik akhir untuk klien DynamoDB**  

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;

DynamoDbClient dynamoDb = DynamoDbClient.builder()
        .region(Region.US_WEST_2)
        .endpointDiscoveryEnabled(true)
        .build();
```

## Konfigurasi titik akhir tingkat permintaan
<a name="request-level-endpoint-configuration"></a>

Dalam beberapa kasus, Anda mungkin perlu mengganti titik akhir untuk permintaan tertentu saat menggunakan klien yang sama untuk permintaan lain dengan titik akhir default. AWS SDK for Java 2.x Mendukung ini melalui penggantian permintaan. 

**Example Mengganti titik akhir untuk permintaan tertentu**  

```
import software.amazon.awssdk.core.SdkRequest;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.GetObjectRequest;
import software.amazon.awssdk.http.SdkHttpRequest;

S3Client s3 = S3Client.builder()
        .region(Region.US_WEST_2)
        .build();

// Create a request
GetObjectRequest getObjectRequest = GetObjectRequest.builder()
        .bucket("amzn-s3-demo-bucket")
        .key("my-key")
        .overrideConfiguration(c -> c.putHeader("Host", "custom-endpoint.example.com"))
        .build();

// Execute the request with the custom endpoint
s3.getObject(getObjectRequest);
```

Perhatikan bahwa penggantian titik akhir tingkat permintaan terbatas dan mungkin tidak berfungsi untuk semua layanan atau skenario. Untuk kebanyakan kasus, disarankan untuk menggunakan konfigurasi titik akhir tingkat klien. 

## Konfigurasi titik akhir eksternal
<a name="external-endpoint-configuration"></a>

### Menggunakan variabel lingkungan
<a name="environment-variables-for-endpoints"></a>

Anda dapat mengonfigurasi titik akhir menggunakan variabel lingkungan. SDK mendukung konfigurasi titik akhir khusus layanan melalui variabel lingkungan dalam format`AWS_ENDPOINT_URL_[SERVICE]`, di mana `[SERVICE]` adalah pengenal layanan huruf besar. 

**Example Menyetel titik akhir S3 menggunakan variabel lingkungan**  

```
# For Linux/macOS
export AWS_ENDPOINT_URL_S3=https://my-custom-s3-endpoint.example.com

# For Windows
set AWS_ENDPOINT_URL_S3=https://my-custom-s3-endpoint.example.com
```

 Anda juga dapat mengatur awalan atau akhiran URL endpoint global menggunakan variabel lingkungan berikut: 
+ `AWS_ENDPOINT_URL`- Menetapkan titik akhir global untuk semua layanan
+ `AWS_ENDPOINT_URL_PREFIX`- Menambahkan awalan ke semua titik akhir layanan
+ `AWS_ENDPOINT_URL_SUFFIX`- Menambahkan akhiran ke semua titik akhir layanan

### Menggunakan properti sistem JVM
<a name="jvm-system-properties-for-endpoints"></a>

 Anda juga dapat mengonfigurasi titik akhir menggunakan properti sistem JVM. Formatnya mirip dengan variabel lingkungan tetapi menggunakan konvensi penamaan yang berbeda. 

**Example Mengatur titik akhir S3 menggunakan properti sistem JVM**  

```
java -Daws.endpointUrl.s3=https://my-custom-s3-endpoint.example.com -jar your-application.jar
```

 Konfigurasi endpoint global juga tersedia melalui properti sistem: 
+ `aws.endpointUrl`- Menetapkan titik akhir global untuk semua layanan
+ `aws.endpointUrl.prefix`- Menambahkan awalan ke semua titik akhir layanan
+ `aws.endpointUrl.suffix`- Menambahkan akhiran ke semua titik akhir layanan

### Menggunakan file AWS konfigurasi bersama
<a name="aws-config-file-for-endpoints"></a>

 Ini AWS SDK for Java 2.x juga mendukung konfigurasi titik akhir melalui file AWS konfigurasi bersama, biasanya terletak di `~/.aws/config` (Linux/macOS) atau (Windows). `%USERPROFILE%\.aws\config` Lihat [Panduan Referensi Alat AWS SDKs dan](https://docs.aws.amazon.com/sdkref/latest/guide/feature-ss-endpoints.html#ss-endpoints-config) untuk informasi dan contoh.

## Konfigurasi diutamakan
<a name="endpoint-configuration-precedence"></a>

 Ketika beberapa konfigurasi titik akhir hadir, SDK mengikuti urutan prioritas ini (dari tertinggi ke terendah): 

1. Pengesampingan tingkat permintaan (bila berlaku)

1. Konfigurasi tingkat klien melalui `endpointOverride`

1. Variabel lingkungan

1. Properti sistem JVM

1. File AWS konfigurasi bersama

1. Titik akhir default berdasarkan konfigurasi Wilayah AWS

## Konfigurasi titik akhir khusus layanan
<a name="service-specific-endpoint-configuration"></a>

 Beberapa Layanan AWS memiliki opsi konfigurasi titik akhir tambahan khusus untuk layanan itu. Berikut adalah beberapa contoh: 

### Konfigurasi Titik Akhir Amazon S3
<a name="s3-endpoint-configuration"></a>

 Amazon S3 mendukung beberapa konfigurasi titik akhir melalui kelas: `S3Configuration` 
+ `dualstackEnabled`- Memungkinkan IPv6 dukungan
+ `accelerateModeEnabled`- Mengaktifkan Akselerasi Transfer S3
+ `pathStyleAccessEnabled`- Menggunakan akses gaya jalur alih-alih gaya yang dihosting virtual
+ `useArnRegionEnabled`- Menggunakan wilayah dari ARN untuk permintaan lintas wilayah
+ `fipsModeEnabled`- Permintaan rute ke titik akhir yang sesuai dengan FIPS

**Example Mengkonfigurasi opsi titik akhir khusus S3**  

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.S3Configuration;

S3Client s3 = S3Client.builder()
        .region(Region.US_WEST_2)
        .serviceConfiguration(S3Configuration.builder()
                .accelerateModeEnabled(true)
                .dualstackEnabled(true)
                .pathStyleAccessEnabled(false)
                .fipsModeEnabled(true)
                .build())
        .build();
```

### Konfigurasi titik akhir DynamoDB
<a name="dynamodb-endpoint-configuration"></a>

 Untuk DynamoDB, Anda mungkin ingin menggunakan penemuan titik akhir atau terhubung ke [DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html) lokal untuk pengujian: 

**Example Menghubungkan ke DynamoDB lokal**  

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import java.net.URI;

DynamoDbClient dynamoDb = DynamoDbClient.builder()
        .endpointOverride(URI.create("http://localhost:8000"))
        // The region is meaningless for DynamoDB local but required for the client builder.
        .region(Region.US_WEST_2)
        .build();
```

DynamoDB juga mendukung penggunaan endpoint [berbasis akun](https://docs.aws.amazon.com/sdkref/latest/guide/feature-account-endpoints.html), yang dapat Anda konfigurasi dalam kode atau menggunakan pengaturan eksternal. *Contoh berikut menunjukkan cara menonaktifkan penggunaan endpoint berbasis akun dalam kode saat Anda membuat klien (pengaturan default lebih disukai):*

```
DynamoDbClient dynamoDbClient = DynamoDbClient.builder()
    .region(Region.US_EAST_1)
    .accountIdEndpointMode(AccountIdEndpointMode.DISABLED)
    .build();
```

## Praktik terbaik
<a name="endpoint-configuration-best-practices"></a>

 Saat mengonfigurasi titik akhir di AWS SDK for Java 2.x, pertimbangkan praktik terbaik ini: 
+  *Gunakan konfigurasi eksternal untuk titik akhir khusus lingkungan —Gunakan* variabel lingkungan, properti sistem, atau file AWS konfigurasi untuk titik akhir yang bervariasi antar lingkungan (pengembangan, pengujian, produksi). 
+  *Gunakan konfigurasi dalam kode untuk titik akhir khusus aplikasi* — Gunakan `endpointOverride` metode pembuat klien untuk titik akhir yang spesifik untuk desain aplikasi Anda. 
+  *Selalu tentukan wilayah* —Bahkan saat mengganti titik akhir, selalu tentukan wilayah seperti yang digunakan untuk penandatanganan permintaan. 
+  *Berhati-hatilah dengan penggantian titik akhir global —Menggunakan penggantian* titik akhir global dapat memengaruhi semua layanan, yang mungkin bukan yang Anda inginkan. 
+  *Pertimbangkan implikasi keamanan* —Saat menggunakan titik akhir khusus, pastikan mereka memiliki langkah-langkah keamanan yang tepat, terutama untuk beban kerja produksi. 