Topik ini menjelaskan cara menginstal Elastic Compute Service (ECS) SDK V2.0 untuk Node.js dan memberikan contoh penggunaannya untuk memanggil operasi API ECS. Dalam contoh ini, operasi DescribeInstances digunakan untuk menanyakan informasi tentang Instance ECS.
Prasyarat
Pengguna Resource Access Management (RAM) dengan izin minimum harus masuk menggunakan pasangan AccessKey-nya. Hindari menggunakan akun Alibaba Cloud karena memiliki izin penuh yang dapat menjadi risiko keamanan signifikan jika terganggu. Untuk panduan membuat pasangan AccessKey, lihat Buat pasangan AccessKey.
Pengguna RAM harus diizinkan mengelola sumber daya ECS. Contoh ini memerlukan akses baca-saja, dan kebijakan sistem AliyunECSReadonlyAccess digunakan. Sesuaikan izin berdasarkan 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 sesuai kebutuhan. Untuk detail lebih lanjut, lihat Kebijakan Kustom.
Gunakan kebijakan sistem.
Untuk informasi lebih lanjut tentang kebijakan sistem yang didukung oleh ECS dan izin mereka, lihat Kebijakan Sistem untuk ECS.
Pasangan AccessKey harus dikonfigurasi dalam variabel lingkungan. Untuk panduan konfigurasi, lihat Konfigurasikan variabel lingkungan di Linux, macOS, dan Windows.
Instalasi SDK
Untuk petunjuk instalasi SDK V2.0 untuk Node.js, kunjungi Pusat SDK. Jalankan perintah berikut di terminal untuk menginstal SDK ECS:
npm install --save @alicloud/ecs20140526@4.3.0Gunakan SDK
1. Inisialisasi klien
Alibaba Cloud SDK mendukung berbagai kredensial akses, seperti pasangan AccessKey dan Token Layanan Keamanan (STS), untuk menginisialisasi klien. Untuk detail lebih lanjut, lihat Kelola kredensial akses. Contoh berikut menginisialisasi klien menggunakan pasangan 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({
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID disetel dalam lingkungan runtime.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET disetel dalam lingkungan runtime.
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({
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID disetel dalam lingkungan runtime.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET disetel dalam lingkungan runtime.
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
endpoint: `ecs-cn-hangzhou.aliyuncs.com`,
});
return new Ecs20140526.default(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.
Contoh TypeScript
// Bangun objek permintaan.
const describeInstancesRequest = new Ecs20140526.DescribeInstancesRequest({
regionId: "cn-hangzhou",
});Contoh JavaScript
// Bangun objek permintaan.
const describeInstancesRequest = new Ecs20140526.DescribeInstancesRequest({
regionId: "cn-hangzhou",
});3. Lakukan panggilan
Saat memanggil operasi API melalui klien, Anda dapat mengonfigurasi parameter runtime 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.
Contoh TypeScript
// Buat objek konfigurasi runtime.
const runtime = new $Util.RuntimeOptions();
// Lakukan permintaan.
const describeInstancesResponse = await client.describeInstancesWithOptions(describeInstancesRequest, runtime);Contoh JavaScript
// Buat objek konfigurasi runtime.
const runtime = new Util.RuntimeOptions();
// Lakukan permintaan.
const describeInstancesResponse = await client.describeInstancesWithOptions(describeInstancesRequest, runtime);4. Tangani Pengecualian
SDK untuk Node.js menggunakan Promise dan async/await untuk operasi asinkron serta menyediakan mekanisme penanganan kesalahan untuk menangkap dan mengelola pengecualian selama pemanggilan API. Saat pemanggilan API gagal, Alibaba Cloud SDK melempar objek Error. SDK untuk Node.js mengategorikan pengecualian menjadi UnretryableError dan ResponseError.
UnretryableError: Jenis pengecualian ini disebabkan oleh masalah jaringan. Ketika jumlah maksimum percobaan ulang tercapai, UnretryableError dilemparkan.
ResponseError: Jenis pengecualian ini disebabkan oleh kesalahan bisnis.
Kami merekomendasikan agar Anda menangani pengecualian dengan benar melalui operasi seperti pelaporan pengecualian, pencatatan log, dan percobaan ulang. Ini membantu memastikan ketangguhan dan stabilitas sistem Anda.
5. Contoh kode
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({
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID disetel dalam lingkungan runtime.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET disetel dalam lingkungan runtime.
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();
// Bangun objek permintaan.
const describeInstancesRequest = new $Ecs20140526.DescribeInstancesRequest({
regionId: "cn-hangzhou",
});
// Buat objek konfigurasi runtime.
const runtime = new $Util.RuntimeOptions();
try {
// Lakukan permintaan dan tangkap respons.
const response = await client.describeInstancesWithOptions(describeInstancesRequest, runtime);
console.log('Respons Deskripsi Instance:', JSON.stringify(response.body));
} catch (error) {
// Tangani pengecualian dengan hati-hati di proyek Anda. Jangan abaikan mereka.
console.error('Terjadi kesalahan:', 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({
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID disetel dalam lingkungan runtime.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET disetel dalam lingkungan runtime.
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();
// Bangun objek permintaan.
const describeInstancesRequest = new Ecs20140526.DescribeInstancesRequest({
regionId: "cn-hangzhou",
});
// Buat objek konfigurasi runtime.
const runtime = new Util.RuntimeOptions();
try {
// Lakukan permintaan dan tangkap respons.
const response = await client.describeInstancesWithOptions(describeInstancesRequest, runtime);
console.log('Respons Deskripsi Instance:', JSON.stringify(response.body));
} catch (error) {
// Tangani pengecualian dengan hati-hati di proyek Anda. Jangan abaikan mereka.
console.error('Terjadi kesalahan:', error.message);
}
}
}
Client.main();Referensi
Untuk metode alternatif memanggil operasi ECS OpenAPI, lihat Panggilan generik.
Untuk informasi tentang SDK V1.0, lihat V1.0 Node.js SDK.