Topik ini menjelaskan cara menginstal dan menggunakan kit pengembangan perangkat lunak (SDK) Node.js V2.0 serta memberikan contoh penggunaan operasi API DescribeInstances untuk mengkueri detail satu atau beberapa instans Elastic Compute Service (ECS).
Prasyarat
Pengguna Resource Access Management (RAM) yang telah masuk dengan pasangan AccessKey-nya dan memiliki izin minimum yang diperlukan. Penggunaan Akun Alibaba Cloud tidak disarankan karena memiliki izin penuh, sehingga pasangan AccessKey-nya menimbulkan risiko keamanan signifikan jika dikompromikan. Untuk informasi lebih lanjut tentang pembuatan pasangan AccessKey, lihat Create an AccessKey pair.
Pengguna RAM telah diotorisasi untuk mengelola resource ECS. Contoh ini memerlukan akses read-only, dan kebijakan sistem AliyunECSReadonlyAccess digunakan. Otorisasi izin sesuai dengan kebutuhan bisnis Anda.
Buat kebijakan kustom.
Untuk panduan membuat kebijakan kustom, lihat Create custom policies dan RAM authorization.
ECS menyediakan templat kebijakan kustom berdasarkan praktik terbaik. Rujuk templat kebijakan tersebut untuk segera membuat kebijakan sesuai kebutuhan Anda. Untuk informasi selengkapnya, lihat Custom policies.
Gunakan kebijakan sistem.
Untuk informasi selengkapnya tentang kebijakan sistem yang didukung ECS beserta izinnya, lihat System policies for ECS.
Pasangan AccessKey telah dikonfigurasi dalam variabel lingkungan. Untuk informasi selengkapnya, lihat Configure environment variables in Linux, macOS, and Windows.
Instal SDK
Anda dapat menginstal SDK Node.js V2.0 dari SDK Center. Atau, salin perintah berikut dan jalankannya di terminal untuk menginstal SDK ECS:
npm install --save @alicloud/ecs20140526@4.3.0
Gunakan SDK
1. Inisialisasi client
SDK Alibaba Cloud mendukung berbagai jenis kredensial akses untuk menginisialisasi client, seperti AccessKey dan token Security Token Service (STS). Untuk informasi selengkapnya tentang metode lainnya, lihat Manage access credentials. Contoh ini menunjukkan cara menginisialisasi client menggunakan AccessKey.
Contoh TypeScript
import Ecs20140526, * as $Ecs20140526 from '@alicloud/ecs20140526';
import OpenApi, * as $OpenApi from '@alicloud/openapi-client';
export class Client {
static createClient() {
let config = new $OpenApi.Config({
// Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah disetel.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
endpoint: `ecs.cn-hangzhou.aliyuncs.com`,
});
return new Ecs20140526(config);
}
}Contoh JavaScript
const Ecs20140526 = require('@alicloud/ecs20140526');
const OpenApi = require('@alicloud/openapi-client');
class Client {
static createClient() {
const config = new OpenApi.Config({
// Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah disetel.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
endpoint: `ecs.cn-hangzhou.aliyuncs.com`,
});
return new Ecs20140526.default(config);
}
}2. Buat objek permintaan untuk operasi API
Sebelum membuat objek permintaan, rujuk dokumentasi API untuk operasi tersebut guna memperoleh informasi mengenai parameternya.
Konvensi penamaan untuk objek permintaan adalah {NamaAPI}Request. Misalnya, objek permintaan untuk operasi DescribeInstances adalah DescribeInstancesRequest.
Contoh TypeScript
// Buat objek permintaan.
const describeInstancesRequest = new Ecs20140526.DescribeInstancesRequest({
regionId: "cn-hangzhou",
});
Contoh JavaScript
// Buat objek permintaan.
const describeInstancesRequest = new Ecs20140526.DescribeInstancesRequest({
regionId: "cn-hangzhou",
});
3. Lakukan pemanggilan
Saat memanggil operasi OpenAPI dari client, Anda dapat mengatur parameter waktu proses, seperti timeout dan konfigurasi proxy. Untuk informasi selengkapnya, lihat Advanced configurations.
Konvensi penamaan untuk objek respons adalah {NamaAPI}Response. Misalnya, objek respons untuk operasi DescribeInstances adalah DescribeInstancesResponse.
Contoh TypeScript
// Buat objek konfigurasi waktu proses.
const runtime = new $Util.RuntimeOptions();
// Lakukan permintaan.
const describeInstancesResponse = await client.describeInstancesWithOptions(describeInstancesRequest, runtime);
Contoh JavaScript
// Buat objek konfigurasi waktu proses.
const runtime = new Util.RuntimeOptions();
// Lakukan permintaan.
const describeInstancesResponse = await client.describeInstancesWithOptions(describeInstancesRequest, runtime);
4. Tangani exception
SDK Node.js menggunakan Promise dan async/await untuk menangani operasi asinkron. SDK juga menyediakan mekanisme penanganan error untuk membantu developer menangkap dan menangani potensi error dalam pemanggilan API. Saat pemanggilan API gagal, SDK Alibaba Cloud melemparkan objek Error. SDK mengklasifikasikan exception menjadi UnretryableError dan ResponseError.
UnretryableError: Error ini biasanya disebabkan oleh masalah jaringan dan dilemparkan setelah jumlah maksimum percobaan ulang tercapai.
ResponseError: Exception yang terkait dengan bisnis.
Anda harus menerapkan langkah-langkah penanganan exception yang tepat, seperti meneruskan exception, mencatat log, dan mencoba pemulihan. Praktik ini memastikan ketangguhan dan stabilitas sistem Anda.
5. Contoh lengkap
Contoh TypeScript
import * as $Util from '@alicloud/tea-util';
import Ecs20140526, * as $Ecs20140526 from '@alicloud/ecs20140526';
import * as $OpenApi from '@alicloud/openapi-client';
export class Client {
static createClient() {
let config = new $OpenApi.Config({
// Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah disetel.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
endpoint: `ecs.cn-hangzhou.aliyuncs.com`,
});
return new Ecs20140526(config);
}
static async main(): Promise<void> {
const client = Client.createClient();
// Buat objek permintaan.
const describeInstancesRequest = new $Ecs20140526.DescribeInstancesRequest({
regionId: "cn-hangzhou",
});
// Buat objek konfigurasi waktu proses.
const runtime = new $Util.RuntimeOptions();
try {
// Lakukan permintaan dan dapatkan respons.
const response = await client.describeInstancesWithOptions(describeInstancesRequest, runtime);
console.log('Describe Instances Response:', JSON.stringify(response.body));
} catch (error) {
// Error hanya dicetak untuk tujuan demonstrasi. Tangani exception dengan hati-hati. Jangan abaikan exception dalam proyek Anda.
console.error('Error occurred:', error);
}
}
}
Client.main();
Contoh JavaScript
const Ecs20140526 = require('@alicloud/ecs20140526');
const OpenApi = require('@alicloud/openapi-client');
const Util = require('@alicloud/tea-util');
class Client {
static createClient() {
const config = new OpenApi.Config({
// Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID telah disetel.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Wajib. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah disetel.
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
endpoint: `ecs.cn-hangzhou.aliyuncs.com`,
});
return new Ecs20140526.default(config);
}
static async main() {
const client = Client.createClient();
// Buat objek permintaan.
const describeInstancesRequest = new Ecs20140526.DescribeInstancesRequest({
regionId: "cn-hangzhou",
});
// Buat objek konfigurasi waktu proses.
const runtime = new Util.RuntimeOptions();
try {
// Lakukan permintaan dan dapatkan respons.
const response = await client.describeInstancesWithOptions(describeInstancesRequest, runtime);
console.log('Describe Instances Response:', JSON.stringify(response.body));
} catch (error) {
// Error hanya dicetak untuk tujuan demonstrasi. Tangani exception dengan hati-hati. Jangan abaikan exception dalam proyek Anda.
// Pesan error
console.log('Error occurred:', error.message);
}
}
}
Client.main();Informasi lebih lanjut
Selain metode di atas, Anda juga dapat menggunakan pemanggilan umum untuk memanggil operasi OpenAPI ECS. Untuk informasi selengkapnya, lihat Generalized calls.
Untuk informasi selengkapnya tentang SDK V1.0, lihat V1.0 Node.js SDK.