Topik ini menjelaskan cara menggunakan SDK untuk memanggil Cloud Control API guna mengelola sumber daya. Dalam topik ini, vSwitch dalam Virtual Private Cloud (VPC) digunakan sebagai contoh dengan kode sampel yang ditulis dalam Java. Tutorial ini membimbing Anda melalui prosedur untuk mengimpor SDK, menanyakan metadata sumber daya, membuat, menanyakan, memperbarui, dan menghapus sumber daya, serta menanyakan status tugas ketika operasi asinkron diaktifkan untuk Operasi API Cloud Control.
Prasyarat
Pengguna RAM:
Buat pasangan AccessKey untuk pengguna RAM. Akun Alibaba Cloud memiliki semua izin pada sumber daya. Jika pasangan AccessKey akun Alibaba Cloud Anda bocor, sumber daya Anda akan terpapar pada risiko besar. Kami sarankan Anda menggunakan pasangan AccessKey dari pengguna RAM. Untuk informasi lebih lanjut, lihat Buat pasangan AccessKey.
Berikan izin yang diperlukan pada sumber daya VPC kepada pengguna RAM yang ingin Anda gunakan. Instruksi operasi ini melibatkan berbagai macam operasi pada vSwitch dalam VPC. Anda harus memilih AliyunVPCFullAccess sebagai kebijakan sistem. Anda dapat membuat kebijakan kustom berdasarkan kebutuhan bisnis Anda. Untuk informasi lebih lanjut, lihat Buat kebijakan kustom.
Pasangan AccessKey pengguna RAM dikonfigurasi dalam variabel lingkungan. Untuk informasi lebih lanjut, lihat Konfigurasikan variabel lingkungan di Linux, macOS, dan Windows.
VPC
Anda harus membuat VPC tempat vSwitch tersebut terkait. Untuk informasi lebih lanjut, lihat Buat dan kelola VPC.
Metadata sumber daya
Manajemen sumber daya diimplementasikan berdasarkan metadata sumber daya. Anda harus familiar dengan Metadata sumber daya.
Operasi sinkron dan asinkron
Pembuatan dan penghapusan sumber daya tidak dilakukan secara sinkron dengan operasi Cloud Control API. Untuk informasi lebih lanjut, lihat operasi sinkron dan asinkron. Jika Anda ingin menanyakan status tugas ketika operasi asinkron diaktifkan untuk Cloud Control API, lihat Tanyakan status tugas.
Java
Anda harus menggunakan Java 8 atau yang lebih baru.
Inisialisasi proyek
Instal CloudControlAPI SDK untuk mendapatkan AccessKey dalam variabel lingkungan.
Impor SDK ke proyek Anda. Untuk informasi lebih lanjut, lihat Instal CloudControlAPI SDK. Anda dapat menggunakan SDK untuk mengintegrasikan dan menggunakan Cloud Control API. Dalam contoh ini, SDK diimpor sebagai berikut:
<dependency> <groupId>com.aliyun</groupId> <artifactId>cloudcontrol20220830</artifactId> <version>1.1.1</version> </dependency>Buat ExampleDemo untuk mengimplementasikan manajemen sumber daya. Tambahkan metode createClient ke ExampleDemo untuk mendapatkan pasangan AccessKey dalam variabel lingkungan dan menginisialisasi klien. Kode sampel:
/** * Inisialisasi klien. * @return Client */ public static Client createClient() throws Exception { // Jika kode proyek bocor, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya dalam akun Anda mungkin terganggu. Contoh kode sampel berikut hanya disediakan untuk referensi. Config config = new Config() // Wajib. Pastikan bahwa variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi. .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")) // Wajib. Pastikan bahwa variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi. .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); # Untuk informasi lebih lanjut tentang titik akhir, lihat https://api.aliyun.com/product/cloudcontrol. config.endpoint = "cloudcontrol.aliyuncs.com"; return new Client(config); }
Tanyakan detail tipe sumber daya
Anda dapat menanyakan detail tipe sumber daya berdasarkan kode produk dan kode tipe sumber daya. Data yang dikembalikan adalah metadata sumber daya. Operasi manajemen sumber daya selanjutnya seperti pembuatan, penanyaaan, daftar, dan penghapusan diimplementasikan berdasarkan metadata sumber daya.
Anda dapat memanggil operasi GetResourceType untuk mendapatkan detail tipe sumber daya. Dalam contoh ini, vSwitch dalam VPC digunakan. Kode produk VPC adalah VPC, dan kode tipe sumber daya vSwitch adalah vSwitch. Kode sampel:
CatatanUntuk informasi lebih lanjut tentang cara mendapatkan kode produk dan kode sumber daya, lihat Di mana saya bisa menemukan kode layanan dan kode tipe sumber daya?
/** * Tanyakan detail tipe sumber daya. * @param productCode Kode produk, yang merupakan "VPC" dalam contoh ini. * @param resourceTypeCode Kode tipe sumber daya, yang merupakan "vSwitch" dalam contoh ini. * @param client Klien * @return resourceTypeWithOptions Respons */ public GetResourceTypeResponse getResourceType(String productCode, String resourceTypeCode, Client client) throws Exception { String requestPath = "/api/v1/providers/Aliyun/products/" + productCode + "/resourceTypes/" + resourceTypeCode; com.aliyun.cloudcontrol20220830.models.GetResourceTypeHeaders getResourceTypeHeaders = new com.aliyun.cloudcontrol20220830.models.GetResourceTypeHeaders() .setXAcsAcceptLanguage("zh_CH"); com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); // Tulis kode Anda sendiri untuk menampilkan respons dari operasi API jika perlu. GetResourceTypeResponse resourceTypeWithOptions = client.getResourceTypeWithOptions(requestPath, getResourceTypeHeaders, runtime); return resourceTypeWithOptions; }Metadata sumber daya yang badan responsnya adalah vSwitch dikembalikan. Untuk informasi lebih lanjut tentang cara menafsirkan metadata sumber daya, lihat GetResourceType - Tanyakan tipe sumber daya. Dalam operasi ini, badan respons adalah:
Buat sumber daya
Buat vSwitch untuk operasi selanjutnya seperti pembaruan, penanyaaan, dan penghapusan.
Anda dapat memanggil operasi CreateResource dan memasukkan parameter permintaan berdasarkan metadata sumber daya. Kode sampel:
/** * Buat sumber daya * @param regionId ID wilayah. * @param productCode Kode produk, yang merupakan "VPC" dalam contoh ini. * @param resourceTypeCode Kode tipe sumber daya, yang merupakan "vSwitch" dalam contoh ini. * @param client Pengguna RAM (klien) * @return resourceWithOptions Respons. */ public CreateResourceResponse createResource(String regionId, String productCode, String resourceTypeCode, Client client) throws Exception { String requestPath = "/api/v1/providers/Aliyun/products/" + productCode + "/resources/" + resourceTypeCode; // Parameter respons Map body = new HashMap(); body.put("VpcId", "vpc-m5esjf3a6b380olet****"); // ID VPC. body.put("CidrBlock", "172.16.24.0/24"); // Blok CIDR vSwitch. body.put("ZoneId", "cn-qingdao-b"); // ID zona. CreateResourceRequest createResourceRequest = new CreateResourceRequest() .setRegionId(regionId) .setBody(body); com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); Map<String, String> headers = new HashMap<>(); CreateResourceResponse resourceWithOptions = client.createResourceWithOptions(requestPath, createResourceRequest, headers, runtime); return resourceWithOptions; }Jika panggilan berhasil, statusCode=202 dikembalikan, yang menunjukkan bahwa tugas tersebut adalah operasi asinkron. Anda perlu menanyakan status tugas lebih lanjut. Untuk informasi lebih lanjut, lihat Tanyakan tugas. Untuk menanyakan, memperbarui, dan menghapus sumber daya, Anda harus mencatat resourceid. Badan respons adalah sebagai berikut:
Daftar sumber daya
Anda dapat memanggil operasi GetResources untuk mencantumkan semua sumber daya vSwitch. Kode sampel:
/** * Daftar sumber daya * @param regionId ID wilayah * @param productCode Kode produk, yang merupakan "VPC" dalam contoh ini. * @param resourceTypeCode Kode tipe sumber daya, yang merupakan "vSwitch" dalam contoh ini. * @param client Pengguna RAM (klien) * @return resourceWithOptions Respons. */ public GetResourcesResponse getResources(String regionId, String productCode, String resourceTypeCode, Client client) throws Exception { String requestPath = "/api/v1/providers/aliyun/products/" + productCode + "/resources/" + resourceTypeCode; GetResourcesRequest getResourcesRequest = new GetResourcesRequest() .setRegionId(regionId); com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); Map<String, String> headers = new HashMap<>(); GetResourcesResponse resourcesWithOptions = client.getResourcesWithOptions(requestPath, getResourcesRequest, headers, runtime); return resourcesWithOptions; }Jika panggilan berhasil, badan respons berikut dikembalikan:
Perbarui sumber daya
Anda dapat memanggil operasi UpdateResource untuk memperbarui sumber daya tertentu. Kode sampel:
PentingBerhati-hatilah saat Anda memperbarui sumber daya untuk mencegah operasi tidak sengaja memengaruhi sumber daya lain.
/** * Perbarui sumber daya * @param regionId ID wilayah * @param productCode Kode produk, yang merupakan "VPC" dalam contoh ini. * @param productCode Kode produk, yang merupakan "vSwitch" dalam contoh ini. * @param resourceId ID sumber daya. Parameter ini menentukan ID vSwitch yang dibuat dalam contoh ini. * @param client Pengguna RAM (klien) * @return resourceWithOptions Respons. */ public UpdateResourceResponse updateResource(String regionId, String productCode, String resourceTypeCode, String resourceId, Client client) throws Exception { String requestPath = "/api/v1/providers/Aliyun/products/" + productCode + "/resources/" + resourceTypeCode + "/" + resourceId; // Parameter respons. Map body = new HashMap(); body.put("Description", "Tes pembaruan"); UpdateResourceRequest updateResourceRequest = new UpdateResourceRequest() .setRegionId(regionId) .setBody(body); com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); Map<String, String> headers = new HashMap<>(); UpdateResourceResponse updateResourceResponse = client.updateResourceWithOptions(requestPath, updateResourceRequest, headers, runtime); return updateResourceResponse; }Kode respons statusCode=200 menunjukkan bahwa permintaan berhasil. Badan respons berikut dikembalikan: Anda dapat menanyakan detail sumber daya untuk memverifikasi apakah sumber daya telah diperbarui. Untuk informasi lebih lanjut, lihat Tanyakan sumber daya.
Tanyakan sumber daya
Anda dapat memanggil operasi GetResources untuk menanyakan sumber daya tertentu. Kode sampel:
/** * Tanyakan sumber daya * @param regionId ID wilayah * @param productCode Kode produk, yang merupakan "VPC" dalam contoh ini. * @param productCode Kode produk, yang merupakan "vSwitch" dalam contoh ini. * @param resourceId ID sumber daya. Parameter ini menentukan ID vSwitch yang dibuat dalam contoh ini. * @param client Pengguna RAM (klien) * @return resourceWithOptions Respons. */ public GetResourcesResponse getResources(String regionId, String productCode, String resourceTypeCode, String resourceId, Client client) throws Exception { String requestPath = "/api/v1/providers/aliyun/products/" + productCode + "/resources/" + resourceTypeCode + "/" + resourceId; Map<String, String> body = new HashMap<>(); GetResourcesRequest getResourcesRequest = new GetResourcesRequest() .setRegionId(regionId); com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); Map<String, String> headers = new HashMap<>(); GetResourcesResponse resourcesWithOptions = client.getResourcesWithOptions(requestPath, getResourcesRequest, headers, runtime); return resourcesWithOptions; }Jika permintaan berhasil, badan berikut dikembalikan:
Hapus sumber daya
Anda dapat memanggil operasi DeleteResource untuk menghapus sumber daya tertentu. Kode sampel:
PentingBerhati-hatilah saat Anda menghapus sumber daya untuk mencegah operasi tidak sengaja memengaruhi sumber daya lain.
/** * Hapus sumber daya * @param regionId ID wilayah * @param productCode Kode produk, yang merupakan "VPC" dalam contoh ini. * @param productCode Kode produk, yang merupakan "vSwitch" dalam contoh ini. * @param resourceId ID sumber daya. Parameter ini menentukan ID vSwitch yang dibuat dalam contoh ini. * @param client Pengguna RAM (klien) * @return deleteResourceResponse Respons. */ public DeleteResourceResponse deleteResource(String regionId, String productCode, String resourceTypeCode, String resourceId, Client client) throws Exception { String requestPath = "/api/v1/providers/Aliyun/products/" + productCode + "/resources/" + resourceTypeCode + "/" + resourceId; DeleteResourceRequest deleteResourceRequest = new DeleteResourceRequest() .setRegionId(regionId); com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); Map<String, String> headers = new HashMap<>(); DeleteResourceResponse deleteResourceResponse = client.deleteResourceWithOptions(requestPath, deleteResourceRequest, headers, runtime); return deleteResourceResponse; }Jika panggilan berhasil, statusCode=202 dikembalikan, yang menunjukkan bahwa tugas tersebut adalah operasi asinkron. Anda perlu menanyakan status tugas lebih lanjut. Untuk informasi lebih lanjut, lihat Tanyakan status tugas.
Tanyakan status tugas
Menanyakan status tugas tertentu.
Anda dapat memanggil operasi GetTask untuk menanyakan status tugas tertentu. Contoh pemanggilan adalah untuk menanyakan tugas di mana vSwitch sedang dibuat:
/** * Tanyakan tugas asinkron * @param taskId ID tugas * @param client Pengguna RAM (klien) * @return taskWithOptions Respons. */ public GetTaskResponse getTask(String taskId, Client client) throws Exception { com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); Map<String, String> headers = new HashMap<>(); GetTaskResponse taskWithOptions = client.getTaskWithOptions(taskId, headers, runtime); return taskWithOptions; }Jika permintaan berhasil, status="Succeeded" dalam badan respons dikembalikan, menunjukkan bahwa vSwitch telah dibuat.
Kode sampel lengkap
ContohDemo lengkap dalam tutorial ini adalah sebagai berikut: