In dieser Anleitung wird gezeigt, wie Sie eine HTTP-Cloud Run-Funktion schreiben, die Spanner-Ergebnisse zurückgibt.
Ziele
Schreiben, Bereitstellen und Auslösen einer HTTP-Funktion, die auf Cloud Spanner zugreift.
Kosten
In diesem Dokument werden Cloud Spanner und Cloud Run verwendet, zwei kostenpflichtige Komponenten von Google Cloud.
Informationen zu den Kosten für die Verwendung von Cloud Spanner finden Sie auf der Seite zu den Preisen für Cloud Spanner.
Informationen zu den Kosten für die Verwendung von Cloud Run, einschließlich kostenloser Aufrufe, finden Sie unter Cloud Run-Preise.
Hinweise
In diesem Thema wird davon ausgegangen, dass Ihnen eine Cloud Spanner-Instanz namens
test-instanceund eine Datenbank namensexample-dbmit dem Musikanwendungsschema zur Verfügung stehen. Weitere Informationen zum Erstellen von Instanzen und Datenbanken mit dem Musikanwendungsschema finden Sie unter Schnellstart: Console verwenden oder in den Anleitungen für erste Schritte mit Node.js oder Python.Aktivieren Sie die Cloud Run und Cloud Build APIs.
Installieren und initialisieren Sie die gcloud CLI.
Wenn Sie die gcloud CLI bereits installiert haben, aktualisieren Sie sie mit dem folgenden Befehl:
gcloud components updateBereiten Sie Ihre Entwicklungsumgebung vor:
Node.js
Weitere Informationen finden Sie im Einrichtungsleitfaden für Node.js.
Python
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:
-
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 -
Spanner-Administrator (
roles/spanner.admin) für die Spanner-Instanz
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 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 Run-Builder“ für das Compute Engine-Standarddienstkonto übertragen wurde.
Rollen für die Dienstidentität
Sie müssen der Dienstidentität, die Sie für den Cloud Run-Dienst verwenden, die folgende IAM-Rolle zuweisen.
- Spanner-Datenbank-Leser (
roles/spanner.databaseReader)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Anwendung vorbereiten
Klonen Sie das Repository der Beispiel-App auf Ihren lokalen Computer:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.gitSie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.gitSie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Wechseln Sie in das Verzeichnis, das den Beispielcode für Cloud Run Functions für den Zugriff auf Cloud Spanner enthält:
Node.js
cd nodejs-docs-samples/functions/spannerPython
cd python-docs-samples/functions/spannerSehen Sie sich den Beispielcode an:
Node.js
Python
Die Funktion sendet eine SQL-Abfrage, um alle
Albums-Daten aus Ihrer Datenbank abzurufen. Sie wird ausgeführt, wenn Sie eine HTTP-Anfrage an den Endpunkt der Funktion stellen.
Funktion bereitstellen
Führen Sie zum Bereitstellen der Funktion mit einem HTTP-Trigger den folgenden Befehl im Verzeichnis spanner aus:
Node.js
gcloud run deploy nodejs-spanner-function \
--source . \
--region REGION \
--function spannerQuickstart \
--base-image RUNTIME_ID \
--log-httpPython
gcloud run deploy python-spanner-function \
--source . \
--region REGION \
--function spanner_read_data \
--base-image RUNTIME_ID \
--log-httpErsetzen Sie:
REGION durch den Namen der Google Cloud Region, in der Sie die Funktion bereitstellen möchten (z. B.
us-west1).RUNTIME_ID durch die entsprechende Laufzeit-ID, z. B.
nodejs22. Weitere Informationen finden Sie unter Unterstützte Sprachlaufzeiten und Basis-Images.
Die Bereitstellung der Funktion kann bis zu zwei Minuten dauern.
Beachten Sie den url-Wert, der zurückgegeben wird, wenn die Bereitstellung Ihrer Funktion abgeschlossen ist. Sie benötigen diesen Wert, wenn Sie die Funktion auslösen.
Sie können Ihre bereitgestellten Funktionen in derGoogle Cloud Console auf der Seite Cloud Run sehen. Sie können auf dieser Seite auch Funktionen erstellen und bearbeiten sowie Details und Diagnosen für Ihre Funktionen abrufen.
Funktion auslösen
Senden Sie einen HTTP-Anfrage an Ihre Funktion:
curl URL
Ersetzen Sie URL durch den URL-Wert, der zurückgegeben wird, wenn die Bereitstellung der Funktion abgeschlossen ist.
Sie sollten eine Ausgabe sehen, die die Ergebnisse der SQL-Abfrage enthält, vorausgesetzt, Sie haben eine Startanleitung durchgearbeitet und die Datenbank aufgefüllt:
SingerId: 2, AlbumId: 2, AlbumTitle: Forever Hold Your Peace
SingerId: 1, AlbumId: 2, AlbumTitle: Go, Go, Go
SingerId: 2, AlbumId: 1, AlbumTitle: Green
SingerId: 2, AlbumId: 3, AlbumTitle: Terrified
SingerId: 1, AlbumId: 1, AlbumTitle: Total Junk
Sie können auch die URL der Funktion im Browser aufrufen, um das Ergebnis der SQL-Abfrage zu sehen.
Bereinigen
So vermeiden Sie, dass Ihrem Google Cloud -Konto für die in diesem Dokument verwendeten Ressourcen für Cloud Spanner und Cloud Run-Funktionen weitere Gebühren berechnet werden:
Löschen Sie die Instanz:
gcloud CLI instances delete test-instanceLöschen Sie den Cloud Run-Dienst, den Sie in dieser Anleitung bereitgestellt haben:
Node.js
gcloud run services delete nodejs-spanner-functionPython
gcloud run services delete python-spanner-function
Nächste Schritte
- Weitere Informationen zum Schreiben von Cloud Run Functions-Funktionen.
- Weitere Informationen zum Bereitstellen von Cloud Run Functions-Funktionen.
- Weitere Informationen zum Auslösen von Cloud Run Functions-Funktionen.