Verwenden Sie Firestore, um eine skalierbare NoSQL-Cloud-Datenbank für Ihren Cloud Run-Dienst einzurichten. Firestore ist eine flexible, skalierbare NoSQL-Datenbank für die Mobil-, Web- und Serverentwicklung.
Mit der auf dieser Seite beschriebenen Cloud Run-Integration können Sie Ihren Cloud Run-Dienst schnell mit einer neuen Firestore-Datenbank verbinden.
Hinweise
- Achten Sie darauf, dass der Cloud Run-Dienst, in den Sie einbinden, bereits bereitgestellt ist.
- Firestore Ihnen werden einzelne Ressourcen in Rechnung gestellt, die von der Einbindung verwendet werden.
Erforderliche Rollen
Damit Sie die Cloud Run-Integrationen verwenden können, müssen Sie oder Ihr Administrator zwei verschiedenen Hauptkonten IAM-Rollen zuweisen.
Klicken, um die erforderlichen Rollen für Ihr Google-Konto anzuzeigen
Bitten Sie Ihren Administrator, Ihrem Google-Konto die folgenden IAM-Rollen für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie für die Verwendung von Cloud Run-Einbindungen benötigen:
- Cloud Run Developer (
roles/run.developer
) - Compute-Betrachter (
roles/compute.viewer
) - Entwickler von serverlosen EInbindungen (
roles/runapps.developer
) - Operator für serverlose Einbindungen (
roles/runapps.operator
) - Dienstkontonutzer (
roles/iam.serviceAccountUser
)
Klicken Sie, um die erforderlichen Rollen für das Dienstkonto aufzurufen
Zum Bereitstellen des Cloud Run-Dienstes können Sie entweder das automatisch erstellte Compute Engine-Standarddienstkonto verwenden oder ein nutzerverwaltetes Dienstkonto angeben. Das Dienstkonto muss die folgenden Rollen haben:
- Cloud Run Developer (
roles/run.developer
) - Log-Bucket-Autor (
roles/logging.bucketWriter
) - Dienstkontonutzer (
roles/iam.serviceAccountUser
) - Storage-Administrator (
roles/storage.admin
) - Firebase-Administrator (
roles/firebase.admin
) - Project IAM Admin (
roles/projectIAM.admin
)
Dienst mit einer neuen Firestore-Datenbank verbinden
Jede Konfigurationsänderung führt zur Erstellung einer neuen Überarbeitung. Für nachfolgende Überarbeitungen gilt automatisch dieselbe Konfigurationseinstellung, sofern Sie sie nicht explizit aktualisieren.
Sie können einen Cloud Run-Dienst über die Console oder die Befehlszeile mit einer Firestore-Datenbank verbinden.
Console
Wechseln Sie in der Google Cloud Console zur Seite Cloud Run.
Klicken Sie in der Liste der Dienste, die Sie in dieser Einbindung verwenden möchten, auf den Dienst.
Klicken Sie auf den Tab Integrations (Integrationen).
Klicken Sie auf Integration hinzufügen.
Klicken Sie auf Firestore-Datenbank.
Verwenden Sie den Standardnamen oder ändern Sie den Namen in den gewünschten Wert.
Wenn Sie aufgefordert werden, eine Liste von APIs zu aktivieren, klicken Sie auf Aktivieren und warten Sie, bis die APIs aktiviert sind.
Unter Ressourcen finden Sie die neuen Ressourcen, die durch diese Einbindung erstellt werden.
Klicken Sie auf Senden und warten Sie, bis die Einbindung und die Ressourcen erstellt sind. Dieser kann bis zu 15 Minuten dauern.
Befehlszeile
Aktualisieren Sie die Google Cloud CLI:
gcloud components update
Integration erstellen:
gcloud beta run integrations create \ --type=firestore \ --service=SERVICE \ --region REGION
Ersetzen Sie:
- SERVICE durch den Namen Ihres Cloud Run-Dienstes.
Fügen Sie optional das Flag
--service-account=SERVICE_ACCOUNT_EMAIL
hinzu.SERVICE_ACCOUNT_EMAIL durch die E-Mail-Adresse des vom Nutzer verwalteten Dienstkontos (
PROJECT_NUMBER-compute@developer.gserviceaccount.com
), die zum Bereitstellen des Dienstes verwendet wird. Lassen Sie dieses Flag weg, wenn Sie das Compute-Standarddienstkonto (SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com
) verwenden möchten.Führen Sie den folgenden Befehl aus, um beim Bereitstellen von Cloud Run-Integrationen das angegebene Dienstkonto weiterhin zu verwenden:
gcloud config set runapps/deployment-service-account
Warten Sie bis zu 15 Minuten. In dieser Zeit wird eine vollständig konfigurierte Firestore-Datenbank erstellt und verbunden. Außerdem wird eine neue Cloud Run-Überarbeitung erstellt, einschließlich Umgebungsvariablen, die die Datenbank identifizieren. Wenn der Vorgang abgeschlossen ist, wird die folgende Meldung angezeigt:
[firestore] integration [firestore-xxx] has been updated successfully. To connect to the Firestore database, utilize the environment variable `FIRESTORE_DB_NAME`. This variable is added to the Cloud Run service for you.
Sie können den Status prüfen, indem Sie
gcloud beta run integrations describe
ausführen.
Firestore-Datenbankintegrationen ansehen
So rufen Sie den aktuellen Status der Firestore-Datenbankintegrationen für Ihren Cloud Run-Dienst auf:
Console
Wechseln Sie in der Google Cloud Console zur Seite Cloud Run.
Klicken Sie in der Liste der Dienste, die Sie in dieser Einbindung verwenden möchten, auf den Dienst.
Klicken Sie auf den Tab Integrations (Integrationen).
Suchen Sie nach der Firestore-Datenbankintegration, die Sie interessiert, und klicken Sie auf Details ansehen.
Befehlszeile
Verwenden Sie den folgenden Befehl, um eine Liste der verfügbaren Integrationen abzurufen:
gcloud beta run integrations list
Zeigen Sie die Details dafür mit einem Namen aus der zurückgegebenen Liste an:
gcloud beta run integrations describe INTEGRATION_NAME
Ersetzen Sie INTEGRATION_NAME durch den Namen der Firestore-Datenbankintegration.
Firestore-Datenbankintegrationen löschen
Beim Löschen einer Einbindung werden auch alle mit dieser Einbindung verknüpften Google Cloud-Ressourcen gelöscht. Der Cloud Run-Dienst wird jedoch nicht gelöscht.
So löschen Sie eine Firestore-Datenbankintegration aus Ihrem Cloud Run-Dienst:
Console
Wechseln Sie in der Google Cloud Console zur Seite Cloud Run.
Klicken Sie auf den Dienst, für den Sie eine Einbindung löschen möchten.
Klicken Sie auf den Tab Integrations (Integrationen).
Suchen Sie die Firebase Datenbank-Integration, die Sie interessiert, und klicken Sie rechts neben der Integration auf Dreipunkt-Symbol und dann auf Löschen.
Befehlszeile
Verwenden Sie den folgenden Befehl, um eine Liste der verfügbaren Integrationen abzurufen:
gcloud beta run integrations list
Löschen Sie die Integration mithilfe eines Namens aus der zurückgegebenen Liste:
gcloud beta run integrations delete INTEGRATION_NAME
Ersetzen Sie:
- INTEGRATION_NAME durch den Namen der Firestore-Datenbankintegration.
Optional können Sie die folgenden Flag-Optionen verwenden:
Wahltaste Beschreibung --service-account
Die E-Mail-Adresse des vom Nutzer verwalteten Dienstkontos, um den Löschvorgang auszuführen.
Über Ihren Code auf die Firestore-Datenbank zugreifen
Nachdem Sie die Integration abgeschlossen haben, fügt Cloud Run automatisch die Umgebungsvariable FIRESTORE_DB_NAME
zur Verwendung in Ihrem Cloud Run-Dienstcode hinzu.
Beispielcode für Dienste mit Firestore
Informationen dazu finden Sie in der Firestore-Dokumentation für Codebeispiele für die Firestore-Serverbibliothek oder schauen Sie sich folgendes Beispiel an:
Für das Python-Beispiel in der folgenden Anleitung ist eine Firestore-Datenbank erforderlich, die mit der Cloud Run-Integration erstellt wurde und im nativen Firestore-Modus ausgeführt wird. Außerdem muss ein Repository vorhanden sein, in das der Code übertragen werden kann.
Erstellen Sie ein Verzeichnis für die Beispieldateien:
mkdir SERVICE
Ersetzen Sie SERVICE durch den Namen Ihres Cloud Run-Dienstes.
Konfigurieren Sie die Docker-Authentifizierung:
gcloud auth configure-docker REGION-docker.pkg.dev
Ersetzen Sie REGION durch die Google Cloud-Region des Dienstes.
Erstellen Sie eine
requirements.txt
-Datei in Ihrem SERVICE-Verzeichnis und fügen Sie Folgendes hinzu:flask google-cloud-firestore
Erstellen Sie eine
Dockerfile
-Datei in Ihrem SERVICE-Verzeichnis und fügen Sie Folgendes hinzu:FROM python:3.9-slim WORKDIR /app COPY requirements.txt ./ RUN pip install -r requirements.txt COPY . . EXPOSE 8080 CMD ["python", "app.py"]
Erstellen Sie eine
app.py
-Datei in Ihrem SERVICE-Verzeichnis und fügen Sie Folgendes hinzu:from flask import Flask, jsonify, request import google.cloud.firestore import os
.app = Flask(name) dbname = os.environ['FIRESTORE_DB_NAME'] db = google.cloud.firestore.Client(database=dbname) # Initialize Firestore client
@app.route('/data', methods=['POST']) def add_data(): data = request.get_json() db.collection('city_person').add(data) return jsonify({'message': 'Data added successfully!'}), 201
@app.route('/data', methods=['GET']) def get_data(): results = db.collection('city_person').stream() data_list = [doc.to_dict() for doc in results] return jsonify(data_list), 200
if name == 'main': app.run(host='0.0.0.0', port=8080, debug=True)
Rufen Sie das Verzeichnis SERVICE auf:
cd SERVICE
Ersetzen Sie SERVICE durch den Namen Ihres Cloud Run-Dienstordners.
Docker-Image erstellen:
docker build -t REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:latest .
Ersetzen Sie:
- REGION durch die Google Cloud-Region des Dienstes.
- PROJECT_ID durch die Google Cloud-Projekt-ID.
- REPOSITORY_NAME durch den Namen des Artifact Registry-Repositorys.
- IMAGE_NAME durch einen Verweis auf das Container-Image, z. B.
us-docker.pkg.dev/cloudrun/container/job:latest
.
Übertragen Sie das Docker-Image per Push:
docker push REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:latest
Ersetzen Sie:
- REGION durch die Google Cloud-Region des Dienstes.
- PROJECT_ID durch die Google Cloud-Projekt-ID.
- REPOSITORY_NAME durch den Namen des Artifact Registry-Repositorys.
- IMAGE_NAME durch einen Verweis auf das Container-Image, z. B.
us-docker.pkg.dev/cloudrun/container/job:latest
.
Stellen Sie den Dienst in Cloud Run bereit:
gcloud run deploy SERVICE_NAME --image REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:latest --allow-unauthenticated --region REGION
Ersetzen: REGION durch die Google Cloud-Region des Dienstes. PROJECT_ID durch die Google Cloud-Projekt-ID. REPOSITORY_NAME durch den Namen des Artifact Registry-Repositorys IMAGE_NAME mit einem Verweis auf das Container-Image, z. B. „us-docker.pkg.dev/cloudrun/container/job:latest“.
Wenn die Bereitstellung abgeschlossen ist, wird die Dienst-URL neben der Text-URL angezeigt.
Konfigurieren Sie die Firestore-Integration für Cloud Run:
gcloud beta run integrations create \ --type=firestore \ --service=SERVICE_NAME \ --region REGION
Geben Sie nach Abschluss der Bereitstellung die Dienst-URL in die folgenden Lese- und Schreibbefehle ein:
Daten schreiben:
curl -X POST SERVICE_URL/data -H "Content-Type: application/json" -d '{"name": "Alice", "city": "New York"}'
Daten lesen:
curl https://SERVICE_URL/data
Wenn Sie verschiedene Ergebnisse sehen möchten, die im Befehl „Read data“ zurückgegeben werden, können Sie den Namen und den Ort im Befehl „Write data“ ändern.
Beschränkungen
- Die Cloud Run-Integrationen werden nur in bestimmten Regionen unterstützt. Falls Sie eine Region verwenden müssen, die nicht von den Cloud Run-Integrationen unterstützt wird, lesen Sie die Informationen unter Serverseitige Clientbibliothek verwenden.
- Die Firestore-Standarddatenbank wird nicht unterstützt. Diese Integration unterstützt nur das Erstellen benannter Firestore-Datenbanken.