In dieser Anleitung erfahren Sie, wie Sie eine HTTP-Cloud Run-Funktion schreiben, die Cloud Spanner-Ergebnisse zurückgibt.
Ziele
Schreiben, bereitstellen und auslösen Sie eine 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. Spanner pricing.
Informationen zu den Kosten für die Verwendung von Cloud Run, einschließlich kostenloser Aufrufe, finden Sie unter Cloud Run – Preise.
Hinweis
In diesem Dokument wird davon ausgegangen, dass Ihnen eine Cloud Spanner-Instanz namens
test-instanceund eine Datenbank namensexample-dbmit dem Musik anwendungs schema zur Verfügung stehen. Eine Anleitung zum Erstellen einer Instanz und einer Datenbank mit dem Musikanwendung schema finden Sie unter Schnellstart mit der Konsole 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
Weitere Informationen finden Sie im Einrichtungsleitfaden für 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-Quellentwickler (
roles/run.sourceDeveloper) für Ihr Projekt - Service Usage-Nutzer (
roles/serviceusage.serviceUsageConsumer) für den Cloud Run-Dienst - Dienstkontonutzer (
roles/iam.serviceAccountUser) für die Dienstidentität - Cloud Spanner-Administrator (
roles/spanner.admin) für die Cloud 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 mit Google 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.
Erforderliche Rollen für das Cloud Build-Dienstkonto aufrufen
Cloud Build verwendet automatisch das
Compute Engine-Standarddienstkonto als Standard-Cloud Build-Dienstkonto, um Ihren Quellcode und Ihre
Cloud Run-Ressource zu erstellen, es sei denn, Sie überschreiben dieses Verhalten. Damit
Cloud Build Ihre Quellen erstellen kann, bitten Sie Ihren Administrator, dem
Cloud Run-Builder
(roles/run.builder) die Rolle Compute Engine-Standarddienstkonto
in Ihrem Projekt 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 Cloud
Projektnummer und PROJECT_ID durch Ihre Google Cloud
Projekt-ID. Eine detaillierte Anleitung zum Ermitteln der Projekt-ID und der Projektnummer,
siehe 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.
- Cloud Spanner-Datenbankleser (
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 zu dem 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 der Google Cloud Konsole 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 „Erste Schritte“-Anleitung absolviert 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.