Tema ini menjelaskan cara menginstal Elastic Compute Service (ECS) SDK V2.0 untuk Java dan memberikan contoh penggunaannya untuk memanggil operasi API ECS. Contohnya menggunakan ECS SDK V2.0 untuk Java dalam memanggil operasi DescribeInstances guna menanyakan informasi tentang Instance ECS.
Prasyarat
Pengguna Resource Access Management (RAM) dengan izin minimum harus masuk menggunakan pasangan AccessKey-nya. Tidak disarankan menggunakan akun Alibaba Cloud karena memiliki izin penuh, dan pasangan AccessKey-nya berisiko tinggi jika terganggu. Untuk panduan membuat pasangan AccessKey, lihat Buat pasangan AccessKey.
Pengguna RAM harus diizinkan mengelola sumber daya ECS. Contoh ini memerlukan akses hanya-baca, dan kebijakan sistem AliyunECSReadonlyAccess digunakan. Berikan izin sesuai kebutuhan bisnis Anda.
Buat kebijakan kustom.
Untuk panduan pembuatan kebijakan kustom, lihat Buat kebijakan kustom dan Otorisasi RAM.
ECS menyediakan template kebijakan kustom berdasarkan praktik terbaik. Gunakan template tersebut untuk menetapkan kebijakan secara cepat sesuai kebutuhan Anda. Untuk informasi lebih lanjut, lihat Kebijakan Kustom.
Gunakan kebijakan sistem.
Untuk detail tentang kebijakan sistem yang didukung oleh ECS dan izin mereka, lihat Kebijakan Sistem untuk ECS.
Pasangan AccessKey harus dikonfigurasi dalam variabel lingkungan. Untuk panduan, lihat Konfigurasikan variabel lingkungan di Linux, macOS, dan Windows.
Instal SDK
SDK untuk Java dapat diinstal melalui berbagai metode. Contoh ini menggunakan Apache Maven. Untuk alternatif lain, kunjungi Pusat SDK.
Dalam file pom.xml proyek Maven Anda, tambahkan konfigurasi dependensi di bagian <dependencies>, lalu perbarui proyek Maven.
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>ecs20140526</artifactId>
<version>5.3.0</version>
</dependency>Gunakan SDK
1. Inisialisasi klien
SDK Alibaba Cloud mendukung berbagai kredensial akses, seperti pasangan AccessKey dan Token Layanan Keamanan (STS), untuk menginisialisasi klien. Untuk informasi lebih lanjut, lihat Kelola kredensial akses. Contoh ini menginisialisasi klien menggunakan pasangan AccessKey.
import com.aliyun.ecs20140526.Client;
import com.aliyun.teaopenapi.models.Config;
public class Sample {
private static Client createClient() throws Exception {
Config config = new Config()
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID disetel dalam lingkungan runtime.
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET disetel dalam lingkungan runtime.
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
// Untuk titik akhir, lihat https://api.aliyun.com/product/Ecs
.setEndpoint("ecs.cn-hangzhou.aliyuncs.com");
return new Client(config);
}
}2. Bangun objek permintaan
Sebelum membangun objek permintaan, lihat DescribeInstances untuk detail parameter.
Nama objek permintaan harus dalam format {Nama API}Request. Sebagai contoh, objek permintaan untuk DescribeInstances adalah DescribeInstancesRequest.
// Bangun objek permintaan.
DescribeInstancesRequest request = new DescribeInstancesRequest().setRegionId("cn-hangzhou");3. Lakukan panggilan
Saat memanggil operasi API melalui klien, Anda dapat mengonfigurasi parameter waktu proses seperti timeout dan pengaturan proxy. Untuk informasi lebih lanjut, lihat Pengaturan Lanjutan.
Nama objek respons harus dalam format {Nama API}Response. Sebagai contoh, objek respons untuk DescribeInstances adalah DescribeInstancesResponse.
// Setel parameter waktu proses.
RuntimeOptions runtime = new RuntimeOptions();
// Panggil operasi API DescribeInstances.
DescribeInstancesResponse response = client.describeInstancesWithOptions(request, runtime);
System.out.println(response.body.toMap());4. Tangani pengecualian
Pengecualian yang mungkin terjadi saat menggunakan SDK untuk Java diklasifikasikan menjadi dua jenis: TeaUnretryableException dan TeaException.
TeaUnretryableException: Jenis pengecualian ini disebabkan oleh masalah jaringan. Saat jumlah maksimum upaya ulang tercapai, TeaUnretryableException dilemparkan.
TeaException: Jenis pengecualian ini disebabkan oleh kesalahan bisnis.
Kami sarankan Anda menangani pengecualian dengan benar melalui operasi seperti melaporkan pengecualian, mencatat log, dan melakukan upaya ulang. Ini membantu memastikan ketangguhan dan stabilitas sistem Anda.
5. Contoh kode
import com.aliyun.ecs20140526.Client;
import com.aliyun.ecs20140526.models.DescribeInstancesRequest;
import com.aliyun.ecs20140526.models.DescribeInstancesResponse;
import com.aliyun.tea.TeaException;
import com.aliyun.tea.TeaUnretryableException;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
public class Sample {
private static Client createClient() throws Exception {
Config config = new Config()
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID disetel dalam lingkungan runtime.
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET disetel dalam lingkungan runtime.
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
// Untuk titik akhir, lihat https://api.aliyun.com/product/Ecs.
.setEndpoint("ecs.cn-hangzhou.aliyuncs.com");
return new Client(config);
}
public static void main(String[] args) {
try {
Client client = Sample.createClient();
// Bangun objek permintaan.
DescribeInstancesRequest request = new DescribeInstancesRequest()
.setRegionId("cn-hangzhou");
// Setel parameter waktu proses.
RuntimeOptions runtime = new RuntimeOptions();
// Panggil operasi API DescribeInstances.
DescribeInstancesResponse response = client.describeInstancesWithOptions(request, runtime);
System.out.println(response.body.toMap());
} catch (TeaUnretryableException ue) {
// Ini hanya untuk demonstrasi. Tangani pengecualian dengan hati-hati dan jangan abaikan dalam produksi.
ue.printStackTrace();
// Cetak pesan kesalahan.
System.out.println(ue.getMessage());
// Cetak permintaan terakhir untuk memeriksa detail permintaan saat kesalahan terjadi.
System.out.println(ue.getLastRequest());
} catch (TeaException e) {
// Ini hanya untuk demonstrasi. Tangani pengecualian dengan hati-hati dan jangan abaikan dalam produksi.
e.printStackTrace();
// Cetak kode kesalahan.
System.out.println(e.getCode());
// Cetak pesan kesalahan, yang mencakup RequestId.
System.out.println(e.getMessage());
// Cetak konten kesalahan spesifik yang dikembalikan oleh server.
System.out.println(e.getData());
} catch (Exception e) {
// Ini hanya untuk demonstrasi. Tangani pengecualian dengan hati-hati dan jangan abaikan dalam produksi.
e.printStackTrace();
}
}
}Referensi
Selain metode di atas, Anda juga dapat melakukan panggilan generik ke ECS OpenAPI. Untuk informasi lebih lanjut, lihat Panggilan Generik.
Untuk informasi tentang SDK V1.0, lihat V1.0 Java SDK.