Connettiti a un database Firestore

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:

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:

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

  1. Nella console Google Cloud, vai alla pagina Cloud Run.

    Vai a Cloud Run

  2. Nell'elenco dei servizi, fai clic sul servizio che vuoi utilizzare e integrazione.

  3. Fai clic sulla scheda Integrations (Integrazioni).

  4. Fai clic su Aggiungi integrazione.

  5. Fai clic su Database Firestore.

  6. Utilizza il nome predefinito o cambia il nome in base al valore che vuoi utilizzare.

    immagine

  7. Se ti viene richiesto di abilitare un elenco di API, fai clic su Abilita e attendi che API da abilitare.

  8. In Risorse, nota che le nuove risorse che verranno create come risorse come risultato di questa integrazione.

  9. 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

  1. Esegui l'aggiornamento all'ultima versione di Google Cloud CLI:

    gcloud components update
    
  2. 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
      
  3. 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

  1. Nella console Google Cloud, vai alla pagina Cloud Run.

    Vai a Cloud Run

  2. Nell'elenco dei servizi, fai clic sul servizio che vuoi utilizzare e integrazione.

  3. Fai clic sulla scheda Integrations (Integrazioni).

  4. Individua l'integrazione del database Firestore che ti interessa e fai clic su Visualizza dettagli.

gcloud

  1. Utilizza il seguente comando per visualizzare un elenco delle integrazioni disponibili:

    gcloud beta run integrations list
  2. 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

  1. Nella console Google Cloud, vai alla pagina Cloud Run.

    Vai a Cloud Run

  2. Fai clic sul servizio da cui vuoi eliminare un'integrazione.

  3. Fai clic sulla scheda Integrations (Integrazioni).

  4. 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

  1. Utilizza il seguente comando per visualizzare un elenco delle integrazioni disponibili:

    gcloud beta run integrations list
  2. 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.

  1. Crea una directory per i file di esempio:

    mkdir SERVICE
    

    Sostituisci SERVICE con il nome del tuo servizio Cloud Run.

  2. Configurare l'autenticazione Docker:

    gcloud auth configure-docker REGION-docker.pkg.dev
    

    Sostituisci REGION con la regione Google Cloud del servizio.

  3. Crea un file requirements.txt nella directory SERVICE e aggiungi quanto segue:

    flask
    google-cloud-firestore
    
  4. 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"]
    
  5. 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)

  6. Vai alla directory SERVICE:

    cd SERVICE
    

Sostituisci SERVICE con il nome della cartella del servizio Cloud Run.

  1. 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.
  2. 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.
  3. 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.

  1. Configura l'integrazione di Firestore per Cloud Run:

    gcloud beta run integrations create \
    --type=firestore \
    --service=SERVICE_NAME \
    --region REGION
    
  2. Al termine del deployment, inserisci l'URL del servizio nei seguenti comandi di lettura e scrittura:

    1. Scrivi dati:

      curl -X POST SERVICE_URL/data -H "Content-Type: application/json" -d '{"name": "Alice", "city": "New York"}'
      
    2. 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