HTTP-Cloud Functions-Funktion mit Node.js erstellen und bereitstellen

HTTP-Cloud Functions-Funktion mit Node.js erstellen und bereitstellen

In diesem Dokument wird beschrieben, wie Sie eine einfache Cloud Functions-HTTP-Funktion erstellen. Dies ist eine der beiden Arten von Cloud Functions-Funktionen:

  • Eine HTTP-Funktion, die Sie über Standard-HTTP-Anfragen aufrufen.
  • Eine ereignisgesteuerte Funktion, die durch Ereignisse in Ihrer Cloud-Infrastruktur ausgelöst wird, z. B. Nachrichten in einem Pub/Sub-Thema oder Änderungen in einem Cloud Storage-Bucket.

Weitere Informationen finden Sie unter HTTP-Funktionen schreiben und Ereignisgesteuerte Funktionen schreiben.

Hinweise

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Cloud Functions, Cloud Build, Artifact Registry, Cloud Run und Cloud Logging APIs aktivieren.

    Aktivieren Sie die APIs

  5. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  6. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  7. Cloud Functions, Cloud Build, Artifact Registry, Cloud Run und Cloud Logging APIs aktivieren.

    Aktivieren Sie die APIs

  8. Installieren und initialisieren Sie die gcloud CLI.
  9. Aktualisieren und installieren Sie gcloud-Komponenten.
    gcloud components update
  10. Bereiten Sie die Entwicklungsumgebung vor.

    Einrichtungsleitfaden für Node.js aufrufen

Funktion erstellen

  1. Erstellen Sie in Ihrem lokalen System ein Verzeichnis für den Funktionscode:

    Linux oder MacOS X

    mkdir ~/helloworld
    cd ~/helloworld
    

    Windows

    mkdir %HOMEPATH%\helloworld
    cd %HOMEPATH%\helloworld
    
  2. Erstellen Sie eine index.js-Datei im Verzeichnis helloworld mit folgendem Inhalt:

    const functions = require('@google-cloud/functions-framework');
    
    // Register an HTTP function with the Functions Framework that will be executed
    // when you make an HTTP request to the deployed function's endpoint.
    functions.http('helloGET', (req, res) => {
      res.send('Hello World!');
    });

    Diese Beispielfunktion gibt bei allen Anfragen ein freundliches "Hello World" zurück.

Abhängigkeiten angeben

Abhängigkeiten in Node.js werden mit npm verwaltet und in einer Metadatendatei mit dem Namen package.json ausgedrückt. Sie können diese Datei manuell oder mit dem Befehl npm erstellen.

  • So erstellen Sie die Datei package.json mit dem Befehl npm:

    1. Führen Sie den Befehl npm init aus dem Verzeichnis „helloworld“ aus. Drücken Sie Enter, um die Standardantwort auf die zugehörigen Fragen zu akzeptieren.

      npm init
      
    2. Bearbeiten Sie die Datei package.json, um eine Functions-Framework-Abhängigkeit hinzuzufügen:

      "dependencies": {
        "@google-cloud/functions-framework": "^3.1.0"
      }
      
  • Wenn Sie die Datei package.json manuell erstellen möchten, kopieren Sie den folgenden Inhalt hinein:

{
  "name": "nodejs-docs-samples-functions-hello-world-get",
  "version": "0.0.1",
  "private": true,
  "license": "Apache-2.0",
  "author": "Google Inc.",
  "repository": {
    "type": "git",
    "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git"
  },
  "engines": {
    "node": ">=16.0.0"
  },
  "scripts": {
    "test": "c8 mocha -p -j 2 test/*.test.js --timeout=6000 --exit"
  },
  "dependencies": {
    "@google-cloud/functions-framework": "^3.1.0"
  },
  "devDependencies": {
    "c8": "^8.0.0",
    "gaxios": "^6.0.0",
    "mocha": "^10.0.0",
    "wait-port": "^1.0.4"
  }
}

