GSP1089

Übersicht
Cloud Run Functions ist das FaaS-Angebot (Functions-as‑a‑Service) von Google Cloud. Es ist mit einem erweiterten Feature-Set ausgestattet und basiert auf Cloud Run sowie Eventarc. So haben Sie mehr Kontrolle über Leistung und Skalierbarkeit sowie über die Laufzeit und Trigger der Funktionen aus über 90 Ereignisquellen.
In diesem Lab erstellen Sie Cloud Run-Funktionen, die auf HTTP-Aufrufe reagieren und durch Cloud Storage-Ereignisse und Cloud-Audit-Logs getriggert werden. Sie stellen auch mehrere Versionen einer Cloud Run-Funktion bereit und testen neue Einstellungen.
Das ist neu
Diese neue Version von Cloud Run Functions bietet eine verbesserte FaaS-Funktion, die auf Cloud Run, Cloud Build, Artifact Registry und Eventarc basiert.
Erweiterte Infrastruktur
-
Längere Verarbeitung von Anfragen: Führen Sie Ihre Cloud Run-Funktionen länger als die standardmäßigen 5 Minuten aus. So können Sie Arbeitslasten mit längeren Anfragen wie die Verarbeitung großer Datenströme aus Cloud Storage oder BigQuery leichter ausführen. Bei HTTP-Funktionen sind das bis zu 60 Minuten. Bei ereignisgesteuerten Funktionen beträgt die Dauer derzeit bis zu 10 Minuten.
-
Größere Instanzen: Nutzen Sie bis zu 16 GB RAM und 4 vCPUs mit Cloud Run Functions, wodurch größere speicherinterne, rechenintensive und parallele Arbeitslasten möglich sind.
-
Nebenläufigkeit: Verarbeiten Sie bis zu 1.000 gleichzeitige Anfragen mit einer einzelnen Funktionsinstanz. So werden Kaltstarts minimiert und die Latenz beim Skalieren verbessert.
-
Mindestinstanzen: Stellen Sie vorbereitete Instanzen bereit, um Kaltstarts zu minimieren und sicherzustellen, dass die Bootstrap-Zeit Ihrer Anwendung nicht die Anwendungsleistung beeinträchtigt.
-
Aufteilung des Traffics: Unterstützen Sie mehrere Versionen Ihrer Funktionen, teilen Sie den Traffic auf verschiedene Versionen auf und setzen Sie Ihre Funktion auf eine frühere Version zurück.
Umfassendere Ereignisabdeckung und CloudEvents-Unterstützung
-
Integration von Eventarc: Cloud Run Functions bietet jetzt native Unterstützung für Eventarc, wodurch über 125 Ereignisquellen mit Cloud-Audit-Logs (BigQuery, Cloud SQL, Cloud Storage usw.) verfügbar sind. Natürlich werden in Cloud Run Functions weiterhin Ereignisse aus benutzerdefinierten Quellen unterstützt, indem direkt in Cloud Pub/Sub veröffentlicht wird.
-
CloudEvent-Format: Alle ereignisgesteuerten Funktionen entsprechen unabhängig von der Quelle dem Industriestandard CloudEvents (cloudevents.io), um eine konsistente Entwicklerumgebung zu gewährleisten. Die Nutzlasten werden über ein strukturiertes CloudEvent mit einer cloudevent.data-Nutzlast gesendet und entsprechen dem CloudEvent-Standard.
Ziele
Aufgaben in diesem Lab:
- Eine Funktion schreiben, die auf HTTP-Aufrufe reagiert
- Eine Funktion schreiben, die auf Cloud Storage-Ereignisse reagiert
- Eine Funktion schreiben, die auf Cloud-Audit-Logs reagiert
- Mehrere Versionen einer Cloud Run-Funktion bereitstellen
- Kaltstarts mit Mindestanzahl von Instanzen vermeiden
- Nebenläufigkeit festlegen
Einrichtung und Anforderungen
Vor dem Klick auf „Start Lab“ (Lab starten)
Lesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange Google Cloud-Ressourcen für das Lab verfügbar sind.
In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.
Für dieses Lab benötigen Sie Folgendes:
- Einen Standardbrowser (empfohlen wird Chrome)
Hinweis: Nutzen Sie den privaten oder Inkognitomodus (empfohlen), um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.
- Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Hinweis: Verwenden Sie für dieses Lab nur das Teilnehmerkonto. Wenn Sie ein anderes Google Cloud-Konto verwenden, fallen dafür möglicherweise Kosten an.
Lab starten und bei der Google Cloud Console anmelden
-
Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Dialogfeld geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können.
Auf der linken Seite befindet sich der Bereich „Details zum Lab“ mit diesen Informationen:
- Schaltfläche „Google Cloud Console öffnen“
- Restzeit
- Temporäre Anmeldedaten für das Lab
- Ggf. weitere Informationen für dieses Lab
-
Klicken Sie auf Google Cloud Console öffnen (oder klicken Sie mit der rechten Maustaste und wählen Sie Link in Inkognitofenster öffnen aus, wenn Sie Chrome verwenden).
Im Lab werden Ressourcen aktiviert. Anschließend wird ein weiterer Tab mit der Seite „Anmelden“ geöffnet.
Tipp: Ordnen Sie die Tabs nebeneinander in separaten Fenstern an.
Hinweis: Wird das Dialogfeld Konto auswählen angezeigt, klicken Sie auf Anderes Konto verwenden.
-
Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.
{{{user_0.username | "Username"}}}
Sie finden den Nutzernamen auch im Bereich „Details zum Lab“.
-
Klicken Sie auf Weiter.
-
Kopieren Sie das folgende Passwort und fügen Sie es in das Dialogfeld Willkommen ein.
{{{user_0.password | "Password"}}}
Sie finden das Passwort auch im Bereich „Details zum Lab“.
-
Klicken Sie auf Weiter.
Wichtig: Sie müssen die für das Lab bereitgestellten Anmeldedaten verwenden. Nutzen Sie nicht die Anmeldedaten Ihres Google Cloud-Kontos.
Hinweis: Wenn Sie Ihr eigenes Google Cloud-Konto für dieses Lab nutzen, können zusätzliche Kosten anfallen.
-
Klicken Sie sich durch die nachfolgenden Seiten:
- Akzeptieren Sie die Nutzungsbedingungen.
- Fügen Sie keine Wiederherstellungsoptionen oder Zwei-Faktor-Authentifizierung hinzu (da dies nur ein temporäres Konto ist).
- Melden Sie sich nicht für kostenlose Testversionen an.
Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.
Hinweis: Wenn Sie auf Google Cloud-Produkte und ‑Dienste zugreifen möchten, klicken Sie auf das Navigationsmenü oder geben Sie den Namen des Produkts oder Dienstes in das Feld Suchen ein.
Cloud Shell aktivieren
Cloud Shell ist eine virtuelle Maschine, auf der Entwicklertools installiert sind. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud. Mit Cloud Shell erhalten Sie Befehlszeilenzugriff auf Ihre Google Cloud-Ressourcen.
-
Klicken Sie oben in der Google Cloud Console auf Cloud Shell aktivieren
.
-
Klicken Sie sich durch die folgenden Fenster:
- Fahren Sie mit dem Informationsfenster zu Cloud Shell fort.
- Autorisieren Sie Cloud Shell, Ihre Anmeldedaten für Google Cloud API-Aufrufe zu verwenden.
Wenn eine Verbindung besteht, sind Sie bereits authentifiziert und das Projekt ist auf Project_ID, eingestellt. Die Ausgabe enthält eine Zeile, in der die Project_ID für diese Sitzung angegeben ist:
Ihr Cloud-Projekt in dieser Sitzung ist festgelegt als {{{project_0.project_id | "PROJECT_ID"}}}
gcloud ist das Befehlszeilentool für Google Cloud. Das Tool ist in Cloud Shell vorinstalliert und unterstützt die Tab-Vervollständigung.
- (Optional) Sie können den aktiven Kontonamen mit diesem Befehl auflisten:
gcloud auth list
- Klicken Sie auf Autorisieren.
Ausgabe:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
Um das aktive Konto festzulegen, führen Sie diesen Befehl aus:
$ gcloud config set account `ACCOUNT`
- (Optional) Sie können die Projekt-ID mit diesem Befehl auflisten:
gcloud config list project
Ausgabe:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Hinweis: Die vollständige Dokumentation für gcloud finden Sie in Google Cloud in der Übersicht zur gcloud CLI.
Aufgabe 1: APIs aktivieren
Bevor Sie die Cloud Run-Funktionen erstellen, müssen Sie die relevanten APIs aktivieren.
- Führen Sie zur Aktivierung aller erforderlichen Dienste den folgenden Befehl aus.
gcloud services enable \
artifactregistry.googleapis.com \
cloudfunctions.googleapis.com \
cloudbuild.googleapis.com \
eventarc.googleapis.com \
run.googleapis.com \
logging.googleapis.com \
pubsub.googleapis.com
Gemini Code Assist in der Cloud Shell-IDE aktivieren
Sie können Gemini Code Assist in einer integrierten Entwicklungsumgebung (Integrated Development Environment, IDE) wie Cloud Shell verwenden, um Unterstützung beim Programmieren zu erhalten oder Probleme mit Ihrem Code zu lösen. Bevor Sie Gemini Code Assist verwenden können, müssen Sie das Tool aktivieren.
- Aktivieren Sie in Cloud Shell die Gemini for Google Cloud API mit dem folgenden Befehl:
gcloud services enable cloudaicompanion.googleapis.com
- Klicken Sie in der Cloud Shell-Symbolleiste auf Editor öffnen.
Hinweis: Klicken Sie zum Öffnen des Cloud Shell-Editors in der Cloud Shell-Symbolleiste auf Editor öffnen. Sie können zwischen Cloud Shell und dem Code-Editor wechseln. Klicken Sie dazu entsprechend auf Editor öffnen oder Terminal öffnen.
-
Klicken Sie im linken Bereich auf das Symbol Einstellungen und suchen Sie unter Einstellungen nach Gemini Code Assist.
-
Suchen Sie nach Gemini Code Assist: Aktivieren und prüfen Sie, ob das Kästchen ausgewählt ist. Schließen Sie dann die Einstellungen.
-
Klicken Sie in der Statusleiste unten auf dem Bildschirm auf Cloud Code – kein Projekt.
-
Autorisieren Sie das Plug-in wie beschrieben. Wenn kein Projekt automatisch ausgewählt wurde, klicken Sie auf Google Cloud-Projekt auswählen und wählen Sie aus.
-
Prüfen Sie, ob Ihr Google Cloud-Projekt () in der Cloud Code-Statusmeldung in der Statusleiste angezeigt wird.
Aufgabe 2: HTTP-Funktion erstellen
Für die erste Funktion erstellen Sie eine authentifizierte Node.js-Funktion, die auf HTTP-Anfragen reagiert. Verwenden Sie ein Zeitlimit von 10 Minuten, um zu zeigen, wie eine Funktion mehr Zeit für die Reaktion auf HTTP-Anfragen erhalten kann.
Erstellen
- Führen Sie im Cloud-Shell-Terminal den folgenden Befehl aus, um den Ordner und die Dateien für die App zu erstellen und den Ordner zu öffnen:
mkdir ~/hello-http && cd $_
touch index.js && touch package.json
-
Klicken Sie in der Symbolleiste von Cloud Shell auf die Schaltfläche Editor öffnen.
-
Fügen Sie in der Datei hello-http/index.js den folgenden Code hinzu, der einfach auf HTTP-Anfragen reagiert:
const functions = require('@google-cloud/functions-framework');
functions.http('helloWorld', (req, res) => {
res.status(200).send('HTTP with Node.js in GCF 2nd gen!');
});
- Fügen Sie in der Datei
hello-http/package.json den folgenden Inhalt hinzu, um die Abhängigkeiten anzugeben:
{
"name": "nodejs-functions-gen2-codelab",
"version": "0.0.1",
"main": "index.js",
"dependencies": {
"@google-cloud/functions-framework": "^2.0.0"
}
}
-
Öffnen Sie im Datei-Explorer die Datei index.js. Dadurch wird Gemini Code Assist aktiviert. Dies lässt sich am Symbol
rechts oben im Editor ablesen.
-
Klicken Sie auf das Gemini Code Assist: Intelligente Aktionen-Symbol
und wählen Sie Erkläre mir das aus.
-
Gemini Code Assist öffnet ein Chatfenster mit dem vorausgefüllten Prompt Erkläre mir das. Ersetzen Sie im Inline-Textfeld des Code Assist-Chats den vorausgefüllten Prompt durch Folgendes und klicken Sie auf Senden:
Du bist ein erfahrener Cloud Developer bei Cymbal AI. Ein neues Mitglied im Team ist mit dieser Implementierung von Cloud Functions-Funktionen nicht vertraut. Erkläre die Dateien „index.js“ und „package.json“ im Ordner „hello-http“ im Detail. Breche sie auf ihre wichtigsten Komponenten herunter, die im Anwendungscode verwendet werden.
Aktualisiere diese Dateien nicht mit den vorgeschlagenen Verbesserungen.
Detaillierte Erklärungen für die Codes index.js und package.json finden Sie im Chat Gemini Code Assist.
Bereitstellen
- Führen Sie im Cloud Shell-Terminal den folgenden Befehl aus, um die Funktion bereitzustellen, und geben Sie im Pop‑up-Fenster Nicht authentifizierte Aufrufe
J ein:
gcloud functions deploy nodejs-http-function \
--gen2 \
--runtime nodejs22 \
--entry-point helloWorld \
--source . \
--region {{{project_0.default_region|Region}}} \
--trigger-http \
--timeout 600s \
--max-instances 1
Hinweis: Wenn ein Berechtigungsfehler ausgegeben wird, warten Sie einige Minuten und versuchen Sie es dann noch einmal. Es dauert einige Minuten, bis die APIs aktiviert werden.
Obwohl für diesen Schritt nicht zwingend erforderlich, gibt es ein Zeitlimit von 600 Sekunden. So kann die Funktion länger auf HTTP-Anfragen reagieren.
- Sobald die Funktion bereitgestellt wurde, geben Sie in der Suchleiste Cloud Run Functions ein und klicken Sie auf das Ergebnis. Sie werden zur Cloud Run-Konsole weitergeleitet. Überprüfen Sie, ob die Funktion erfolgreich erstellt wurde.

