Utilizza Firestore per configurare un database cloud NoSQL scalabile per il servizio Cloud Run. Firestore è un database NoSQL flessibile e scalabile per lo sviluppo mobile, web e server.
Utilizzando l'integrazione di Cloud Run descritta in questa pagina, puoi connettere rapidamente il tuo servizio Cloud Run a un nuovo database Firestore.
Prima di iniziare
- Assicurati che sia già stato eseguito il deployment del servizio Cloud Run con cui stai eseguendo l'integrazione.
- Consulta la pagina dei prezzi di Firestore. Ti vengono addebitati i costi per le singole 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 le integrazioni di Cloud Run, chiedi all'amministratore di concedere al tuo Account Google i seguenti ruoli IAM sul 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 l'account di servizio predefinito di Compute Engine creato automaticamente o specificare un 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 alla creazione di una nuova revisione. Anche le revisioni successive riceveranno automaticamente questa impostazione di configurazione, a meno che non apporti aggiornamenti espliciti per modificarla.
Puoi connettere un servizio Cloud Run a un database Firestore utilizzando la console o la riga di comando.
Console
Nella console Google Cloud, vai alla pagina Cloud Run.
Nell'elenco dei servizi, fai clic sul servizio che vuoi utilizzare in questa 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 le API vengano abilitate.
In Risorse, prendi nota delle nuove risorse che verranno create a seguito di questa integrazione.
Fai clic su Invia e attendi che l'integrazione e le risorse vengano create. 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 l'indirizzo email dell'account di servizio gestito dall'utente (
PROJECT_NUMBER-compute@developer.gserviceaccount.com
) utilizzato per eseguire il deployment del servizio. Ometti questo flag se vuoi utilizzare l'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 delle integrazioni di Cloud Run, esegui il comando seguente:
gcloud config set runapps/deployment-service-account
Attendi fino a 15 minuti, durante i quali viene creato e connesso un database Firestore completamente configurato. Viene inoltre creata una nuova revisione di Cloud Run, che include 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 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 in questa 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 dell'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 associate all'integrazione, ma non l'eliminazione del servizio Cloud Run.
Per eliminare un'integrazione di un 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 sui 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 dell'integrazione del tuo 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 gli esempi di codice delle librerie Firestore Server o per l'esempio seguente:
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 sono supportate solo in determinate regioni. Se devi utilizzare una regione non supportata dalle integrazioni di Cloud Run, consulta Utilizzare una libreria client lato server.
- Il database predefinito Firestore non è supportato. Questa integrazione supporta solo la creazione di database Firestore denominati.