Node.js クライアント ライブラリの使用

このドキュメントでは、Google Compute Engine の Google Cloud Platform Node.js クライアント ライブラリを使用して、リクエストを承認する方法と Compute Engine 仮想マシン インスタンスの一覧を取得する方法について説明します。また、gcloud-node と google-api-nodejs-client の各ライブラリを使用して、仮想マシン インスタンスの内部と外部の両方から Compute Engine リソースにアクセスするサンプルも示します。このドキュメントでは、仮想マシン インスタンスの内部でアプリケーションを作成、実行する方法については説明していません。

他の Google クライアント ライブラリやサードパーティのオープンソース ライブラリを含む使用可能なすべてのクライアント ライブラリについては、クライアント ライブラリのページをご覧ください。

事前準備

最初に Node.js 開発用に環境を準備します。

Node.js 設定ガイドに移動

Cloud プロジェクト

Google Cloud Platform Console でプロジェクトを作成し、課金を有効化します。このプロジェクトには、すべてのリソースが単一の名前空間に基づいて含まれます。また、課金は、プロジェクトでインスタンスを作成するために必要となります。

Cloud SDK

Cloud SDK には、Google Cloud Platform でのリソースの作成や管理を容易にするツールとライブラリが含まれています。お使いのプラットフォーム用の SDK を入手する方法については、Cloud SDK のインストール手順をご覧ください。

SDK のインストール後、デフォルト プロジェクトを認証して設定します。

$ gcloud init

Node.js 用の Google Cloud クライアント ライブラリを使う

@google-cloud/compute ライブラリは、Google Cloud サービスにアクセスして操作するための、推奨される慣用的方法です。可能な限り、Google API クライアント ライブラリではなく、Google Cloud クライアント ライブラリを使用してください。Compute Engine API の Google Cloud クライアント ライブラリをインストールするには、次のコマンドを実行します。

$ npm install --save @google-cloud/compute

この演習の目的は、リクエストを承認する方法、および Google Cloud Node.js クライアント ライブラリで基本的な操作タスクを実行する方法を説明することです。

リクエストを承認する

このサンプルでは、OAuth 2.0 認証を使用します。OAuth 2.0 を使用してリクエストを承認する方法は多数ありますが、この例では、アプリケーションのデフォルト認証情報を使用します。この方法では、gcloud ツールから認証情報を再利用できます。事前準備セクションで、このツールをインストールして承認しておく必要があります。

// By default, the client will authenticate using the service account file
// specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use
// the project specified by the GCLOUD_PROJECT environment variable. See
// https://cloud.google.com/docs/authentication/production#providing_credentials_to_your_application
const Compute = require('@google-cloud/compute');

API を初期化する

リクエストを行う前に、まず Google Compute Engine サービスのインスタンスを初期化する必要があります。

// Creates a client
const compute = new Compute();

インスタンスの一覧を取得する

承認されたインスタンスがあるので、クライアントを使用して Google Compute Engine API を呼び出すことができます。

プロジェクト内のインスタンスの一覧を取得するには、compute.getVMs() を呼び出します。


async function getVmsExample() {
  // In this example we only want one VM per page
  const options = {
    maxResults: 1,
  };
  const vms = await compute.getVMs(options);
  return vms;
}

全体の例を次に示します。

'use strict';

// By default, the client will authenticate using the service account file
// specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use
// the project specified by the GCLOUD_PROJECT environment variable. See
// https://cloud.google.com/docs/authentication/production#providing_credentials_to_your_application
const Compute = require('@google-cloud/compute');

// Creates a client
const compute = new Compute();

async function getVmsExample() {
  // In this example we only want one VM per page
  const options = {
    maxResults: 1,
  };
  const vms = await compute.getVMs(options);
  return vms;
}

Node.js 用の Google API クライアント ライブラリを使う

google-api-python-client ライブラリには、Google API にアクセスするためのコア Node.js ライブラリが含まれており、OAuth 2.0 クライアント ライブラリも含まれています。このライブラリは Google REST API の低レベルラッパーであり、より慣用的な方法で Google Cloud Platform API にアクセスするには gcloud-node ライブラリを使用します。一般的なインストールは、次のように簡単なコマンドです。

$ npm install --save googleapis

ここでは、Google API Node.js クライアント ライブラリの使用方法として、リクエストを承認する方法と基本的な運用タスクを実行する方法を示します。

リクエストを承認する

このサンプルでは、OAuth 2.0 認証を使用します。OAuth 2.0 を使用してリクエストを承認する方法は多数ありますが、この例では、アプリケーションのデフォルト認証情報を使用します。この方法では、gcloud ツールから認証情報を再利用できます。事前準備セクションで、このツールをインストールして承認しておく必要があります。

const authClient = await google.auth.getClient({
  scopes: [
    'https://www.googleapis.com/auth/cloud-platform',
    'https://www.googleapis.com/auth/compute',
    'https://www.googleapis.com/auth/compute.readonly',
  ],
});

API を初期化する

リクエストを行う前に、まず Google Compute Engine サービスのインスタンスを初期化する必要があります。

const {google} = require('googleapis');
const compute = google.compute('v1');

インスタンスの一覧を取得する

クライアント インスタンスの承認が完了すると、クライアントから Google Compute Engine API の呼び出しが可能になります。

プロジェクト内のインスタンスの一覧を取得するには、compute.getVMs() を呼び出します。

const projectId = await google.auth.getProjectId();
const result = await compute.instances.aggregatedList({
  auth: authClient,
  project: projectId,
});
const vms = result.data;
console.log('VMs:', vms);

全体の例を次に示します。

const {google} = require('googleapis');
const compute = google.compute('v1');

async function listVMs() {
  const authClient = await google.auth.getClient({
    scopes: [
      'https://www.googleapis.com/auth/cloud-platform',
      'https://www.googleapis.com/auth/compute',
      'https://www.googleapis.com/auth/compute.readonly',
    ],
  });

  const projectId = await google.auth.getProjectId();
  const result = await compute.instances.aggregatedList({
    auth: authClient,
    project: projectId,
  });
  const vms = result.data;
  console.log('VMs:', vms);
}
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント