In dieser Anleitung erfahren Sie, wie Sie eine HTTP-Cloud Run-Funktion schreiben, die eine Abfrage an BigQuery sendet.
Hinweise
Prüfen Sie, ob Sie ein neues Projekt für Cloud Run eingerichtet haben, wie auf der Seite Einrichtung beschrieben.
Aktivieren Sie die Artifact Registry API, die Cloud Build API und die Cloud Run Admin API:
gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com
Wenn Sie einer Domaineinschränkung zur Organisation nicht eingeschränkter Aufrufe für Ihr Projekt unterliegen, müssen Sie auf Ihren bereitgestellten Dienst zugreifen, wie unter Private Dienste testen beschrieben.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Bereitstellen von Cloud Run-Diensten aus der Quelle benötigen:
-
Cloud Run Source Developer (
roles/run.sourceDeveloper
) im Cloud Run-Job -
Rolle Nutzer der Dienstnutzung (
roles/serviceusage.serviceUsageConsumer
) im Cloud Run-Job -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) für die Dienstidentität -
BigQuery-Jobnutzer (
roles/bigquery.jobUser
) für die Dienstidentität
Eine Liste der IAM-Rollen und -Berechtigungen im Zusammenhang mit Cloud Run finden Sie unter IAM-Rollen für Cloud Run und IAM-Berechtigungen für Cloud Run. Wenn Ihr Cloud Run-Dienst mitGoogle Cloud APIs wie Cloud-Clientbibliotheken verknüpft ist, lesen Sie die Konfigurationsanleitung für Dienstidentitäten. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Bereitstellungsberechtigungen und Zugriff verwalten.
Rollen für das Dienstkonto
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/cloudbuild.builds.builder
Ersetzen Sie PROJECT_NUMBER
durch Ihre Google CloudProjektnummer und PROJECT_ID
durch Ihre Google CloudProjekt-ID. Eine detaillierte Anleitung zum Ermitteln der Projekt-ID und der Projektnummer finden Sie unter Projekte erstellen und verwalten.
Es dauert einige Minuten, bis die Zuweisung der Rolle „Cloud Build-Dienstkonto“ für das Compute Engine-Standarddienstkonto übertragen wurde.
Anwendung vorbereiten
Klonen Sie das Beispielanwendungs-Repository auf Ihren lokalen Rechner:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Sie können auch das Beispiel als ZIP-Datei herunterladen und entpacken.
Wechseln Sie zu dem Verzeichnis, das den Beispielcode enthält:
cd nodejs-docs-samples/functions/v2/helloBigQuery
Sehen Sie sich den Beispielcode an: Das Beispiel sendet eine Abfrage für Wörter, die im angegebenen Dataset mindestens 400 Mal vorkommen, und gibt das Ergebnis zurück.
Funktion implementieren
So stellen Sie die Funktion mit einem HTTP-Trigger bereit:
Führen Sie den folgenden Befehl in dem Verzeichnis aus, in dem sich der Beispielcode befindet:
gcloud beta run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE \ --region REGION \ --allow-unauthenticated
Ersetzen Sie:
FUNCTION durch den Namen der Funktion, die Sie bereitstellen, z. B.
my-bigquery-function
. Sie können diesen Parameter auch weglassen, werden dann jedoch nach dem Namen gefragt.FUNCTION_ENTRYPOINT durch den Einstiegspunkt zur Funktion in Ihrem Quellcode. Dies ist der Code, der von Cloud Run ausgeführt wird, wenn Ihre Funktion ausgeführt wird. Der Wert dieses Flags muss ein Funktionsname oder ein voll qualifizierter Klassenname sein, der in Ihrem Quellcode vorhanden ist. Der Einstiegspunkt, den Sie für die Beispielfunktion angeben müssen, ist
helloBigQuery
.BASE_IMAGE durch die Basis-Image-Umgebung für Ihre Funktion, z. B.
nodejs22
. Weitere Informationen zu Basis-Images und den in den einzelnen Images enthaltenen Paketen finden Sie unter Basis-Images für Laufzeiten.REGION durch die Google Cloud Region, in der Sie die Funktion bereitstellen möchten. Beispiel:
us-central1
.
Optional:
- Wenn Sie eine öffentliche HTTP-Funktion erstellen, z. B. einen Webhook, geben Sie das Flag
--allow-unauthenticated
an. Mit diesem Flag wird der SonderkennzeichnungallUser
die Rolle „Cloud Run IAM Invoker“ zugewiesen. Sie können die Einstellung mit IAM bearbeiten, nachdem Sie den Dienst erstellt haben.
Funktion testen
Kopieren Sie nach der Bereitstellung der Funktion das Attribut
uri
.Rufen Sie diesen URI in Ihrem Browser auf.
Sie sollten eine Liste der Wörter sehen, die den Abfragekriterien entsprechen und wie oft jedes Wort im Ziel-Dataset angezeigt wird.
Bereinigen
Während für Cloud Run keine Kosten anfallen, wenn der Dienst nicht verwendet wird, wird Ihnen dennoch das Speichern des Container-Images in Artifact Registry möglicherweise in Rechnung gestellt. Sie können das Container-Image löschen oder Ihr Google Cloud -Projekt löschen, um Kosten zu vermeiden. Wenn Sie Ihr Google Cloud -Projekt löschen, wird die Abrechnung für alle in diesem Projekt verwendeten Ressourcen beendet.
- 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.