Test
- Testen Sie die Funktion mit dem folgenden Befehl:
gcloud functions call nodejs-http-function \
--gen2 --region {{{project_0.default_region|Region}}}
Sie sollten als Antwort die folgende Mitteilung sehen:
HTTP with Node.js in GCF 2nd gen!
Klicken Sie auf Fortschritt prüfen.
HTTP-Funktion erstellen
Aufgabe 3: Cloud Storage-Funktion erstellen
In diesem Abschnitt erstellen Sie eine Node.js-Funktion, die auf Ereignisse aus einem Cloud Storage-Bucket reagiert.
Einrichten
- Wenn Sie Cloud Storage-Funktionen verwenden möchten, führen Sie zuerst den folgenden Code aus, um dem Cloud Storage-Dienstkonto die IAM-Rolle
pubsub.publisher zuzuweisen:
PROJECT_NUMBER=$(gcloud projects list --filter="project_id:{{{ project_0.project_id | PROJECT_ID }}}" --format='value(project_number)')
SERVICE_ACCOUNT=$(gsutil kms serviceaccount -p $PROJECT_NUMBER)
gcloud projects add-iam-policy-binding {{{ project_0.project_id | PROJECT_ID }}} \
--member serviceAccount:$SERVICE_ACCOUNT \
--role roles/pubsub.publisher
Erstellen
- Führen Sie den folgenden Befehl aus, um den Ordner und die Dateien für die App zu erstellen und den Ordner zu öffnen:
mkdir ~/hello-storage && cd $_
touch index.js && touch package.json
-
Klicken Sie in der Symbolleiste von Cloud Shell auf die Schaltfläche Editor öffnen.
-
Fügen Sie in der Datei hello-storage/index.js den folgenden Code hinzu, der einfach auf Cloud Storage-Ereignisse reagiert:
const functions = require('@google-cloud/functions-framework');
functions.cloudEvent('helloStorage', (cloudevent) => {
console.log('Cloud Storage event with Node.js in GCF 2nd gen!');
console.log(cloudevent);
});
- Fügen Sie in der Datei
hello-storage/package.json den folgenden Inhalt hinzu, um die Abhängigkeiten anzugeben:
{
"name": "nodejs-functions-gen2-codelab",
"version": "0.0.1",
"main": "index.js",
"dependencies": {
"@google-cloud/functions-framework": "^2.0.0"
}
}
-
Öffnen Sie im Datei-Explorer im Ordner „hello-storage“ die Datei index.js. Dadurch wird Gemini Code Assist aktiviert. Dies lässt sich am Symbol
rechts oben im Editor ablesen.
-
Klicken Sie auf das Gemini Code Assist: Intelligente Aktionen-Symbol
und wählen Sie Erkläre mir das aus.
-
Gemini Code Assist öffnet ein Chatfenster mit dem vorausgefüllten Prompt Erkläre mir das. Ersetzen Sie im Inline-Textfeld des Code Assist-Chats den vorausgefüllten Prompt durch Folgendes und klicken Sie auf Senden:
Du bist ein erfahrener Cloud Developer bei Cymbal AI. Ein neues Mitglied im Team ist mit dieser Implementierung von Cloud Functions-Funktionen nicht vertraut. Erkläre die Dateien „index.js“ und „package.json“ im Ordner „hello-storage“ im Detail. Breche sie auf ihre wichtigsten Komponenten herunter, die im Anwendungscode verwendet werden.
Aktualisiere diese Dateien nicht mit den vorgeschlagenen Verbesserungen.
Detaillierte Erklärungen für die Codes index.js und package.json finden Sie im Chat Gemini Code Assist.
Bereitstellen
- Erstellen Sie zuerst mit dem folgenden Befehl einen Cloud Storage-Bucket für Ereignisse.
BUCKET="gs://gcf-gen2-storage-{{{ project_0.project_id | PROJECT_ID }}}"
gsutil mb -l {{{project_0.default_region|Region}}} $BUCKET
- Führen Sie den folgenden Befehl aus, um die Funktion bereitzustellen:
gcloud functions deploy nodejs-storage-function \
--gen2 \
--runtime nodejs22 \
--entry-point helloStorage \
--source . \
--region {{{project_0.default_region|Region}}} \
--trigger-bucket $BUCKET \
--trigger-location {{{project_0.default_region|Region}}} \
--max-instances 1
Hinweis: Wenn wie zuvor ein Berechtigungsfehler ausgegeben wird, warten Sie einige Minuten und versuchen Sie es dann noch einmal. Es kann einige Minuten dauern, bis die APIs aktiviert werden.
- Sobald die Funktion bereitgestellt wurde, überprüfen Sie, ob sie in der Cloud Run-Konsole angezeigt wird.

