Usa Firestore per configurare un database cloud NoSQL scalabile per il tuo Cloud Run completamente gestito di Google Cloud. Firestore è un database NoSQL flessibile e scalabile per applicazioni mobile, web lo sviluppo del server.
Utilizzo dell'integrazione di Cloud Run descritto in questa pagina, puoi connettere rapidamente il tuo Cloud Run a un nuovo database Firestore.
Prima di iniziare
- Assicurati che il servizio Cloud Run con cui stai eseguendo l'integrazione sia è già stato eseguito il deployment.
- Consulta la pagina dei prezzi di Firestore. Ti viene addebitata una fattura per singole di risorse utilizzate nell'integrazione.
Ruoli obbligatori
Per utilizzare le integrazioni di Cloud Run, tu o l'amministratore dovete concedere ruoli IAM su due entità diverse.
Fai clic per visualizzare i ruoli richiesti per il tuo Account Google
Per ottenere le autorizzazioni necessarie per utilizzare Cloud Run integrazioni, chiedi all'amministratore di concederti Account Google: i seguenti ruoli IAM sul tuo progetto:
- Sviluppatore Cloud Run (
roles/run.developer
) - Visualizzatore Compute (
roles/compute.viewer
) - Sviluppatore di integrazioni serverless (
roles/runapps.developer
) - Operatore per integrazioni serverless (
roles/runapps.operator
) - Utente account di servizio (
roles/iam.serviceAccountUser
)
Fai clic per visualizzare i ruoli richiesti per l'account di servizio
Per eseguire il deployment del servizio Cloud Run, puoi utilizzare il cluster creato automaticamente l'account di servizio predefinito di Compute Engine o specifica account di servizio gestito dall'utente. L'account di servizio deve avere i ruoli seguenti:
- Sviluppatore Cloud Run (
roles/run.developer
) - Writer bucket di log (
roles/logging.bucketWriter
) - Utente account di servizio (
roles/iam.serviceAccountUser
) - Storage Admin (
roles/storage.admin
) - Amministratore Firebase (
roles/firebase.admin
) - Amministratore IAM progetto (
roles/projectIAM.admin
)
Connetti un servizio a un nuovo database Firestore
Qualsiasi modifica alla configurazione porta la creazione di una nuova revisione. Anche le revisioni successive ricevono automaticamente di questa configurazione, a meno che non apporti aggiornamenti espliciti per modificarla.
Puoi connettere un servizio Cloud Run a un database Firestore utilizzando il comando nella console Google Cloud o dalla riga di comando.
Console
Nella console Google Cloud, vai alla pagina Cloud Run.
Nell'elenco dei servizi, fai clic sul servizio che vuoi utilizzare e integrazione.
Fai clic sulla scheda Integrations (Integrazioni).
Fai clic su Aggiungi integrazione.
Fai clic su Database Firestore.
Utilizza il nome predefinito o cambia il nome in base al valore che vuoi utilizzare.
Se ti viene richiesto di abilitare un elenco di API, fai clic su Abilita e attendi che API da abilitare.
In Risorse, nota che le nuove risorse che verranno create come risorse come risultato di questa integrazione.
Fai clic su Invia e attendi che l'integrazione e le risorse vengano completate è stato creato. L'operazione potrebbe richiedere fino a 15 minuti.
gcloud
Esegui l'aggiornamento all'ultima versione di Google Cloud CLI:
gcloud components update
Crea l'integrazione:
gcloud beta run integrations create \ --type=firestore \ --service=SERVICE \ --region REGION
Sostituisci:
- SERVICE con il nome del tuo servizio Cloud Run.
Se vuoi, includi il flag
--service-account=SERVICE_ACCOUNT_EMAIL
.SERVICE_ACCOUNT_EMAIL con il servizio gestito dall'utente indirizzo email dell'account (
PROJECT_NUMBER-compute@developer.gserviceaccount.com
) usato per il deployment del servizio. Ometti questo flag se vuoi utilizzare account di servizio Compute predefinito (SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com
).Per continuare a utilizzare l'account di servizio specificato durante il deployment per le integrazioni di Cloud Run, esegui questo comando:
gcloud config set runapps/deployment-service-account
Attendi fino a 15 minuti, durante i quali un Firestore completamente configurato viene creato e connesso. Inoltre, una nuova revisione di Cloud Run automaticamente creato, incluse le variabili di ambiente che identificano il database. Al termine del processo, viene visualizzato il seguente messaggio:
[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.
Puoi controllare lo stato eseguendo
gcloud beta run integrations describe
.
Visualizza le integrazioni del database Firestore
Per visualizzare lo stato attuale delle integrazioni di database Firestore per per il tuo servizio Cloud Run:
Console
Nella console Google Cloud, vai alla pagina Cloud Run.
Nell'elenco dei servizi, fai clic sul servizio che vuoi utilizzare e integrazione.
Fai clic sulla scheda Integrations (Integrazioni).
Individua l'integrazione del database Firestore che ti interessa e fai clic su Visualizza dettagli.
gcloud
Utilizza il seguente comando per visualizzare un elenco delle integrazioni disponibili:
gcloud beta run integrations list
Utilizzando un nome dall'elenco restituito, visualizza i relativi dettagli:
gcloud beta run integrations describe INTEGRATION_NAME
Sostituisci INTEGRATION_NAME con il nome del tuo Integrazione del database Firestore.
Elimina le integrazioni di database Firestore
L'eliminazione di un'integrazione comporta anche l'eliminazione di tutte le risorse Google Cloud associati all'integrazione, ma non eliminerà i tuoi dal servizio Cloud Run.
Per eliminare un'integrazione di database Firestore dal tuo Servizio Cloud Run:
Console
Nella console Google Cloud, vai alla pagina Cloud Run.
Fai clic sul servizio da cui vuoi eliminare un'integrazione.
Fai clic sulla scheda Integrations (Integrazioni).
Individua l'integrazione del database Firestore che ti interessa e fai clic sull'icona dei puntini di sospensione a destra dell'integrazione, quindi fai clic su Elimina.
gcloud
Utilizza il seguente comando per visualizzare un elenco delle integrazioni disponibili:
gcloud beta run integrations list
Utilizzando un nome dall'elenco restituito, elimina l'integrazione:
gcloud beta run integrations delete INTEGRATION_NAME
Sostituisci:
- INTEGRATION_NAME con il nome del tuo Integrazione del database Firestore.
Facoltativamente, puoi utilizzare le seguenti opzioni di flag:
Opzione Descrizione --service-account
L'indirizzo email dell'account di servizio gestito dall'utente per eseguire l'operazione di eliminazione.
Accedi al database Firestore nel tuo codice
Dopo aver completato l'integrazione, Cloud Run
aggiunge automaticamente la variabile di ambiente FIRESTORE_DB_NAME
da utilizzare nel codice di servizio Cloud Run.
Codice campione per i servizi che utilizzano Firestore
Consulta la documentazione di Firestore per Esempi di codice della libreria Firestore Server o il seguente esempio:
L'esempio Python nelle istruzioni seguenti richiede un database Firestore creato con l'integrazione di Cloud Run, in esecuzione in modalità Firestore nativa. Devi anche avere un repository esistente in cui eseguire il push del codice.
Crea una directory per i file di esempio:
mkdir SERVICE
Sostituisci SERVICE con il nome del tuo servizio Cloud Run.
Configurare l'autenticazione Docker:
gcloud auth configure-docker REGION-docker.pkg.dev
Sostituisci REGION con la regione Google Cloud del servizio.
Crea un file
requirements.txt
nella directory SERVICE e aggiungi quanto segue:flask google-cloud-firestore
Crea un file
Dockerfile
nella directory SERVICE e aggiungi quanto segue:FROM python:3.9-slim WORKDIR /app COPY requirements.txt ./ RUN pip install -r requirements.txt COPY . . EXPOSE 8080 CMD ["python", "app.py"]
Crea un file
app.py
nella directory SERVICE e aggiungi quanto segue: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)
Vai alla directory SERVICE:
cd SERVICE
Sostituisci SERVICE con il nome della cartella del servizio Cloud Run.
Crea l'immagine Docker:
docker build -t REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:latest .
Sostituisci:
- REGION con la regione Google Cloud del servizio.
- PROJECT_ID con l'ID progetto Google Cloud.
- REPOSITORY_NAMEcon il nome del repository Artifact Registry.
- IMAGE_NAME con un riferimento all'immagine container, ad esempio
us-docker.pkg.dev/cloudrun/container/job:latest
.
Esegui il push dell'immagine Docker:
docker push REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:latest
Sostituisci:
- REGION con la regione Google Cloud del servizio.
- PROJECT_ID con l'ID progetto Google Cloud.
- REPOSITORY_NAMEcon il nome del repository Artifact Registry.
- IMAGE_NAME con un riferimento all'immagine container, ad esempio
us-docker.pkg.dev/cloudrun/container/job:latest
.
Esegui il deployment del servizio in Cloud Run:
gcloud run deploy SERVICE_NAME --image REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:latest --allow-unauthenticated --region REGION
Sostituisci REGION con la regione Google Cloud del servizio. PROJECT_ID con l'ID progetto Google Cloud. REPOSITORY_NAMEcon il nome del repository Artifact Registry IMAGE_NAME con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/job:latest.
Al termine del deployment, l'URL del servizio viene visualizzato accanto all'URL di testo.
Configura l'integrazione di Firestore per Cloud Run:
gcloud beta run integrations create \ --type=firestore \ --service=SERVICE_NAME \ --region REGION
Al termine del deployment, inserisci l'URL del servizio nei seguenti comandi di lettura e scrittura:
Scrivi dati:
curl -X POST SERVICE_URL/data -H "Content-Type: application/json" -d '{"name": "Alice", "city": "New York"}'
Dati letti:
curl https://SERVICE_URL/data
Per visualizzare risultati diversi restituiti dal comando di lettura dei dati, puoi modificare il nome e la città nel comando di scrittura.
Limitazioni
- Le integrazioni di Cloud Run supportato solo in determinate regioni. Se utilizza una regione non supportata da Cloud Run integrazioni, consulta le Utilizza una libreria client lato server.
- Il database predefinito Firestore non è supportato. Questa integrazione supporta solo la creazione di database Firestore denominati.