In dieser Anleitung wird gezeigt, wie Sie eine HTTP-Cloud Run-Funktion schreiben, die eine Abfrage an BigQuery sendet.
Ziele
In dieser Anleitung wird Folgendes beschrieben:
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Hinweise
- 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Run Admin API, and Cloud Build APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - Richten Sie Ihre Cloud Run-Entwicklungsumgebung in Ihrem Google Cloud -Projekt ein.
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.
-
Cloud Run Source Developer (
roles/run.sourceDeveloper
) in Ihrem Projekt -
Rolle Service Usage Consumer (
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
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Bereitstellen von Cloud Run-Diensten aus der Quelle benötigen:
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 Cloud Build-Dienstkonto
Sie oder Ihr Administrator müssen dem Cloud Build-Dienstkonto die folgende IAM-Rolle zuweisen.
Klicken, um die erforderlichen Rollen für das Cloud Build-Dienstkonto aufzurufen
Cloud Build verwendet automatisch das Compute Engine-Standarddienstkonto als Standard-Cloud Build-Dienstkonto zum Erstellen Ihres Quellcodes und Ihrer Cloud Run-Ressource, sofern Sie dieses Verhalten nicht überschreiben. Damit Cloud Build Ihre Quellen erstellen kann, bitten Sie Ihren Administrator, dem Compute Engine-Standarddienstkonto in Ihrem Projekt die Rolle Cloud Run Builder (roles/run.builder
) zuzuweisen:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Ersetzen Sie PROJECT_NUMBER
durch die Google Cloud
Projektnummer und PROJECT_ID
durch die Google Cloud
Projekt-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 Run-Builder“ 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, das den Beispielcode enthält:
gcloud 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 Runtimes.REGION durch die Google Cloud Region, in der Sie die Funktion bereitstellen möchten. Beispiel:
europe-west1
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 IAM-Rolle „Cloud Run 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
Damit Ihrem Google Cloud -Konto keine zusätzlichen Kosten in Rechnung gestellt werden, löschen Sie alle Ressourcen, die Sie mit dieser Anleitung bereitgestellt haben.
Projekt löschen
Wenn Sie ein neues Projekt für diese Anleitung erstellt haben, löschen Sie das Projekt. Wenn Sie ein vorhandenes Projekt verwendet haben und es beibehalten möchten, ohne die Änderungen in dieser Anleitung hinzuzufügen, löschen Sie die für die Anleitung erstellten Ressourcen.
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.
Anleitungsressourcen löschen
Löschen Sie den Cloud Run-Dienst, den Sie in dieser Anleitung bereitgestellt haben. Für Cloud Run-Dienste fallen erst Kosten an, wenn sie Anfragen empfangen.
Führen Sie den folgenden Befehl aus, um Ihren Cloud Run-Dienst zu löschen:
gcloud run services delete SERVICE-NAME
Ersetzen Sie SERVICE-NAME durch den Namen Ihres Dienstes.
Sie können Cloud Run-Dienste auch über die Google Cloud Console löschen.
Entfernen Sie die Konfiguration der Standardregion
gcloud
, die Sie während der Einrichtung für die Anleitung hinzugefügt haben:gcloud config unset run/region
Entfernen Sie die Projektkonfiguration:
gcloud config unset project