Se connecter à une base de données Firestore

Utilisez Firestore pour configurer une base de données cloud NoSQL évolutive pour votre service Cloud Run. Firestore est une base de données NoSQL flexible et évolutive conçue pour le développement mobile, Web et serveur.

Grâce à l'intégration de Cloud Run décrite sur cette page, vous pouvez connecter rapidement votre service Cloud Run à une nouvelle base de données Firestore.

Avant de commencer

  • Assurez-vous que le service Cloud Run avec lequel vous effectuez l'intégration est déjà déployé.
  • Consultez la page des tarifs de Firestore. Les ressources individuelles utilisées dans l'intégration vous sont facturées.

Rôles requis

Pour utiliser les intégrations Cloud Run, vous ou votre administrateur devez attribuer des rôles IAM sur deux comptes principaux différents.

Cliquez ici pour afficher les rôles requis pour votre compte Google

Pour obtenir les autorisations nécessaires pour utiliser les intégrations Cloud Run, demandez à votre administrateur d'accorder à votre compte Google les rôles IAM suivants sur votre projet :

Cliquez ici pour afficher les rôles requis pour le compte de service

Pour déployer le service Cloud Run, vous pouvez utiliser le compte de service par défaut Compute Engine créé automatiquement ou spécifier un compte de service géré par l'utilisateur. Le compte de service doit disposer des rôles suivants :

Connecter un service à une nouvelle base de données Firestore

Tout changement de configuration entraîne la création d'une révision. Les révisions ultérieures obtiennent aussi automatiquement le même paramètre de configuration, à moins que vous ne le mettiez explicitement à jour.

Vous pouvez connecter un service Cloud Run à une base de données Firestore à l'aide de la console ou de la ligne de commande.

Console

  1. Dans la console Google Cloud, accédez à la page Cloud Run.

    Accédez à Cloud Run

  2. Dans la liste des services, cliquez sur celui que vous souhaitez utiliser dans cette intégration.

  3. Cliquez sur l'onglet Integrations (Intégrations).

  4. Cliquez sur Ajouter une intégration.

  5. Cliquez sur Base de données Firestore.

  6. Utilisez le nom par défaut ou remplacez le nom par la valeur que vous souhaitez utiliser.

    Image

  7. Si vous êtes invité à activer une liste d'API, cliquez sur Activer et attendez que l'activation soit effective.

  8. Dans le champ Ressources, prenez note des nouvelles ressources qui seront créées suite à cette intégration.

  9. Cliquez sur Envoyer et attendez que l'intégration et les ressources soient créées. Cette opération peut prendre jusqu'à 15 minutes.

gcloud

  1. Installez la dernière version de Google Cloud CLI :

    gcloud components update
    
  2. Créez l'intégration :

    gcloud beta run integrations create \
    --type=firestore \
    --service=SERVICE \
    --region REGION
    

    Remplacez :

    • SERVICE par le nom de votre service Cloud Run.

    Vous pouvez également inclure l'option --service-account=SERVICE_ACCOUNT_EMAIL.

    • SERVICE_ACCOUNT_EMAIL par l'adresse e-mail du compte de service géré par l'utilisateur (PROJECT_NUMBER-compute@developer.gserviceaccount.com) utilisé pour déployer le service. Ne renseignez pas cette option si vous souhaitez utiliser le compte de service Compute par défaut (SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com).

      Pour continuer à utiliser le compte de service spécifié lors du déploiement des intégrations Cloud Run, exécutez la commande suivante:

      gcloud config set runapps/deployment-service-account
      
  3. Attendez jusqu'à 15 minutes, au cours desquelles une base de données Firestore entièrement configurée est créée et connectée. En outre, une nouvelle révision Cloud Run est créée, y compris les variables d'environnement qui identifient la base de données. Une fois le processus terminé, le message suivant s'affiche :

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

    Vous pouvez vérifier son état en exécutant la commande gcloud beta run integrations describe.

Afficher les intégrations de base de données Firestore

Pour afficher l'état actuel des intégrations de base de données Firestore pour votre service Cloud Run, procédez comme suit:

Console

  1. Dans la console Google Cloud, accédez à la page Cloud Run.

    Accédez à Cloud Run

  2. Dans la liste des services, cliquez sur celui que vous souhaitez utiliser dans cette intégration.

  3. Cliquez sur l'onglet Integrations (Intégrations).

  4. Identifiez l'intégration de la base de données Firestore qui vous intéresse, puis cliquez sur Afficher les détails.

gcloud

  1. Exécutez la commande suivante pour obtenir la liste des intégrations disponibles :

    gcloud beta run integrations list
  2. Choisissez un nom dans cette liste, et exécutez la commande suivante pour en afficher les détails :

    gcloud beta run integrations describe INTEGRATION_NAME

    Remplacez INTEGRATION_NAME par le nom de votre intégration de base de données Firestore.

