使用 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 設定指南

雲端專案

Google Cloud Platform 主控台上建立專案並啟用計費功能。專案會將所有資源放在相同的命名空間下,且需要啟用計費功能才能在專案內建立任何執行個體。

Cloud SDK

Cloud SDK 包含能夠讓您在 Google Cloud Platform 上輕鬆建立並管理資源的工具和資料庫。請參閱 Cloud SDK 安裝操作說明,為平台取得 SDK。

安裝 SDK 後,驗證並設定預設專案:

$ gcloud init

開始使用適用於 Node.js 的 Google Cloud 用戶端程式庫

推薦使用 @google-cloud/compute 程式庫做為存取 Google Cloud 服務並與之互動的慣用方法。請盡可能使用 Google Cloud 用戶端程式庫而非 Google API 用戶端程式庫。如要安裝適用 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-nodejs-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 說明文件