使用 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 上创建和管理资源。请参阅 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 文档