API 呼び出しを容易にするために、プロジェクトに Alibaba Cloud SDK を統合することをお勧めします。SDK は開発プロセスを簡素化し、機能を迅速に統合し、O&M コストを大幅に削減します。このトピックでは、プロジェクトに Node.js 向け Alibaba Cloud SDK V1.0 を統合し、SDK を使用して開発する方法について説明します。
前提条件
Node.js 8.x 以降がインストールされている。
SDK をインストールする
Node.js 向け Alibaba Cloud SDK V1.0 は、CommonRequest を使用する汎用呼び出しのみをサポートしています。呼び出しメソッドは API 呼び出しプロセスを簡素化し、@alicloud/pop-core 依存関係を統合することで実装できます。次のコマンドを実行して、SDK の依存関係をインストールできます。
npm install @alicloud/pop-coreSDK を使用する
Node.js 向け Alibaba Cloud SDK V1.0 を使用して、リモートプロシージャコール ( RPC ) またはリソース指向アーキテクチャ ( ROA ) スタイルで API 操作を呼び出すことができます。RPC スタイルの API 操作と ROA スタイルの API 操作を呼び出す手順は異なります。このセクションでは、手順について説明します。次の例では、Elastic Compute Service ( ECS ) の RPC スタイルのDescribeInstances API 操作が呼び出され、Container Service for Kubernetes ( ACK ) の ROA スタイルのDescribeClustersV1 API 操作が呼び出されます。
1. リクエストクライアントを初期化する
すべての API 操作は、@alicloud/pop-core SDK ライブラリによって提供される RPC クライアントまたは ROA クライアントを使用して呼び出されます。API 操作を呼び出す前に、リクエストクライアントを初期化する必要があります。この例では、AccessKey ペアを使用してリクエストクライアントを初期化します。他のクライアント初期化方法の詳細については、「STS トークンを使用して SDK クライアントを初期化する」をご参照ください。
この例では、AccessKey ペアは ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数から取得されます。これらの環境変数は、コードを実行する前に設定する必要があります。詳細については、「Linux、macOS、および Windows で環境変数を設定する」をご参照ください。
RPC クライアント
// RPC クライアントを初期化する方法。
const Core = require('@alicloud/pop-core');
var client = new Core({
// 必須。コードランタイム環境で ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// 必須。コードランタイム環境で次の環境変数が設定されていることを確認してください: ALIBABA_CLOUD_ACCESS_KEY_SECRET。
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
// http(s)://クラウドサービスエンドポイントの形式のドメイン名。HTTPS を使用することをお勧めします。たとえば、ECS のエンドポイントは http://ecs-cn-hangzhou.aliyuncs.com です。
endpoint: 'https://ecs.cn-hangzhou.aliyuncs.com',
// クラウドサービス API のバージョン。例として、ECS API のバージョン番号は 2014-05-26 です。
apiVersion: '2014-05-26'
});ROA クライアント
// ROA クライアントを初期化する方法。
var ROAClient = require('@alicloud/pop-core').ROAClient;
var client = new ROAClient({
// 必須。コードランタイム環境で ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
accessKeyId: process.env['ALIBABA_CLOUD_ACCESS_KEY_ID'],
// 必須。コードランタイム環境で次の環境変数が設定されていることを確認してください: ALIBABA_CLOUD_ACCESS_KEY_SECRET。
accessKeySecret: process.env['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
// http(s)://クラウドサービスエンドポイントの形式のドメイン名。HTTPS を使用することをお勧めします。たとえば、ECS のエンドポイントは http://cs.cn-chengdu.aliyuncs.com です。
endpoint: 'https://cs.cn-chengdu.aliyuncs.com',
// クラウドサービス API のバージョン。例として、ECS API のバージョン番号は 2014-05-26 です。
apiVersion: '2015-12-15'
});2. 必要なリクエストパラメーターを構築する
API 操作、リクエストパラメーターオブジェクト、およびランタイムパラメーターオブジェクトを指定する必要があります。
Alibaba Cloud SDK V1.0 はローカルファイルのアップロードをサポートしていません。ローカルファイルをアップロードする必要がある場合は、Alibaba Cloud SDK V2.0 を使用してください。
RPC スタイルの API 操作を呼び出すためのパラメーター
// API 操作の名前。
var action = 'DescribeInstances'
// リクエストパラメーター。
var params = {
"RegionId": "cn-hangzhou",
"InstanceIds": "[\"i-bp67************\", \"i-7xva************\", … \"i-7xvc************\"]"
}
// ランタイムパラメーター。
var requestOption = {
method: 'POST',
formatParams: false,
};ROA スタイルの API 操作を呼び出すためのパラメーター
// リクエストメソッド。
const method = "GET"
// URI パラメーター。
const uriPattern = '/api/v1/clusters';
// クエリパラメーター。
var queryParams = {
"cluster_type": "Kubernetes",
"name": "cluster-demo"
};
// リクエスト本文。JSON 文字列です。例: `{"nodepool_info":{"name":"nodepool-test","type":"ess"}}`;
const body = "";
// カスタムリクエストヘッダー。
const headers = {
"Content-Type": "application/json"
};
// ランタイムパラメーター。
const options = {
timeout: 3000, // デフォルト 3000 ms
};3. API リクエストを開始する
手順 1 で作成したクライアントを使用して、request 操作を呼び出し、リクエストを開始します。この操作は、手順 2 で構築されたパラメーターを使用します。
RPC スタイルの API 操作を呼び出す
// リクエストを開始します。
client.request(action, params, requestOption).then((result) => {
console.log(JSON.stringify(result));
}, (ex) => {
console.log(ex);
})ROA スタイルの API 操作を呼び出す
// リクエストを開始します。
roaClient.request(method, uriPattern, queryParams, body, headers, options)
.then((response) => {
console.log('ROA Response:', response);
})
.catch((error) => {
console.error('ROA Error:', error);
});4. エラーを処理する
API 操作から返された HTTP ステータスコードまたはレスポンスメッセージが 200、OK、Success、または success でない場合、エラーがスローされます。Alibaba Cloud SDK はカスタム HTTP ステータスコードをサポートしています。プログラムのエラー処理方法を定義できます。詳細については、「例外を処理する」をご参照ください。
関連情報
RPC および ROA スタイルの詳細については、「API スタイル」をご参照ください。
プロキシ設定やタイムアウト設定などの SDK の詳細設定については、「詳細設定」をご参照ください。
AccessKey ペアの作成方法については、「AccessKey ペアを作成する」をご参照ください。