Übersicht
Eine Cloud Run-Funktion ist ein Teil eines Codes, der als Reaktion auf ein Ereignis ausgeführt wird, zum Beispiel eine HTTP-Anfrage, eine Nachricht von einem Messaging-Dienst oder ein Dateiupload. In Ihrer Cloudumgebung gibt es Cloudereignisse. Dazu zählen beispielsweise das Ändern von Daten in einer Datenbank, das Hinzufügen von Dateien zu einem Speichersystem oder das Erstellen einer neuen Instanz einer virtuellen Maschine.
Da Cloud Run-Funktionen ereignisgesteuert sind, werden sie nur ausgeführt, wenn ein Ereignis eintritt. Das macht sie ideal für Aufgaben, die schnell erledigt oder nicht kontinuierlich ausgeführt werden sollen.
In diesem Lab erfahren Sie, wie Sie mit dem Google Cloud SDK eine Cloud Run-Funktion erstellen, bereitstellen und testen, die eine BigQuery-Tabelle lädt.
Aufgaben
- Cloud Run-Funktion erstellen
- Cloud Run-Funktion bereitstellen und testen
- Daten in BigQuery und Cloud Run-Funktionslogs ansehen
Einrichtung und Anforderungen
Für jedes Lab werden Ihnen ein neues Google Cloud-Projekt und die entsprechenden Ressourcen für eine bestimmte Zeit kostenlos zur Verfügung gestellt.
-
Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Pop-up-Fenster 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 eine Liste der Google Cloud-Produkte und ‑Dienste aufrufen möchten, klicken Sie oben links auf das Navigationsmenü oder geben Sie den Namen des Produkts oder Dienstes in das Feld Suchen ein.
Google Cloud Shell aktivieren
Google Cloud Shell ist eine virtuelle Maschine, auf der Entwicklertools installiert sind. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud.
Mit Google Cloud Shell erhalten Sie Befehlszeilenzugriff auf Ihre Google Cloud-Ressourcen.
-
Klicken Sie in der Cloud Console in der rechten oberen Symbolleiste auf „Cloud Shell öffnen“.

-
Klicken Sie auf Weiter.
Die Bereitstellung und Verbindung mit der Umgebung dauert einen kleinen Moment. Wenn Sie verbunden sind, sind Sie auch bereits authentifiziert und das Projekt ist auf Ihre PROJECT_ID eingestellt. Beispiel:

