Functions mit dem Functions Emulator ausführen

Mit dem Functions Emulator der Google Cloud CLI können Sie lokale Instanzen Ihrer Cloud Run 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.

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

Verwenden Sie den Befehl gcloud functions, um die Funktion lokal mit dem Functions Emulator bereitzustellen:

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

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, auf dem Anfragen überwacht werden sollen (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

Rufen Sie Ihre lokale HTTP-Funktion so 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, in dem das Triggerereignis beschrieben wird:

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 ist eine Beispielbefehlszeile:

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