

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

# Membuat Layanan AWS permintaan menggunakan AWS SDK for Java 2.x
<a name="work-witih-clients"></a>

## Menggunakan klien layanan untuk membuat permintaan
<a name="using-service-client"></a>

Setelah menyelesaikan langkah-langkah dalam [Menyiapkan SDK](setup.md) dan memahami cara [mengonfigurasi klien layanan](configuring-service-clients.md), Anda siap mengajukan permintaan ke AWS layanan seperti Amazon S3, Amazon DynamoDB, Amazon EC2 AWS Identity and Access Management, dan lainnya.

### Buat klien layanan
<a name="work-with-clients-create"></a>

Untuk membuat permintaan ke Layanan AWS, Anda harus terlebih dahulu membuat instance klien layanan untuk layanan tersebut dengan menggunakan metode pabrik statis,. `builder()` `builder()`Metode mengembalikan `builder` objek yang memungkinkan Anda untuk menyesuaikan klien layanan. Metode penyetel yang lancar mengembalikan `builder` objek, sehingga Anda dapat merantai panggilan metode untuk kenyamanan dan kode yang lebih mudah dibaca. Setelah Anda mengkonfigurasi properti yang Anda inginkan, panggil `build()` metode untuk membuat klien.

Sebagai contoh, cuplikan kode berikut membuat instance `Ec2Client` objek sebagai klien layanan untuk Amazon EC2.

```
Region region = Region.US_WEST_2;
Ec2Client ec2Client = Ec2Client.builder()
        .region(region)
        .build();
```

**catatan**  
Klien layanan di SDK aman untuk utas. Untuk kinerja terbaik, perlakukan mereka sebagai benda berumur panjang. Setiap klien memiliki sumber daya kolam koneksi sendiri yang dilepaskan saat klien mengumpulkan sampah.  
Objek klien layanan tidak dapat diubah, jadi Anda harus membuat klien baru untuk setiap layanan yang Anda minta, atau jika Anda ingin menggunakan konfigurasi yang berbeda untuk membuat permintaan ke layanan yang sama.  
Menentukan `Region` dalam pembuat klien layanan tidak diperlukan untuk semua AWS layanan; namun, ini adalah praktik terbaik untuk mengatur Wilayah untuk panggilan API yang Anda buat dalam aplikasi Anda. Lihat [pemilihan AWS wilayah](region-selection.md) untuk informasi lebih lanjut.

### Konfigurasi klien default
<a name="using-default-client"></a>

