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
Menggunakan klien layanan untuk membuat permintaan
Setelah menyelesaikan langkah-langkah dalam Men yiapkan SDK dan memahami cara mengonfigurasi klien layanan, Anda siap untuk membuat permintaan ke AWS layanan seperti Amazon S3, Amazon DynamoDB,, Amazon EC2 AWS Identity and Access Management, dan banyak lagi.
Buat klien layanan
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 setter yang lancar mengembalikan builder objek, sehingga Anda dapat mengrantai panggilan metode untuk kenyamanan dan untuk 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 thread. Untuk kinerja terbaik, perlakukan mereka sebagai objek berumur panjang. Setiap klien memiliki sumber daya kumpulan koneksi sendiri yang dilepaskan ketika klien dikumpulkan 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 pembangun klien layanan tidak diperlukan untuk semua AWS layanan; namun, ini adalah praktik terbaik untuk menyetel Wilayah untuk panggilan API yang Anda buat di aplikasi Anda. Lihat pemilihan AWS wilayah untuk informasi lebih lanjut.
Konfigurasi klien default
Pembangun klien memiliki metode pabrik lain bernamacreate(). Metode ini membuat klien layanan dengan konfigurasi default. Ini menggunakan rantai penyedia default untuk memuat kredenSIAL dan rantai Wilayah AWS penyedia default. Jika kredenSIAL atau Wilayah tidak dapat ditentukan dari lingkungan tempat aplikasi berjalan, panggilan create gagal. Lihat Menggunakan kredenSIAL dan Pemilihan Wilayah untuk informasi selengkapnya tentang bagaimana SDK menentukan kredenSIAL 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
Untuk detail tentang cara mengonfigurasi klien layanan, lihat Konfigurasi klien secara eksternal danKonfigurasi klien dalam kode.
Tutup klien layanan
Sebagai praktik terbaik, Anda harus menggunakan klien layanan untuk beberapa panggilan layanan API selama masa pakai aplikasi. Namun, jika Anda memerlukan klien layanan untuk penggunaan satu kali atau tidak lagi membutuhkan klien layanan, tutup.
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 try -resources. Klien layanan mengimplementasikan Autoclosable antarmuka, sehingga JDK secara otomatis memanggil close() metode di akhir pernyataan.
Contoh berikut menunjukkan cara menggunakan klien layanan untuk panggilan satu kali. StsClientYang 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(); } }
Buat permintaan
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);
Daripada membuat permintaan dan meneruskan instans, SDK menyediakan API yang 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
// 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
Meskipun klien layanan tidak dapat diubah, Anda dapat mengganti banyak pengaturannya di tingkat permintaan. Saat membuat permintaan, Anda dapat menyediakan AwsRequestOverrideConfiguration
-
apiCallAttemptTimeout -
apiCallTimeout -
credentialProvider -
compressionConfiguration -
putHeader
Untuk contoh mengganti setelan 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 habis waktu sebelum unduhan selesai. Untuk mencapai hal ini, tingkatkan nilai batas waktu hanya untuk satu GetObject permintaan seperti yang ditunjukkan dalam kode berikut.
Menangani tanggapan
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 instance pertama yang dikembalikan dengan RunInstancesResponse
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 pen DeleteContactList
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()); }