gcloud ist das Befehlszeilentool für Google Cloud. Das Tool ist in Cloud Shell vorinstalliert und unterstützt die Tab-Vervollständigung.
- Sie können den aktiven Kontonamen mit diesem Befehl auflisten:
gcloud auth list
Ausgabe:
Konten mit Anmeldedaten:
- @.com (aktiv)
Beispielausgabe:
Konten mit Anmeldedaten:
- google1623327_student@qwiklabs.net
- Sie können die Projekt-ID mit diesem Befehl auflisten:
gcloud config list project
Ausgabe:
[core]
Projekt =
Beispielausgabe:
[core]
Projekt = qwiklabs-gcp-44776a13dea667a6
Hinweis:
Die vollständige Dokumentation zu gcloud finden Sie in der Übersicht zur gcloud CLI.
Aufgabe 1: APIs aktivieren
In dieser Aufgabe aktivieren Sie die relevanten APIs, bevor Sie die Cloud Run-Funktionen erstellen.
- Führen Sie in Cloud Shell den folgenden Befehl aus, um die Variable für die Projekt-ID festzulegen:
export PROJECT_ID=$(gcloud config get-value project)
- Führen Sie die folgenden Befehle aus, um die Variable „Region“ festzulegen:
export REGION={{{project_0.default_region | "REGION"}}}
gcloud config set compute/region $REGION
- Führen Sie die folgenden Befehle aus, um die Konfigurationsvariablen festzulegen:
gcloud config set run/region $REGION
gcloud config set run/platform managed
gcloud config set eventarc/location $REGION
- Führen Sie die folgenden Befehle aus, um alle erforderlichen Dienste zu aktivieren:
gcloud services enable \
artifactregistry.googleapis.com \
cloudfunctions.googleapis.com \
cloudbuild.googleapis.com \
eventarc.googleapis.com \
run.googleapis.com \
logging.googleapis.com \
pubsub.googleapis.com
Hinweis: Bei Eventarc kann es einige Minuten dauern, bis alle Berechtigungen an den Dienst-Agent weitergegeben wurden.
Aufgabe 2: Erforderliche Berechtigungen festlegen
In dieser Aufgabe gewähren Sie dem Standarddienstkonto von Compute Engine die Möglichkeit, Eventarc-Ereignisse zu empfangen, und dem Cloud Storage-Dienst-Agent die Berechtigung, Nachrichten in Pub/Sub-Themen zu veröffentlichen. So ermöglichen Sie ereignisgesteuerte Workflows und durch Speicher ausgelöste Aktionen.
- Führen Sie in Cloud Shell den folgenden Befehl aus, um die Variable PROJECT_NUMBER festzulegen:
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
- Führen Sie den folgenden Befehl aus, um dem Compute Engine-Standarddienstkonto in Ihrem Projekt die erforderlichen Berechtigungen zum Empfangen von Ereignissen von Eventarc zu gewähren:
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/artifactregistry.reader"
- Führen Sie die folgenden Befehle aus, um den Cloud Storage-Dienst-Agent für Ihr Projekt abzurufen und ihm die Berechtigung zum Veröffentlichen von Nachrichten in Pub/Sub-Themen zu gewähren:
SERVICE_ACCOUNT="$(gcloud storage service-agent --project=$PROJECT_ID)"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${SERVICE_ACCOUNT}" \
--role='roles/pubsub.publisher'
Aufgabe 3: Funktion erstellen
In dieser Aufgabe erstellen Sie eine einfache Funktion namens loadBigQueryFromAvro. Diese Funktion liest eine Avro-Datei, die in Cloud Storage hochgeladen wird, und erstellt und lädt dann eine Tabelle in BigQuery.
- Führen Sie in Cloud Shell den folgenden Befehl aus, um eine Datei mit dem Namen
index.js
zu erstellen und zu öffnen:
nano index.js
- Kopieren Sie den folgenden Code für die Cloud Functions-Funktion in die Datei
index.js
:
/**
* index.js Cloud Function - Avro on GCS to BQ
*/
const {Storage} = require('@google-cloud/storage');
const {BigQuery} = require('@google-cloud/bigquery');
const storage = new Storage();
const bigquery = new BigQuery();
exports.loadBigQueryFromAvro = async (event, context) => {
try {
// Check for valid event data and extract bucket name
if (!event || !event.bucket) {
throw new Error('Invalid event data. Missing bucket information.');
}
const bucketName = event.bucket;
const fileName = event.name;
// BigQuery configuration
const datasetId = 'loadavro';
const tableId = fileName.replace('.avro', '');
const options = {
sourceFormat: 'AVRO',
autodetect: true,
createDisposition: 'CREATE_IF_NEEDED',
writeDisposition: 'WRITE_TRUNCATE',
};
// Load job configuration
const loadJob = bigquery
.dataset(datasetId)
.table(tableId)
.load(storage.bucket(bucketName).file(fileName), options);
await loadJob;
console.log(`Job ${loadJob.id} completed. Created table ${tableId}.`);
} catch (error) {
console.error('Error loading data into BigQuery:', error);
throw error;
}
};
- Drücken Sie in nano (Strg + X), dann (Y) und dann die Eingabetaste, um die Datei zu speichern.
Funktion erstellen
Aufgabe 4: Cloud Storage-Bucket und BigQuery-Dataset erstellen
In dieser Aufgabe richten Sie die Hintergrundinfrastruktur zum Speichern von Assets ein, die zum Aufrufen der Cloud Run-Funktion verwendet werden (ein Cloud Storage-Bucket). Anschließend speichern Sie die Ausgabe in BigQuery, wenn sie abgeschlossen ist.
- Führen Sie in Cloud Shell den folgenden Befehl aus, um einen neuen Cloud Storage-Bucket als Staging-Speicherort zu erstellen:
gcloud storage buckets create gs://$PROJECT_ID --location=$REGION
- Führen Sie den folgenden Befehl aus, um ein BQ-Dataset zum Speichern der Daten zu erstellen:
bq mk -d loadavro
Cloud Storage-Bucket und BigQuery-Dataset erstellen
Aufgabe 5: Funktion bereitstellen
In dieser Aufgabe stellen Sie die neue Cloud Run-Funktion bereit und lösen sie aus, damit die Daten in BigQuery geladen werden.
- Führen Sie in Cloud Shell den folgenden Befehl aus, um die beiden JavaScript-Bibliotheken zu installieren, mit denen Sie Daten aus Cloud Storage lesen und die Ausgabe in BigQuery speichern können:
npm install @google-cloud/storage @google-cloud/bigquery
- Führen Sie den folgenden Befehl aus, um die Funktion bereitzustellen:
gcloud functions deploy loadBigQueryFromAvro \
--gen2 \
--runtime nodejs20 \
--source . \
--region $REGION \
--trigger-resource gs://$PROJECT_ID \
--trigger-event google.storage.object.finalize \
--memory=512Mi \
--timeout=540s \
--service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com
Hinweis: Wenn eine Fehlermeldung zur Weitergabe des Eventarc-Dienst-Agents angezeigt wird, warten Sie einige Minuten und versuchen Sie es dann noch einmal.
- Führen Sie den folgenden Befehl aus, um zu prüfen, ob der Trigger erfolgreich erstellt wurde. Die Ausgabe sollte in etwa so aussehen:
gcloud eventarc triggers list --location=$REGION
NAME: loadbigqueryfromavro-177311
TYPE: google.cloud.storage.object.v1.finalized
DESTINATION: Cloud Functions: loadBigQueryFromAvro
ACTIVE: Yes
LOCATION: europe-west1
- Führen Sie den folgenden Befehl aus, um die Avro-Datei herunterzuladen, die von der Cloud Run-Funktion zur Speicherung in BigQuery verarbeitet wird:
wget https://storage.googleapis.com/cloud-training/dataengineering/lab_assets/idegc/campaigns.avro
- Führen Sie den folgenden Befehl aus, um die Avro-Datei in den Cloud Storage-Bucket „staging“ zu verschieben, den Sie zuvor erstellt haben. Dadurch wird die Cloud Run-Funktion ausgelöst:
gcloud storage cp campaigns.avro gs://{{{project_0.project_id |PROJECT_ID}}}
Funktion bereitstellen.
Aufgabe 6: Prüfen, ob die Daten in BigQuery geladen wurden
In dieser Aufgabe prüfen Sie, ob die von der Cloud Run-Funktion verarbeiteten Daten erfolgreich in BigQuery geladen wurden. Dazu fragen Sie die Tabelle loadavro.campaigns
mit dem Befehl bq
ab.
- Führen Sie in Cloud Shell den folgenden Befehl aus, um die Daten in der neuen Tabelle in BigQuery mit dem Befehl bq aufzurufen:
bq query \
--use_legacy_sql=false \
'SELECT * FROM `loadavro.campaigns`;'
Hinweis: Die Cloud Run-Funktion wird in der Regel sehr schnell verarbeitet, aber es ist möglich, dass die für BigQuery ausgeführte Abfrage keine Ergebnisse zurückgibt. Warten Sie in diesem Fall einen Moment und führen Sie die Abfrage noch einmal aus.
Die Abfrage sollte Ergebnisse ähnlich den folgenden zurückgeben:
Beispielausgabe:
+------------+--------+---------------------+--------+---------------------+----------+-----+
| created_at | period | campaign_name | amount | advertising_channel | bid_type | id |
+------------+--------+---------------------+--------+---------------------+----------+-----+
| 2020-09-17 | 90 | NA - Video - Other | 41 | Video | CPC | 81 |
| 2021-01-19 | 30 | NA - Video - Promo | 325 | Video | CPC | 137 |
| 2021-06-28 | 30 | NA - Video - Promo | 78 | Video | CPC | 214 |
| 2021-03-15 | 30 | EU - Search - Brand | 465 | Search | CPC | 170 |
| 2022-01-01 | 30 | EU - Search - Brand | 83 | Search | CPC | 276 |
| 2020-02-18 | 30 | EU - Search - Brand | 30 | Search | CPC | 25 |
| 2021-06-08 | 30 | EU - Search - Brand | 172 | Search | CPC | 201 |
| 2020-11-29 | 60 | EU - Search - Other | 83 | Search | CPC | 115 |
| 2021-09-11 | 30 | EU - Search - Other | 86 | Search | CPC | 237 |
| 2022-02-17 | 30 | EU - Search - Other | 64 | Search | CPC | 296 |
+------------+--------+---------------------+--------+---------------------+----------+-----+
Aufgabe 7: Logs ansehen
In dieser Aufgabe rufen Sie alle Logeinträge ab, die mit Ihrem Dienst namens loadBigQueryFromAvro verknüpft sind.
- Führen Sie in Cloud Shell den folgenden Befehl aus, um die Logs für Ihre Cloud Run-Funktion zu prüfen:
gcloud logging read "resource.labels.service_name=loadBigQueryFromAvro"
Die Meldungen im Log sehen in etwa so aus:
resource:
labels:
configuration_name: loadbigqueryfromavro
location: europe-west1
project_id: qwiklabs-gcp-04-16fde64676e4
revision_name: loadbigqueryfromavro-00001-wim
service_name: loadbigqueryfromavro
type: cloud_run_revision
spanId: '5804952652695382607'
textPayload: |
Job undefined completed. Created table campaigns.
timestamp: '2025-03-10T17:24:43.560594Z'
Das wars! Sie haben das Lab erfolgreich abgeschlossen.
Sie haben mit dem Google Cloud SDK eine Cloud Run-Funktion erstellt, bereitgestellt und getestet, die eine BigQuery-Tabelle erstellt und geladen hat.
© 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.