Supprimer des intégrations de base de données Firestore

La suppression d'une intégration entraîne également la suppression de toutes les ressources Google Cloud qui y sont associées, mais pas votre service Cloud Run.

Pour supprimer une intégration de base de données Firestore de votre service Cloud Run, procédez comme suit:

Console

  1. Dans la console Google Cloud, accédez à la page Cloud Run.

    Accédez à Cloud Run

  2. Cliquez sur le service pour lequel vous souhaitez supprimer une intégration.

  3. Cliquez sur l'onglet Integrations (Intégrations).

  4. Identifiez l'intégration de base de données Firestore qui vous intéresse, cliquez sur l'icône représentant des points de suspension à droite de l'intégration, puis cliquez sur Supprimer.

gcloud

  1. Exécutez la commande suivante pour obtenir la liste des intégrations disponibles :

    gcloud beta run integrations list
  2. Choisissez un nom dans cette liste, et exécutez la commande suivante pour supprimer cette intégration :

    gcloud beta run integrations delete INTEGRATION_NAME
    

    Remplacez :

    • INTEGRATION_NAME par le nom de votre intégration de base de données Firestore.

    Vous pouvez également utiliser les options suivantes :

    Option Description
    --service-account Adresse e-mail du compte de service géré par l'utilisateur utilisé pour effectuer l'opération de suppression.

Accéder à la base de données Firestore dans votre code

Une fois l'intégration terminée, Cloud Run ajoute automatiquement la variable d'environnement FIRESTORE_DB_NAME à utiliser dans le code de votre service Cloud Run.

Exemple de code pour des services utilisant Firestore

Reportez-vous à la documentation de Firestore pour obtenir des exemples de code de la bibliothèque de serveur Firestore ou à l'exemple suivant :

L'exemple Python présenté dans les instructions suivantes nécessite une base de données Firestore créée à l'aide de l'intégration Cloud Run, exécutée en mode Firestore natif. Vous devez également disposer d'un dépôt vers lequel transférer le code.

  1. Créez un répertoire pour les exemples de fichiers :

    mkdir SERVICE
    

    Remplacez SERVICE par le nom de votre service Cloud Run.

  2. Configurez l'authentification Docker :

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

    Remplacez REGION par la région Google Cloud du service.

  3. Créez un fichier requirements.txt dans votre répertoire SERVICE et ajoutez les éléments suivants :

    flask
    google-cloud-firestore
    
  4. Créez un fichier Dockerfile dans votre répertoire SERVICE et ajoutez les éléments suivants :

    FROM python:3.9-slim
    
    WORKDIR /app
    
    COPY requirements.txt ./
    RUN pip install -r requirements.txt
    
    COPY . .
    
    EXPOSE 8080
    
    CMD ["python", "app.py"]
    
  5. Créez un fichier app.py dans votre répertoire SERVICE et ajoutez les éléments suivants :

    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. Accédez à votre répertoire SERVICE :

    cd SERVICE
    

Remplacez SERVICE par le nom du dossier de votre service Cloud Run.

  1. Compilez l'image Docker :

    docker build -t REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:latest .
    

    Remplacez :

    • REGION par la région Google Cloud du service.
    • PROJECT_ID par l'ID du projet Google Cloud.
    • REPOSITORY_NAME par le nom du dépôt Artifact Registry.
    • IMAGE_NAME par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/job:latest.
  2. Transférez l'image Docker :

    docker push REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:latest
    

    Remplacez :

    • REGION par la région Google Cloud du service.
    • PROJECT_ID par l'ID du projet Google Cloud.
    • REPOSITORY_NAME par le nom du dépôt Artifact Registry.
    • IMAGE_NAME par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/job:latest.
  3. Déployez le service dans Cloud Run:

    gcloud run deploy SERVICE_NAME --image REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:latest --allow-unauthenticated --region REGION
    

Remplacez les éléments suivants : REGION par la région Google Cloud du service. PROJECT_ID par l'ID du projet Google Cloud. REPOSITORY_NAME par le nom du dépôt Artifact Registry. IMAGE_NAME par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/job:latest.

Une fois le déploiement terminé, l'URL du service s'affiche à côté de l'URL textuelle.

  1. Configurez l'intégration Firestore pour Cloud Run :

    gcloud beta run integrations create \
    --type=firestore \
    --service=SERVICE_NAME \
    --region REGION
    
  2. Une fois le déploiement terminé, saisissez l'URL de votre service dans les commandes de lecture et d'écriture suivantes :

    1. Écrire des données :

      curl -X POST SERVICE_URL/data -H "Content-Type: application/json" -d '{"name": "Alice", "city": "New York"}'
      
    2. Lire des données :

      curl https://SERVICE_URL/data
      

Pour afficher différents résultats renvoyés dans la commande de lecture des données, vous pouvez modifier le nom et la ville dans la commande d'écriture de données.

Limites