Funktionen mit dem Functions Emulator ausführen

Mit dem Functions Emulator der Google Cloud CLI können Sie lokale Instanzen Ihrer Cloud Functions-Funktionen über den Befehl gcloud alpha functions local verwalten. Auf diese Weise können Sie Ihre Funktionen in Ihrem lokalen System bereitstellen und testen, bevor Sie sie in der Google Cloud-Umgebung bereitstellen.

Dieses Feature kann sowohl mit Funktionen der 1. als auch der 2. Generation verwendet werden.

Der Functions Emulator verwendet die Buildpacks von Google Cloud, um Ihren Funktionscode in lokal ausführbaren Container-Images zu verpacken. Diese Images führen Sie dann lokal mit Docker aus.

Voraussetzungen für die Installation

Bevor Sie fortfahren, müssen folgende Komponenten installiert sein:

Funktion lokal bereitstellen

Zum lokalen Bereitstellen der Funktion mit dem Functions Emulator verwenden Sie den Befehl gcloud functions:

Node.js

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=nodejs20

Python

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=python312

Einfach loslegen (Go)

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=go121

Java

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=java17

C#

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=dotnet6

Ruby

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=ruby32

PHP

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=php82

Ersetzen Sie:

  • LOCAL_DEPLOYMENT_NAME: der Name, unter dem Sie Ihre Funktion lokal bereitstellen.
  • ENTRY_POINT: der Einstiegspunkt der Funktion.

Sie können Ihren Bereitstellungsbefehl mit den folgenden optionalen Flags weiter konfigurieren:

Flag Beschreibung
--port Der Port, der auf Anfragen überwacht werden soll (Standard: 8080).
--builder Name des Buildpack-Builders, der verwendet werden soll.

Der Wert --builder wird standardmäßig auf den App Engine-Builder für die Sprache Ihrer Funktion festgelegt. Beispielsweise wird für Python standardmäßig gcr.io/gae-runtimes/buildpacks/google-gae-22/python/builder festgelegt.

Wenn Sie den Befehl gcloud alpha zum ersten Mal verwenden, werden Sie vom Befehl gcloud aufgefordert, den Befehlssatz gcloud alpha zu installieren.

Lokale Funktion aufrufen

Mit dem folgenden Befehl können Sie Ihre lokale Funktion ohne Daten aufrufen:

gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME

Ersetzen Sie LOCAL_DEPLOYMENT_NAME durch den Namen, unter dem Sie die Funktion lokal bereitstellen möchten.

Wählen Sie den Tab, der Ihrem Funktionstyp entspricht, um Daten in den Aufruf Ihrer lokalen Funktion aufzunehmen:

HTTP-Funktion

So rufen Sie die lokale HTTP-Funktion auf:

gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
    --data='{"message": "MESSAGE"}'

Ersetzen Sie:

  • LOCAL_DEPLOYMENT_NAME: der Name, unter dem die Funktion lokal bereitgestellt wird.
  • ENTRY_POINT: der Einstiegspunkt der Funktion.
  • MESSAGE: ein Textstring, der als Text der HTTP-Anfrage übergeben wird.

CloudEvent-Funktion

Zum Aufrufen der lokalen CloudEvent-Funktion müssen Sie ein CloudEvent-JSON-Objekt angeben, das das Triggerereignis beschreibt:

gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
    --cloud-event="CLOUD_EVENT_JSON"

Ersetzen Sie:

  • LOCAL_DEPLOYMENT_NAME: der Name, unter dem die Funktion lokal bereitgestellt wird.
  • ENTRY_POINT: der Einstiegspunkt der Funktion.
  • CLOUD_EVENT_JSON: ein JSON-codierter String im Modus für strukturierte Inhalte, der das auslösende Ereignis beschreibt. Weitere Informationen und Beispiele finden Sie unter CloudEvents – JSON-Ereignisformat.

Hier ein Beispiel für eine Befehlszeile:

gcloud alpha functions local call my-function --cloud-event='{
 "specversion" : "1.0",
  "type" : "com.github.pull.create",
  "source" : "https://github.com/cloudevents/spec/pull",
  "subject" : "123",
  "id" : "ce",
  "time" : "2021-01-27T18:30:00Z", "data" : "{\n \"subscription\": \"projects\/test-project\/subscriptions\/my-subscription\",\n \"message\": {\n \"attributes\": {\n \"attr1\":\"attr1-value\"\n },\n \"data\": \"d29ybGQ=\",\n \"messageId\": \"message-id\",\n \"publishTime\":\"2021-02-05T04:06:14.109Z\",\n \"orderingKey\": \"ordering-key\"\n }\n}"
  }'

Weitere Informationen zur Definition des JSON-Formats für CloudEvents finden Sie in den CloudEvent-Spezifikationen.

Lokale Funktionsbereitstellung löschen

Löschen Sie die Bereitstellung der lokalen Funktion mit folgendem Befehl:

gcloud alpha functions local delete LOCAL_DEPLOYMENT_NAME

Ersetzen Sie LOCAL_DEPLOYMENT_NAME durch den Namen, unter dem Sie die Funktion lokal bereitstellen möchten.

Mit diesem Befehl wird die Bereitstellung der Funktion aufgehoben, der Funktionscode wird jedoch nicht gelöscht.

Nächste Schritte