このトピックでは、DescribeInstances
APIを呼び出してElastic Compute Service (ECS) インスタンスに関する詳細情報を照会する方法と、SDK V2.0 for Node.jsをインストールして使用する方法について説明します。
前提条件
最低限必要な権限を持つResource Access Management (RAM) ユーザーは、AccessKeyペアを使用してログオンします。 Alibaba Cloudアカウントには完全な権限があり、AccessKeyペアが侵害された場合に重大なセキュリティリスクとなるため、Alibaba Cloudアカウントの使用は推奨しません。 AccessKeyペアの作成の詳細については、「AccessKeyペアの作成」をご参照ください。
RAMユーザーはECSリソースの管理を許可されています。 この例では読み取り専用アクセスが必要で、AliyunECSReadonlyAccessシステムポリシーが使用されます。 ビジネス要件に応じて権限を許可します。
カスタムポリシーを作成します。
カスタムポリシーの作成に関するガイダンスについては、「カスタムポリシーの作成」と「RAM権限付与」をご参照ください。
ECSは、ベストプラクティスに基づいたカスタムポリシーテンプレートを提供します。 これらのポリシーテンプレートを参照して、ニーズに基づいてポリシーをすばやく確立します。 詳細については、「ECSのカスタムポリシー」をご参照ください。
システムポリシーを使用します。
ECSがサポートするシステムポリシーとその権限の詳細については、「ECSのシステムポリシー」をご参照ください。
AccessKeyペアは環境変数で設定されます。 詳細については、「Linux、macOS、およびWindowsでの環境変数の設定」をご参照ください。
SDK のインストール
SDK V2.0 For Node.jsのインストール手順については、 SDKセンターを使用します。 端末で次のコマンドを実行し、ECS SDKをインストールします。
npm install --save @alicloud/ecs20140526@4.3.0
を保存
SDKの使用
1. クライアントの初期化Initialize client
Alibaba Cloud SDKは、クライアントを初期化するために、AccessKeyペアやSTS (Security Token Service) トークンなどのさまざまなアクセス資格情報をサポートしています。 詳細については、「アクセス資格情報の管理」をご参照ください。 次の例では、AccessKeyペアを使用してクライアントを初期化します。
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({
// Required. Ensure the environment variable ALIBABA_CLOUD_ACCESS_KEY_ID is set in the runtime environment.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Required. Ensure the environment variable ALIBABA_CLOUD_ACCESS_KEY_SECRET is set in the runtime environment.
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
endpoint: `ecs-cn-hangzhou.aliyuncs.com`,
});
return new Ecs20140526(config);
}
}
JavaScript 例
const Ecs20140526 = require('@alicloud/ecs20140526');
const OpenApi = require('@alicloud/openapi-client');
class Client {
static createClient() {
const config = new OpenApi.Config({
// Required. Ensure the environment variable ALIBABA_CLOUD_ACCESS_KEY_ID is set in the runtime environment.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Required. Ensure the environment variable ALIBABA_CLOUD_ACCESS_KEY_SECRET is set in the runtime environment.
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
endpoint: `ecs-cn-hangzhou.aliyuncs.com`,
});
return new Ecs20140526.default(config);
}
}
2. 要求オブジェクトを作成する
リクエストオブジェクトを作成する前に、パラメーターの詳細についてはDescribeInstancesをご参照ください。
リクエストオブジェクトの名前は、{API name} request
形式である必要があります。 たとえば、DescribeInstances
のリクエストオブジェクトはDescribeInstancesRequest
です。
TypeScriptの例
// Construct the request object.
const describeInstancesRequest = new Ecs20140526.DescribeInstancesRequest({
regionId: "cn-hangzhou",
});
JavaScript 例
// Construct the request object.
const describeInstancesRequest = new Ecs20140526.DescribeInstancesRequest({
regionId: "cn-hangzhou",
});
3. 操作呼び出しの開始
クライアントを介してAPI操作を呼び出す場合、タイムアウトやプロキシ設定などのランタイムパラメーターを設定できます。 詳細は、「高度な設定」をご参照ください。
レスポンスオブジェクトの名前は、{API name} response
形式である必要があります。 たとえば、DescribeInstances
の応答オブジェクトはDescribeInstancesResponse
です。
TypeScriptの例
// Create the runtime configuration object.
const runtime = new $Util.RuntimeOptions();
// Initiate the request.
const describeInstancesResponse = await client.describeInstancesWithOptions(describeInstancesRequest, runtime);
JavaScript 例
// Create the runtime configuration object.
const runtime = new Util.RuntimeOptions();
// Initiate the request.
const describeInstancesResponse = await client.describeInstancesWithOptions(describeInstancesRequest, runtime);
4. 例外の処理
SDK for Node.jsは、非同期操作にPromise
とasync/await
を使用し、API呼び出し中に例外をキャッチおよび管理するためのエラー処理メカニズムを提供します。 API呼び出しが失敗すると、Alibaba Cloud SDKはErrorオブジェクトをスローします。 SDK for Node.jsは、例外をUnretryableErrorとResponseErrorに分類します。
UnretryableError: このタイプの例外は、ネットワークの問題が原因です。 再試行の最大回数に達すると、UnretryableErrorがスローされます。
ResponseError: このタイプの例外はビジネスエラーが原因です。
例外の報告、ログの記録、再試行などの操作を実行して、例外を適切に処理することを推奨します。 これにより、システムの堅牢性と安定性を確保できます。
5. サンプルコード
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({
// Required. Ensure the environment variable ALIBABA_CLOUD_ACCESS_KEY_ID is set in the runtime environment.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Required. Ensure the environment variable ALIBABA_CLOUD_ACCESS_KEY_SECRET is set in the runtime environment.
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();
// Construct the request object.
const describeInstancesRequest = new $Ecs20140526.DescribeInstancesRequest({
regionId: "cn-hangzhou",
});
// Create the runtime configuration object.
const runtime = new $Util.RuntimeOptions();
try {
// Initiate the request and capture the response.
const response = await client.describeInstancesWithOptions(describeInstancesRequest, runtime);
console.log('Describe Instances Response:', JSON.stringify(response.body));
} catch (error) {
// Handle exceptions with care in your project. Do not overlook them.
console.error('Error occurred:', error);
}
}
}
Client.main();
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({
// Required. Ensure the environment variable ALIBABA_CLOUD_ACCESS_KEY_ID is set in the runtime environment.
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// Required. Ensure the environment variable ALIBABA_CLOUD_ACCESS_KEY_SECRET is set in the runtime environment.
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();
// Construct the request object.
const describeInstancesRequest = new Ecs20140526.DescribeInstancesRequest({
regionId: "cn-hangzhou",
});
// Create the runtime configuration object.
const runtime = new Util.RuntimeOptions();
try {
// Initiate the request and capture the response.
const response = await client.describeInstancesWithOptions(describeInstancesRequest, runtime);
console.log('Describe Instances Response:', JSON.stringify(response.body));
} catch (error) {
// Handle exceptions with care in your project. Do not overlook them.
console.error('Error occurred:', error.message);
}
}
}
Client.main();
関連ドキュメント
ECS OpenAPI操作を呼び出す別の方法については、Generic呼び出しをご参照ください。
SDK V1.0の詳細については、「V1.0 Node.js SDK」をご参照ください。