Diese einfache Anleitung zeigt das Schreiben, Bereitstellen und Auslösen einer ereignisgesteuerten Cloud Functions-Funktion mit einem Cloud Pub/Sub-Trigger.
Wenn Sie Pub/Sub noch nicht kennen und weitere Informationen erhalten möchten, lesen Sie die Dokumentation zu Pub/Sub, insbesondere zur Verwaltung von Themen und Abonnements. Unter Google Cloud Pub/Sub-Trigger erhalten Sie einen Überblick über das Arbeiten mit Pub/Sub-Themen und -Abonnements in Cloud Functions.
Wenn Sie nach Codebeispielen zur Verwendung von Pub/Sub suchen, rufen Sie den Google Cloud-Beispielbrowser auf.
Ziele
- Eine ereignisgesteuerte Cloud Functions-Funktion schreiben und bereitstellen.
- Funktionen durch Veröffentlichen einer Nachricht in einem Pub/Sub-Thema auslösen
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
- Cloud Functions
- Cloud Build
- Pub/Sub
- Artifact Registry
- Eventarc
- Cloud Logging
Weitere Informationen finden Sie unter Cloud Functions-Preise.
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Vorbereitung
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, Eventarc, Logging, and Pub/Sub APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, Eventarc, Logging, and Pub/Sub APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Bereiten Sie die Entwicklungsumgebung vor.
Node.js
Python
Go
Java
C#
Ruby
PHP
Wenn Sie die gcloud CLI bereits installiert haben, aktualisieren Sie sie mit dem folgenden Befehl:
gcloud components update
Vorbereitung
Pub/Sub-Thema erstellen
gcloud pubsub topics create YOUR_TOPIC_NAME
Dies ist ein erforderlicher Schritt, bevor Sie die Funktion bereitstellen können. In Cloud Functions (2. Generation) werden Pub/Sub-Themen nicht automatisch erstellt, wenn Sie eine Funktion bereitstellen.
Anwendung vorbereiten
Klonen Sie das Repository der Beispiel-App auf Ihren lokalen Computer:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Einfach loslegen (Go)
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
PHP
git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Wechseln Sie in das Verzeichnis mit dem Cloud Functions-Beispielcode für den Zugriff auf Pub/Sub:
Node.js
cd nodejs-docs-samples/functions/v2/helloPubSub/
Python
cd python-docs-samples/functions/v2/pubsub/
Einfach loslegen (Go)
cd golang-samples/functions/functionsv2/hellopubsub/
Java
cd java-docs-samples/functions/v2/pubsub/
C#
cd dotnet-docs-samples/functions/helloworld/HelloPubSub/
Ruby
cd ruby-docs-samples/functions/helloworld/pubsub/
PHP
cd php-docs-samples/functions/helloworld_pubsub/
Sehen Sie sich den Beispielcode an:
Node.js
Python
Einfach loslegen (Go)
Java
C#
Ruby
PHP
Funktion bereitstellen
Führen Sie diesen Befehl in dem Verzeichnis mit dem Beispielcode (oder im Fall von Java die Datei pom.xml
) aus, um die Funktion mit einem Pub/Sub-Trigger bereitzustellen:
Node.js
gcloud functions deploy nodejs-pubsub-function \ --gen2 \ --runtime=nodejs20 \ --region=REGION
\ --source=. \ --entry-point=helloPubSub \
--trigger-topic=YOUR_TOPIC_NAME
Verwenden Sie das Flag --runtime
, um die Laufzeit-ID einer unterstützten Node.js-Version anzugeben und die Funktion auszuführen.
Python
gcloud functions deploy python-pubsub-function \ --gen2 \ --runtime=python312 \ --region=REGION
\ --source=. \ --entry-point=subscribe \
--trigger-topic=YOUR_TOPIC_NAME
Verwenden Sie das Flag --runtime
, um die Laufzeit-ID einer unterstützten Python-Version anzugeben und die Funktion auszuführen.
Einfach loslegen (Go)
gcloud functions deploy go-pubsub-function \ --gen2 \ --runtime=go121 \ --region=REGION
\ --source=. \ --entry-point=HelloPubSub \
--trigger-topic=YOUR_TOPIC_NAME
Verwenden Sie das Flag --runtime
, um die Laufzeit-ID einer unterstützten Go-Version anzugeben und die Funktion auszuführen.
Java
gcloud functions deploy java-pubsub-function \ --gen2 \ --runtime=java17 \ --region=REGION
\ --source=. \ --entry-point=functions.SubscribeToTopic \ --memory=512MB \
--trigger-topic=YOUR_TOPIC_NAME
Verwenden Sie das Flag --runtime
, um die Laufzeit-ID einer unterstützten Java-Version anzugeben und die Funktion auszuführen.
C#
gcloud functions deploy csharp-pubsub-function \ --gen2 \ --runtime=dotnet6 \ --region=REGION
\ --source=. \ --entry-point=HelloPubSub.Function \
--trigger-topic=YOUR_TOPIC_NAME
Verwenden Sie das Flag --runtime
, um die Laufzeit-ID einer unterstützten .NET-Version anzugeben, um Ihre Funktion auszuführen.
Ruby
gcloud functions deploy ruby-pubsub-function \ --gen2 \ --runtime=ruby32 \ --region=REGION
\ --source=. \ --entry-point=hello_pubsub \
--trigger-topic=YOUR_TOPIC_NAME
Verwenden Sie das Flag --runtime
, um die Laufzeit-ID einer unterstützten Ruby-Version anzugeben, um die Funktion auszuführen.
PHP
gcloud functions deploy php-pubsub-function \ --gen2 \ --runtime=php82 \ --region=REGION
\ --source=. \ --entry-point=helloworldPubsub \
--trigger-topic=YOUR_TOPIC_NAME
Verwenden Sie das Flag --runtime
, um die Laufzeit-ID einer unterstützten PHP-Version anzugeben, um die Funktion auszuführen.
Dabei ist YOUR_TOPIC_NAME
der Name des Pub/Sub-Themas, das die Funktion abonnieren wird.
Sie müssen ein Thema erstellen, bevor Sie den Befehl deploy
entweder mit der Google Cloud Console oder dem gcloud
-Befehlszeilentool ausführen. Im Gegensatz zu Cloud Functions (1. Generation) werden in Cloud Functions (2. Generation) Pub/Sub-Themen nicht automatisch erstellt, wenn Sie eine Funktion mit einem Pub/Sub-Trigger bereitstellen.
Funktion auslösen
So testen Sie die Pub/Sub-Funktion:
Nachricht zum Thema veröffentlichen:
gcloud pubsub topics publish my-topic --message="Friend"
Lesen Sie die Funktionslogs, um das Ergebnis zu sehen:
gcloud functions logs read \ --gen2 \ --region=REGION \ --limit=5 \ FUNCTION_NAME
Ersetzen Sie Folgendes:
- REGION ist der Name der Google Cloud-Region, in der Sie die Funktion bereitgestellt haben (z. B.
us-west1
). - FUNCTION_NAME ist der Name, den Sie der Funktion bei der Bereitstellung gegeben haben. Beispiel: Die Node.js-Funktion in dieser Anleitung wurde mit dem Funktionsnamen
nodejs-pubsub-function
bereitgestellt.
Die Logging-Ausgabe sollte die neue Nachricht "Friend" enthalten.
- REGION ist der Name der Google Cloud-Region, in der Sie die Funktion bereitgestellt haben (z. B.
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.
Projekt löschen
Am einfachsten vermeiden Sie weitere Kosten, wenn Sie das zum Ausführen der Anleitung erstellte Projekt löschen.
So löschen Sie das Projekt:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Cloud Functions-Funktion löschen
Durch das Löschen von Cloud Functions-Funktionen werden keine in Cloud Storage gespeicherten Ressourcen entfernt.
Führen Sie den folgenden Befehl aus, um die in dieser Anleitung erstellte Cloud Functions-Funktion zu löschen:
Node.js
gcloud functions delete nodejs-pubsub-function --gen2 --region REGION
Python
gcloud functions delete python-pubsub-function --gen2 --region REGION
Einfach loslegen (Go)
gcloud functions delete go-pubsub-function --gen2 --region REGION
Java
gcloud functions delete java-pubsub-function --gen2 --region REGION
C#
gcloud functions delete csharp-pubsub-function --gen2 --region REGION
Ruby
gcloud functions delete ruby-pubsub-function --gen2 --region REGION
PHP
gcloud functions delete php-pubsub-function --gen2 --region REGION
Sie können Cloud Functions-Funktionen auch über die Google Cloud Console löschen.