Node.js-Clientbibliotheken verwenden

In diesem Dokument wird erläutert, wie Sie die Node.js-Clientbibliotheken der Google Cloud Platform verwenden, damit Compute Engine Anfragen autorisieren kann, und sich VM-Instanzen von Compute Engine auflisten lassen. Dieses Beispiel beschreibt außerdem die Verwendung der Bibliotheken gcloud-node und google-api-nodejs-client für den Zugriff auf Compute Engine-Ressourcen von außerhalb und innerhalb einer VM-Instanz. In diesem Dokument geht es nicht um die Erstellung und Ausführung von Anwendungen innerhalb einer VM-Instanz.

Eine vollständige Liste verfügbarer Clientbibliotheken, einschließlich weiterer Google-Clientbibliotheken und Open-Source-Bibliotheken von Drittanbietern, finden Sie auf der Seite "Clientbibliotheken".

Voraussetzungen

Bereiten Sie zuerst die Entwicklungsumgebung für Node.js vor.

Einrichtungsleitfaden für Node.js aufrufen

Cloud-Projekt

Erstellen Sie ein Projekt in der Google Cloud Console und aktivieren Sie die Abrechnung. Das Projekt enthält Ihre gesamten Ressourcen unter einem einzelnen Namespace. Die Abrechnung ist erforderlich, um in Ihrem Projekt Instanzen erstellen zu können.

Cloud SDK

Das Cloud SDK enthält Tools und Bibliotheken, mit denen Ressourcen problemlos auf der Google Cloud Platform erstellt und verwaltet werden können. Informationen dazu, wie Sie das SDK für Ihre Plattform erhalten, finden Sie in der Cloud SDK-Installationsanleitung.

Nach der Installation des SDK authentifizieren und bestimmen Sie Ihr Standardprojekt:

$ gcloud init

Erste Schritte mit der Google Cloud-Clientbibliothek für Node.js

Die Bibliothek @google-cloud/compute ist die empfohlene Methode, um auf Google Cloud-Dienste zuzugreifen und mit diesen zu interagieren. Verwenden Sie wenn möglich die Google Cloud-Clientbibliothek anstelle der Google API-Clientbibliothek. Installieren Sie die Google Cloud-Clientbibliothek für die Compute Engine API mit dem folgenden Befehl:

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

Zweck dieser Übung ist es, zu veranschaulichen, wie Anfragen autorisiert werden und wie eine einfache operative Aufgabe mit der Google Cloud-Clientbibliothek für Node.js ausgeführt wird.

Anfragen autorisieren

In diesem Beispiel wird die OAuth 2.0-Autorisierung verwendet. Es gibt viele Möglichkeiten, Anfragen mit OAuth 2.0 zu autorisieren, aber für dieses Beispiel verwenden Sie die Standardanmeldedaten für Anwendungen. So können Sie die Anmeldedaten aus dem gcloud-Tool wiederverwenden. Dieses Tool muss im Abschnitt Voraussetzungen installiert und autorisiert worden sein.

// 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 initialisieren

Bevor Sie Anfragen senden können, müssen Sie zuerst eine Instanz des Compute Engine-Dienstes initialisieren:

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

Instanzen auflisten

Nachdem Sie nun über eine autorisierte Instanz verfügen, können Sie den Client nutzen, um Anfragen an die Compute Engine API zu senden.

Rufen Sie zur Auflistung der Instanzen in Ihrem Projekt compute.getVMs() auf.


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;
}

Das vollständige Beispiel:

'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;
}

Erste Schritte mit der Google API-Clientbibliothek für Node.js

Die Bibliothek google-api-nodejs-client enthält die Kernbibliothek Node.js für den Zugriff auf Google-APIs und außerdem die OAuth 2.0-Clientbibliothek. Diese Bibliothek ist ein Low-Level-Wrapper für Google REST APIs. Eine idiomatischere Art, auf Google Cloud Platform APIs zuzugreifen, bietet die Bibliothek gcloud-node. Die typische Installation erfolgt einfach mit:

$ npm install --save googleapis

Zweck dieser Übung ist es, zu veranschaulichen, wie Anfragen autorisiert werden und wie eine einfache operative Aufgabe mit der Google API-Clientbibliothek für Node.js ausgeführt wird.

Anfragen autorisieren

In diesem Beispiel wird die OAuth 2.0-Autorisierung verwendet. Es gibt verschiedene Möglichkeiten, Anfragen mit OAuth 2.0 zu autorisieren. In diesem Beispiel werden jedoch die Standardanmeldedaten für Anwendungen verwendet. So können Sie die Anmeldedaten aus dem gcloud-Tool wiederverwenden. Dieses Tool muss im Abschnitt Voraussetzungen installiert und autorisiert worden sein.

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 initialisieren

Bevor Sie Anfragen senden können, müssen Sie zuerst eine Instanz des Compute Engine-Dienstes initialisieren:

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

Instanzen auflisten

Nachdem Sie nun über eine autorisierte Instanz verfügen, können Sie den Client nutzen, um Anfragen an die Compute Engine API zu senden.

Rufen Sie zur Auflistung der Instanzen in Ihrem Projekt compute.getVMs() auf.

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

Das vollständige Beispiel:

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);
}