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.