Test
- Führen Sie den folgenden Befehl aus, um eine Datei in den Bucket hochzuladen und die Funktion zu testen:
echo "Hello World" > random.txt
gsutil cp random.txt $BUCKET/random.txt
- Führen Sie den folgenden Befehl aus: Das empfangene CloudEvent sollte in den Logs angezeigt werden:
gcloud functions logs read nodejs-storage-function \
--region {{{project_0.default_region|Region}}} --gen2 --limit=100 --format "value(log)"
Hinweis: Die Erstellung der Logs kann eine Minute dauern.
Die Ausgabe sieht in etwa so aus:
Ausgabe:
}
traceparent: '00-c74cb472d1e78f7225b6f617a31d9c08-96f0380bb62be2c1-01'
},
etag: 'CKOx1L3wofoCEAE='
crc32c: 'R1jUOQ==',
mediaLink: 'https://storage.googleapis.com/download/storage/v1/b/gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb/o/random.txt?generation=1663625646643363&alt=media',
md5Hash: '5Z/5eUEET4XfUpfhwwLSYA==',
size: '12',
timeStorageClassUpdated: '2022-09-19T22:14:06.657Z',
storageClass: 'STANDARD',
updated: '2022-09-19T22:14:06.657Z',
timeCreated: '2022-09-19T22:14:06.657Z',
contentType: 'text/plain',
metageneration: '1',
generation: '1663625646643363',
bucket: 'gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb',
name: 'random.txt',
selfLink: 'https://www.googleapis.com/storage/v1/b/gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb/o/random.txt',
id: 'gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb/random.txt/1663625646643363',
kind: 'storage#object',
data: {
bucket: 'gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb',
time: '2022-09-19T22:14:06.657124Z',
subject: 'objects/random.txt',
type: 'google.cloud.storage.object.v1.finalized',
specversion: '1.0',
source: '//storage.googleapis.com/projects/_/buckets/gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb',
id: '5693030851428996',
{
Cloud Storage event with Node.js in GCF 2nd gen!
Klicken Sie auf Fortschritt prüfen.
Cloud Storage-Funktion erstellen
Aufgabe 4: Cloud-Audit-Logs-Funktion erstellen
In diesem Abschnitt erstellen Sie eine Node.js-Funktion, die beim Erstellen einer Compute Engine-VM-Instanz ein Cloud-Audit-Log-Ereignis empfängt. Als Reaktion darauf wird der neu erstellten VM ein Label hinzugefügt, das den Ersteller der VM angibt.
Neu erstellte Compute Engine-VMs überprüfen
Compute Engine gibt beim Erstellen einer VM 2 Audit-Logs aus.
Das erste wird zu Beginn der VM-Erstellung ausgegeben und sieht so aus:

Das zweite wird nach der VM-Erstellung ausgegeben und sieht so aus:

Sie sehen das Vorgangsfeld mit den Werten first: true und last: true. Das zweite Audit-Log enthält alle Informationen, die Sie zum Labeln einer Instanz benötigen. Verwenden Sie den Flag last: true, um es in Cloud Run-Funktionen zu erkennen.
Einrichten
Wenn Sie Cloud-Audit-Log-Funktionen verwenden möchten, müssen Sie für Eventarc Audit-Logs aktivieren. Darüber hinaus müssen Sie ein Dienstkonto mit der Rolle eventarc.eventReceiver verwenden.
- Klicken Sie im Navigationsmenü auf IAM und Verwaltung > Audit-Logs.
Hinweis: Sie können die Warnung zur fehlenden Berechtigung resourcemanager.folders.getIamPolicy ignorieren.
-
Suchen Sie nach der Compute Engine API und klicken Sie auf das Kästchen daneben. Wenn Sie die API nicht finden, suchen Sie auf der nächsten Seite weiter.
-
Aktivieren Sie im Infobereich rechts die Kästchen für die Log-Typen Lesen durch Administrator, Daten lesen und Daten schreiben. Klicken Sie dann auf Speichern.

- Weisen Sie dem Compute Engine-Standarddienstkonto die IAM-Rolle
eventarc.eventReceiver zu:
gcloud projects add-iam-policy-binding {{{ project_0.project_id | PROJECT_ID }}} \
--member serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
--role roles/eventarc.eventReceiver
Code abrufen
- Führen Sie den folgenden Code aus, um das Repository mit der Anwendung zu klonen:
cd ~
git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git
-
Klicken Sie in der Symbolleiste von Cloud Shell auf die Schaltfläche Editor öffnen.
-
Gehen Sie im Datei-Explorer zu eventarc-samples > gce-vm-labeler > gcf > nodejs > index.js.
-
Öffnen Sie die Datei index.js. Dadurch wird Gemini Code Assist aktiviert. Dies lässt sich am Symbol
rechts oben im Editor ablesen.
-
Klicken Sie auf das Gemini Code Assist: Intelligente Aktionen-Symbol
und wählen Sie Erkläre mir das aus.
-
Gemini Code Assist öffnet ein Chatfenster mit dem vorausgefüllten Prompt Erkläre mir das. Ersetzen Sie im Inline-Textfeld des Code Assist-Chats den vorausgefüllten Prompt durch Folgendes und klicken Sie auf Senden:
Du bist ein erfahrener Cloud Developer bei Cymbal AI. Ein neues Mitglied im Team ist mit dieser Implementierung von Cloud Functions-Funktionen nicht vertraut. Erkläre die Datei „index.js“ im Detail. Breche sie auf ihre wichtigsten Komponenten herunter, die im Anwendungscode verwendet werden.
Aktualisiere diese Dateien nicht mit den vorgeschlagenen Verbesserungen.
Die Datei index.js enthält den Anwendungscode, der das in ein CloudEvent verpackte Audit-Log empfängt. Anschließend werden die Details der Compute Engine-VM-Instanz extrahiert und ein Label für die VM-Instanz festgelegt. Sie können sich die Datei index.js gern genauer ansehen.
Detaillierte Erklärungen für den Code index.js finden Sie im Chat Gemini Code Assist.
Bereitstellen
- Führen Sie im Cloud Shell-Terminal den folgenden Befehl aus, um das App-Verzeichnis zu öffnen:
cd ~/eventarc-samples/gce-vm-labeler/gcf/nodejs
- Führen Sie den folgenden Befehl aus, um die Funktion wie zuvor mit
gcloud bereitzustellen. Die Funktion filtert mit dem Flag --trigger-event-filters nach Audit-Logs für Compute Engine-Einfügungen:
gcloud functions deploy gce-vm-labeler \
--gen2 \
--runtime nodejs22 \
--entry-point labelVmCreation \
--source . \
--region {{{project_0.default_region|Region}}} \
--trigger-event-filters="type=google.cloud.audit.log.v1.written,serviceName=compute.googleapis.com,methodName=beta.compute.instances.insert" \
--trigger-location {{{project_0.default_region|Region}}} \
--max-instances 1
Hinweis: Der Trigger für die Audit-Log-Funktion wird zwar sofort erstellt, es kann aber bis zu 10 Minuten dauern, bis er vollständig funktioniert.
Klicken Sie auf Fortschritt prüfen.
Cloud-Audit-Logs-Funktion erstellen
Test
Um Ihre Audit-Log-Funktion zu testen, müssen Sie in der Cloud Console eine Compute Engine-VM erstellen. (Sie können VMs auch mit gcloud erstellen. Es scheinen dadurch jedoch keine Audit-Logs generiert zu werden.)
-
Gehen Sie im Navigationsmenü zu Compute Engine > VM-Instanzen.
-
Klicken Sie auf Instanz erstellen, legen Sie den Namen der Instanz als instance-1 und die Zone als fest.
-
Übernehmen Sie für alle anderen Felder die Standardeinstellungen und klicken Sie auf Erstellen.
Sobald die VM erstellt wurde, sollte für die VM in der Cloud Console im Abschnitt Allgemeine Informationen das hinzugefügte Label creator angezeigt werden.

- Überprüfen Sie das Label mit dem folgenden Befehl:
gcloud compute instances describe instance-1 --zone {{{project_0.default_zone | "Zone"}}}
Sie sollten in der Ausgabe das Label wie im folgenden Beispiel sehen.
Ausgabebeispiel:
...
labelFingerprint: ULU6pAy2C7s=
labels:
creator: student-02-19b599a0f901
...
Klicken Sie auf Fortschritt prüfen.
VM-Instanz erstellen
- Führen Sie den folgenden Befehl aus, um die VM zu löschen. Geben Sie bei Aufforderung
J zur Bestätigung ein.
gcloud compute instances delete instance-1 --zone {{{project_0.default_zone | "Zone"}}}
Aufgabe 5: Verschiedene Versionen bereitstellen
Cloud Run Functions unterstützt mehrere Versionen Ihrer Funktionen. So können Sie Traffic auf verschiedene Versionen aufteilen und Ihre Funktion auf eine frühere Version zurücksetzen. In diesem Abschnitt stellen Sie zwei Versionen Ihrer Cloud Run-Funktion bereit.
Erstellen
- Führen Sie den folgenden Befehl aus, um den Ordner und die Dateien für die App zu erstellen und den Ordner zu öffnen:
mkdir ~/hello-world-colored && cd $_
touch main.py
touch requirements.txt
- Fügen Sie in der Datei
hello-world-colored/main.py den folgenden Code mit einer Python-Funktion ein. Die Funktion liest eine Umgebungsvariable für die Farbe aus und gibt Hello World in dieser Hintergrundfarbe zurück.
import os
color = os.environ.get('COLOR')
def hello_world(request):
return f'<body style="background-color:{color}"><h1>Hello World!</h1></body>'
Bereitstellen
- Führen Sie den folgenden Befehl aus, um die erste Version der Funktion mit einem orangefarbenen Hintergrund bereitzustellen:
COLOR=orange
gcloud functions deploy hello-world-colored \
--gen2 \
--runtime python39 \
--entry-point hello_world \
--source . \
--region {{{project_0.default_region|Region}}} \
--trigger-http \
--allow-unauthenticated \
--update-env-vars COLOR=$COLOR \
--max-instances 1
Wenn Sie die Funktion jetzt durch Aufrufen des HTTP-Triggers (die URI-Ausgabe des zuvor ausgeführten Bereitstellungsbefehls) in Ihrem Browser testen, sollte Hello World mit einem orangefarbenen Hintergrund angezeigt werden:

-
Rufen Sie die Seite Cloud Run Functions auf. Sie werden zur Cloud Run-Konsole weitergeleitet. Klicken Sie auf die Funktion hello-world-colored.
-
Klicken Sie auf Neue Version bearbeiten und bereitstellen.
-
Lassen Sie alle Standardeinstellungen unverändert, scrollen Sie nach unten und wählen Sie den Tab Variablen und Secrets aus. Aktualisieren Sie im Abschnitt Umgebungsvariablen die Umgebungsvariable COLOR auf yellow.

- Klicken Sie auf Bereitstellen.
Da dies die neueste Version ist, sollten Sie beim Testen der Funktion Hello World mit einem gelben Hintergrund sehen:

Klicken Sie auf Fortschritt prüfen.
Verschiedene Versionen bereitstellen
Aufgabe 6: Mindestanzahl von Instanzen einrichten
In Cloud Run-Funktionen können Sie eine Mindestanzahl von Funktionsinstanzen festlegen, die einsatzbereit sind und Anfragen verarbeiten können. Dies ist nützlich, um die Anzahl der Kaltstarts zu begrenzen. In diesem Abschnitt stellen Sie eine Funktion mit langsamer Initialisierung bereit. Sie beobachten ein Kaltstartproblem. Sie stellen dann die Funktion mit dem Mindestinstanzwert 1 bereit, um den Kaltstart zu vermeiden.
Erstellen
- Führen Sie den folgenden Befehl aus, um den Ordner und die Dateien für die App zu erstellen und den Ordner zu öffnen:
mkdir ~/min-instances && cd $_
touch main.go
touch go.mod
- Fügen Sie in der Datei
min-instances/main.go den folgenden Code hinzu. Dieser Go-Dienst hat eine init-Funktion, die 10 Sekunden lang in den Ruhemodus wechselt, um eine lange Initialisierung zu simulieren. Er verfügt auch über eine HelloWorld-Funktion, die auf HTTP-Aufrufe reagiert:
package p
import (
"fmt"
"net/http"
"time"
)
func init() {
time.Sleep(10 * time.Second)
}
func HelloWorld(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Slow HTTP Go in GCF 2nd gen!")
}
- Fügen Sie in der Datei
min-instances/go.mod den folgenden Code hinzu. Damit werden der Modulpfad und die Go-Sprachversion festgelegt:
module example.com/mod
go 1.23
Bereitstellen
- Führen Sie den folgenden Befehl aus, um die erste Version der Funktion mit dem Standardwert für die Mindestanzahl von Instanzen (0) bereitzustellen:
gcloud functions deploy slow-function \
--gen2 \
--runtime go123 \
--entry-point HelloWorld \
--source . \
--region {{{project_0.default_region|Region}}} \
--trigger-http \
--allow-unauthenticated \
--max-instances 4
- Testen Sie die Funktion mit diesem Befehl:
gcloud functions call slow-function \
--gen2 --region {{{project_0.default_region|Region}}}
Beim ersten Aufruf sollte es zu einer Verzögerung von 10 Sekunden (Kaltstart) kommen, bevor die Meldung angezeigt wird. Weitere Aufrufe sollten sofort zurückgegeben werden.
Slow HTTP Go in GCF 2nd gen!
Mindestinstanzen festlegen
Um den Kaltstart bei der ersten Anfrage zu vermeiden, stellen Sie die Funktion mit dem Flag --min-instances, festgelegt auf den Wert 1, noch einmal bereit:
-
Rufen Sie in der Konsole die Seite Cloud Run auf und klicken Sie auf den Dienst slow-function.
-
Klicken Sie auf Neue Version bearbeiten und bereitstellen.
-
Legen Sie im Abschnitt Versionsskalierung die Mindestanzahl von Instanzen auf 1 und die Maximale Anzahl von Instanzen auf 4 fest.
-
Übernehmen Sie für alle anderen Felder die Standardeinstellungen und klicken Sie auf Bereitstellen.
Test
- Führen Sie den folgenden Befehl aus, um die Funktion noch einmal zu testen:
gcloud functions call slow-function \
--gen2 --region {{{project_0.default_region|Region}}}
Bei der ersten Anfrage sollte es nicht mehr zu einer Verzögerung von 10 Sekunden kommen. Das Kaltstartproblem für den ersten Aufruf (nach langer Zeit ohne Aufrufe) wurde dank der Mindestanzahl von Instanzen behoben! Weitere Informationen finden Sie im Dokument Mindestinstanzen verwenden.
Klicken Sie auf Fortschritt prüfen.
Mindestanzahl von Instanzen einrichten
Aufgabe 7: Funktion mit Nebenläufigkeit erstellen
In Cloud Run Functions verarbeitet eine Funktionsinstanz standardmäßig eine Anfrage gleichzeitig. Sie können jedoch festlegen, wie viele gleichzeitige Anfragen eine Instanz parallel verarbeiten darf. Dies kann auch nützlich sein, um Kaltstarts zu vermeiden, da für jede parallele Anfrage keine neue Funktionsinstanz erstellt werden muss.
In diesem Abschnitt verwenden Sie die Funktion mit langsamer Initialisierung aus dem vorherigen Schritt. Sie senden 10 Anfragen und beobachten wieder ein Kaltstartproblem, da zur Verarbeitung der Anfragen neue Funktionsinstanzen erstellt werden müssen.
Um das Kaltstartproblem zu beheben, stellen Sie eine weitere Funktion mit einem Nebenläufigkeitswert von 100 bereit. Sie stellen fest, dass die 10 Anfragen jetzt nicht mehr zu Kaltstarts führen und eine einzelne Funktionsinstanz alle Anfragen verarbeiten kann.
Ohne Nebenläufigkeit testen
- Installieren Sie
hey in Cloud Shell mit dem folgenden Installationsbefehl:
sudo apt install hey
- Führen Sie den folgenden Befehl aus, um die URL der Funktion abzurufen und als Umgebungsvariable zu speichern:
SLOW_URL=$(gcloud functions describe slow-function --region {{{project_0.default_region|Region}}} --gen2 --format="value(serviceConfig.uri)")
- Verwenden Sie das Open-Source-Benchmarking-Tool
hey, um 10 gleichzeitige Anfragen an die langsame Funktion zu senden.
hey -n 10 -c 10 $SLOW_URL
In der Ausgabe von hey sollten Sie sehen, dass einige Anfragen lange dauern.
Ausgabe:
Summary:
Total: 10.9053 secs
Slowest: 10.9048 secs
Fastest: 0.4439 secs
Average: 9.7930 secs
Requests/sec: 0.9170
Total data: 310 bytes
Size/request: 31 bytes
Response time histogram:
0.444 [1] |■■■■
1.490 [0] |
2.536 [0] |
3.582 [0] |
4.628 [0] |
5.674 [0] |
6.720 [0] |
7.767 [0] |
8.813 [0] |
9.859 [0] |
10.905 [9] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
Das liegt daran, dass mehr Funktionsinstanzen erstellt werden, um die Anfragen zu verarbeiten. Wenn Sie die Anzahl der aktiven Instanzen für die Funktion überprüfen, sollten Sie auch sehen, dass zu einem bestimmten Zeitpunkt mehr als eine Instanz erstellt wurde. Diese verursachen das Kaltstartproblem.

- Führen Sie den folgenden Befehl aus, um die Funktion zu löschen. Geben Sie bei Aufforderung
J zur Bestätigung ein.
gcloud run services delete slow-function --region {{{project_0.default_region | "Region"}}}
Bereitstellen
- Führen Sie den folgenden Befehl aus, um eine neue Funktion bereitzustellen, die mit der vorherigen Funktion identisch ist. Nach der Bereitstellung können Sie die Nebenläufigkeit erhöhen:
gcloud functions deploy slow-concurrent-function \
--gen2 \
--runtime go123 \
--entry-point HelloWorld \
--source . \
--region {{{project_0.default_region|Region}}} \
--trigger-http \
--allow-unauthenticated \
--min-instances 1 \
--max-instances 4
Nebenläufigkeit festlegen
Legen Sie nun die Nebenläufigkeit des zugrunde liegenden Cloud Run-Dienstes für die Funktion auf 100 fest (maximal 1.000). So wird sichergestellt, dass von einer einzelnen Funktionsinstanz mindestens 100 Anfragen verarbeitet werden können.
-
Gehen Sie im Navigationsmenü zu Cloud Run.
-
Klicken Sie auf den Dienst slow-concurrent-function.
-
Klicken Sie auf Neue Version bearbeiten und bereitstellen.
-
Legen Sie im Abschnitt Ressourcen die CPU auf 1 fest.
-
Legen Sie unter Anfragen die Maximale Anzahl gleichzeitiger Anfragen pro Instanz auf 100 fest.
-
Legen Sie unter Versionsskalierung die Maximale Anzahl von Instanzen auf 4 fest.
-
Übernehmen Sie für alle anderen Felder die Standardeinstellungen und klicken Sie auf Bereitstellen.
Mit Nebenläufigkeit testen
- Sobald Ihre Funktion bereitgestellt wurde, führen Sie den folgenden Befehl aus, um die URL der neuen Funktion abzurufen und als Umgebungsvariable zu speichern:
SLOW_CONCURRENT_URL=$(gcloud functions describe slow-concurrent-function --region {{{project_0.default_region|Region}}} --gen2 --format="value(serviceConfig.uri)")
- Verwenden Sie jetzt
hey, um 10 gleichzeitige Anfragen zu senden:
hey -n 10 -c 10 $SLOW_CONCURRENT_URL
In der Ausgabe von hey sollten Sie sehen, dass alle Anfragen schnell verarbeitet werden.
Ausgabe:
Summary:
Total: 0.0652 secs
Slowest: 0.0651 secs
Fastest: 0.0619 secs
Average: 0.0636 secs
Requests/sec: 153.3751
Total data: 280 bytes
Size/request: 28 bytes
Response time histogram:
0.062 [1] |■■■■■■■■■■■■■■■■■■■■
0.062 [1] |■■■■■■■■■■■■■■■■■■■■
0.063 [0] |
0.063 [0] |
0.063 [0] |
0.063 [1] |■■■■■■■■■■■■■■■■■■■■
0.064 [2] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0.064 [2] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0.064 [2] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0.065 [0] |
0.065 [1] |■■■■■■■■■■■■■■■■■■■■
Eine einzelne Funktionsinstanz konnte alle Anfragen verarbeiten und das Kaltstartproblem wurde dank der erhöhten Nebenläufigkeit behoben! Weitere Informationen finden Sie im Dokument Nebenläufigkeit.
Klicken Sie auf Fortschritt prüfen.
Funktion mit Nebenläufigkeit erstellen
Glückwunsch!
In diesem Lab haben Sie mehrere Cloud Run-Funktionen bereitgestellt, die auf HTTP-Aufrufe, Cloud Storage-Ereignisse und Cloud-Audit-Logs reagiert haben. Anschließend haben Sie mehrere Versionen der Cloud Run-Dienste bereitgestellt, in denen die Funktionen ausgeführt werden, und Nebenläufigkeitswerte festgelegt. Außerdem haben Sie durch die Mindestanzahl an Instanzen Kaltstarts vermieden.
Weitere Informationen
Weitere Informationen zu Cloud Run Functions finden Sie hier:
Google Cloud-Schulungen und -Zertifizierungen
In unseren Schulungen erfahren Sie alles zum optimalen Einsatz unserer Google Cloud-Technologien und können sich entsprechend zertifizieren lassen. Unsere Kurse vermitteln technische Fähigkeiten und Best Practices, damit Sie möglichst schnell mit Google Cloud loslegen und Ihr Wissen fortlaufend erweitern können. Wir bieten On-Demand-, Präsenz- und virtuelle Schulungen für Anfänger wie Fortgeschrittene an, die Sie individuell in Ihrem eigenen Zeitplan absolvieren können. Mit unseren Zertifizierungen weisen Sie nach, dass Sie Experte im Bereich Google Cloud-Technologien sind.
Anleitung zuletzt am 19. August 2025 aktualisiert
Lab zuletzt am 19. August 2025 getestet
© 2025 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.