Viele Node.js-Clientbibliotheken stehen für die Verwendung mit Google Cloud-Produkten zur Verfügung und können als Abhängigkeiten installiert werden.

Funktion lokal erstellen und testen

Wenn Sie Ihre Funktion lokal testen möchten, bevor Sie sie bereitstellen, müssen Sie das Functions Framework lokal installieren und dann die Funktion ausführen.

  1. Führen Sie den folgenden Befehl im Verzeichnis helloworld aus, um das Functions Framework auf Ihrem lokalen Computer zu installieren:

    npm install @google-cloud/functions-framework
    
  2. Führen Sie den folgenden Befehl im Verzeichnis helloworld aus, um die Funktion lokal auszuführen:

    npx @google-cloud/functions-framework --target=helloGET
    
  3. Testen Sie Ihre Funktion. Rufen Sie dazu http://localhost:8080 in einem Browser auf oder führen Sie curl localhost:8080 in einem anderen Fenster aus.

    Weitere Informationen finden Sie unter Anfragen an lokale Funktionen senden.

Die Funktion gibt die Nachricht „Hello World!“ zurück.

Funktion bereitstellen

Führen Sie den Befehl gcloud functions deploy im Verzeichnis helloworld aus, um die Funktion bereitzustellen:

gcloud functions deploy hello-node-function \
  --gen2 \
  --runtime=nodejs20 \
  --region=REGION \
  --source=. \
  --entry-point=helloGET \
  --trigger-http \
  --allow-unauthenticated

Ersetzen Sie REGION durch den Namen der Google Cloud-Region, in der Sie die Funktion bereitstellen möchten (z. B. us-west1).

Dadurch wird Ihre Beispielfunktion mit der nodejs20-Laufzeit in der ausgewählten Region bereitgestellt.

Mit dem optionalen Flag --allow-unauthenticated können Sie die Funktion ohne Authentifizierung aufrufen.

Bereitgestellte Funktion testen

  1. Beachten Sie nach dem Bereitstellen der Funktion das Attribut uri in der Ausgabe des Befehls gcloud functions deploy oder rufen Sie es mit dem folgenden Befehl ab:

      gcloud functions describe hello-node-function \
        --region=REGION
    

    Ersetzen Sie REGION durch den Namen der Google Cloud-Region, in der Sie die Funktion bereitgestellt haben (z. B. us-west1).

  2. Rufen Sie diese URL in Ihrem Browser oder mit dem folgenden curl-Befehl auf:

    curl FUNCTION_URL
    

    Ersetzen Sie FUNCTION_URL durch das gerade abgerufene uri-Attribut.

    Die Funktion gibt die Nachricht „Hello World!“ zurück.

Logs der Funktion ansehen

Logs mit dem Befehlszeilentool ansehen

Sie können die Logs Ihrer Funktion über die Cloud Logging-UI oder die Google Cloud CLI prüfen.

Wenn Sie mit der gcloud CLI Logs für Ihre Funktion aufrufen möchten, verwenden Sie den Befehl gcloud functions logs read:

    gcloud functions logs read \
      --gen2 \
      --region=REGION \
      --limit=10 \
      hello-node-function

Ersetzen Sie REGION durch den Namen der Google Cloud-Region, in der Sie die Funktion bereitgestellt haben (z. B. us-west1).

Die Ausgabe sollte so aussehen:

LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:42:24.956
LOG:

LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:42:01.692
LOG:

LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:31:47.711
LOG: Default STARTUP TCP probe succeeded after 1 attempt for container "hello--node--function-1" on port 8080.

LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:31:46.542
LOG:

LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:31:27.390
LOG: Default STARTUP TCP probe succeeded after 1 attempt for container "hello--node--function-1" on port 8080.

Logs mit dem Logging-Dashboard ansehen

Um die Logs für Ihre Funktion mit dem Logging-Dashboard aufzurufen, öffnen Sie die Cloud Functions-Übersichtsseite. Klicken Sie in der Liste auf den Namen Ihrer Funktion und dann auf den Tab Logs.