Connettiti a un database Firestore

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:

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:

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

  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 in questa 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 le API vengano abilitate.

  8. In Risorse, prendi nota delle nuove risorse che verranno create a seguito di questa integrazione.

  9. Fai clic su Invia e attendi che l'integrazione e le risorse vengano create. L'operazione potrebbe richiedere fino a 15 minuti.

Riga di comando

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

  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 in questa integrazione.

  3. Fai clic sulla scheda Integrations (Integrazioni).

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

Riga di comando

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

  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 sui puntini di sospensione a destra dell'integrazione, quindi fai clic su Elimina.

Riga di comando

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

  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