Pembangun klien memiliki metode pabrik lain bernama`create()`. Metode ini menciptakan klien layanan dengan konfigurasi default. Ini menggunakan [rantai penyedia default](credentials-chain.md) untuk memuat kredensil dan rantai [Wilayah AWS penyedia default](region-selection.md#automatically-determine-the-aws-region-from-the-environment). Jika kredensil atau Wilayah tidak dapat ditentukan dari lingkungan tempat aplikasi berjalan, panggilan ke `create` gagal. Lihat [Menggunakan kredensil](credentials.md) dan [pemilihan Wilayah](region-selection.md) untuk informasi selengkapnya tentang cara SDK menentukan kredensil dan Wilayah yang akan digunakan.

Misalnya, cuplikan kode berikut membuat instance `DynamoDbClient` objek sebagai klien layanan untuk Amazon DynamoDB:

```
DynamoDbClient dynamoDbClient = DynamoDbClient.create();
```

### Konfigurasikan klien layanan
<a name="using-configure-service-clients"></a>

Untuk detail tentang cara mengonfigurasi klien layanan, lihat [Konfigurasi klien secara eksternal](configuring-service-clients-ext.md) dan[Konfigurasi klien dalam kode](configuring-service-clients-code.md).

### Tutup klien layanan
<a name="using-closing-client"></a>

Sebagai praktik terbaik, Anda harus menggunakan klien layanan untuk beberapa panggilan layanan API selama masa pakai aplikasi. Namun, jika Anda membutuhkan klien layanan untuk penggunaan satu kali atau tidak lagi membutuhkan klien layanan, tutuplah.

Panggil `close()` metode ketika klien layanan tidak lagi diperlukan untuk membebaskan sumber daya.

```
ec2Client.close();
```

Jika Anda memerlukan klien layanan untuk penggunaan satu kali, Anda dapat membuat instance klien layanan sebagai sumber daya dalam pernyataan -with-resources. `try` Klien layanan mengimplementasikan `[Autoclosable](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/AutoCloseable.html)` antarmuka, sehingga JDK secara otomatis memanggil `close()` metode di akhir pernyataan.

Contoh berikut menunjukkan cara menggunakan klien layanan untuk panggilan satu kali. `StsClient`Yang memanggil AWS Security Token Service ditutup setelah mengembalikan ID akun.

```
import software.amazon.awssdk.services.sts.StsClient;

String getAccountID() {
    try (StsClient stsClient = StsClient.create()) {
       return stsClient.getCallerIdentity().account();
    }
}
```

## Membuat permintaan
<a name="using-making-requests"></a>

Gunakan klien layanan untuk membuat permintaan ke yang sesuai Layanan AWS.

Misalnya, cuplikan kode ini menunjukkan cara membuat `RunInstancesRequest` objek untuk membuat instance Amazon EC2 baru:

```
// Create the request by using the fluid setter methods of the request builder.
RunInstancesRequest runInstancesRequest = RunInstancesRequest.builder()
        .imageId(amiId)
        .instanceType(InstanceType.T1_MICRO)
        .maxCount(1)
        .minCount(1)
        .build();

// Use the configured request with the service client.
RunInstancesResponse response = ec2Client.runInstances(runInstancesRequest);
```

Alih-alih membuat permintaan dan meneruskan instance, SDK menyediakan API lancar yang dapat Anda gunakan untuk membuat permintaan. Dengan API yang lancar, Anda dapat menggunakan ekspresi lambda Java untuk membuat permintaan 'in-line'.

Contoh berikut menulis ulang contoh sebelumnya dengan menggunakan versi `runInstances` [metode yang menggunakan pembangun](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/ec2/Ec2Client.html#runInstances(java.util.function.Consumer)) untuk membuat permintaan.

```
// Create the request by using a lambda expression.
RunInstancesResponse response = ec2.runInstances(r -> r
                .imageId(amiId)
                .instanceType(InstanceType.T1_MICRO)
                .maxCount(1)
                .minCount(1));
```

### Gunakan permintaan untuk mengganti konfigurasi klien
<a name="using-override-client-config-request"></a>

Meskipun klien layanan tidak dapat diubah, Anda dapat mengganti banyak pengaturannya di tingkat permintaan. Saat membuat permintaan, Anda dapat memberikan [AwsRequestOverrideConfiguration](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/awscore/AwsRequestOverrideConfiguration.html)instance untuk menyediakan pengaturan yang diganti. Beberapa metode yang dapat Anda gunakan untuk mengganti pengaturan klien adalah:
+ `apiCallAttemptTimeout`
+ `apiCallTimeout`
+ `credentialProvider`
+ `compressionConfiguration`
+ `putHeader`

Untuk contoh penggantian pengaturan klien dengan permintaan, asumsikan bahwa Anda memiliki klien S3 berikut yang menggunakan pengaturan default.

```
S3Client s3Client = S3Client.create();
```

Anda ingin mengunduh file besar dan ingin memastikan permintaan tidak batas waktu sebelum unduhan selesai. Untuk mencapai hal ini, tingkatkan nilai batas waktu hanya untuk satu `GetObject` permintaan seperti yang ditunjukkan dalam kode berikut.

------
#### [ Standard API ]

```
AwsRequestOverrideConfiguration overrideConfiguration = AwsRequestOverrideConfiguration.builder()
    .apiCallTimeout(Duration.ofSeconds(100L))
    .apiCallAttemptTimeout(Duration.ofSeconds(25L))
    .build();

GetObjectRequest request = GetObjectRequest.builder()
    .bucket("amzn-s3-demo-bucket")
    .key("demo-key")
    .overrideConfiguration(overrideConfiguration)
    .build();

s3Client.getObject(request, myPath);
```

------
#### [ Fluent API ]

```
s3Client.getObject(b -> b
        .bucket("amzn-s3-demo-bucket")
        .key("demo-key")
        .overrideConfiguration(c -> c
            .apiCallTimeout(Duration.ofSeconds(100L))
            .apiCallAttemptTimeout(Duration.ofSeconds(25L))),
    myPath);
```

------

## Menangani tanggapan
<a name="using-handling-responses"></a>

SDK mengembalikan objek respons untuk sebagian besar operasi layanan. Kode Anda dapat memproses informasi dalam objek respons sesuai dengan kebutuhan Anda.

Misalnya, cuplikan kode berikut mencetak id contoh pertama yang dikembalikan dengan [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/ec2/model/RunInstancesResponse.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/ec2/model/RunInstancesResponse.html)objek dari permintaan sebelumnya.

```
RunInstancesResponse runInstancesResponse = ec2Client.runInstances(runInstancesRequest);
System.out.println(runInstancesResponse.instances().get(0).instanceId());
```

Namun, tidak semua operasi mengembalikan objek respons dengan data khusus layanan. Dalam situasi ini, Anda dapat menanyakan status respons HTTP untuk mengetahui apakah operasi berhasil.

Misalnya, kode dalam cuplikan berikut memeriksa respons HTTP untuk melihat apakah [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sesv2/SesV2Client.html#deleteContactList(software.amazon.awssdk.services.sesv2.model.DeleteContactListRequest)](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/sesv2/SesV2Client.html#deleteContactList(software.amazon.awssdk.services.sesv2.model.DeleteContactListRequest))pengoperasian Amazon Simple Email Service berhasil. 

```
SesV2Client sesv2Client = SesV2Client.create();

DeleteContactListRequest request = DeleteContactListRequest.builder()
    .contactListName("ExampleContactListName")
    .build();

DeleteContactListResponse response = sesv2Client.deleteContactList(request);
if (response.sdkHttpResponse().isSuccessful()) {
    System.out.println("Contact list deleted successfully");
} else {
    System.out.println("Failed to delete contact list. Status code: " + response.sdkHttpResponse().statusCode());
}
```