すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:Node.jsにECS SDKを使用する

最終更新日:Oct 14, 2024

このトピックでは、DescribeInstances APIを呼び出してElastic Compute Service (ECS) インスタンスに関する詳細情報を照会する方法と、SDK V2.0 for Node.jsをインストールして使用する方法について説明します。

前提条件

  1. 最低限必要な権限を持つResource Access Management (RAM) ユーザーは、AccessKeyペアを使用してログオンします。 Alibaba Cloudアカウントには完全な権限があり、AccessKeyペアが侵害された場合に重大なセキュリティリスクとなるため、Alibaba Cloudアカウントの使用は推奨しません。 AccessKeyペアの作成の詳細については、「AccessKeyペアの作成」をご参照ください。

  2. RAMユーザーはECSリソースの管理を許可されています。 この例では読み取り専用アクセスが必要で、AliyunECSReadonlyAccessシステムポリシーが使用されます。 ビジネス要件に応じて権限を許可します。

    1. カスタムポリシーを作成します。

      カスタムポリシーの作成に関するガイダンスについては、「カスタムポリシーの作成」と「RAM権限付与」をご参照ください。

      ECSは、ベストプラクティスに基づいたカスタムポリシーテンプレートを提供します。 これらのポリシーテンプレートを参照して、ニーズに基づいてポリシーをすばやく確立します。 詳細については、「ECSのカスタムポリシー」をご参照ください。

    2. システムポリシーを使用します。

      ECSがサポートするシステムポリシーとその権限の詳細については、「ECSのシステムポリシー」をご参照ください。

  3. 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は、非同期操作にPromiseasync/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」をご参照ください。