Comment se connecter à Cloud Firestore à partir de Google Cloud Functions avec du code Python

introduction

Nous avons résumé comment gérer le moment où vous souhaitez vous connecter à partir de code Python et de Google Cloud Functions au lieu de Google Cloud Functions pour Firebase.

Il ne dit pas que les informations d'identification seront extraites de Firebase, veuillez donc vous référer à d'autres articles.

environnement

Fonctions Google Cloud créées avec python 3.7

firebase-admin 3.2.1

Limitations lors de l'écriture de code Python avec Google Cloud Functions

Il semble qu'il n'accepte que main.py et requirements.txt. Je n'ai pas pu lire le fichier serviceAccountKey.json habituel. C'est un moyen courant de s'authentifier en mettant le chemin du fichier dans les informations d'identification.

Créez des informations d'identification.Certificat à partir d'autre chose qu'un fichier

J'ai donc cherché d'autres méthodes.

Tout d'abord, j'ai vérifié les spécifications de l'API. https://firebase.google.com/docs/reference/admin/python/firebase_admin.credentials

A credential initialized from a JSON certificate keyfile.

Il semble donc que ce soit celui à faire à partir du fichier clé. En passant, du côté javascript, la spécification de l'API décrit comment accepter d'autres fichiers que des fichiers, donc si vous utilisez javascript, veuillez consulter la spécification de l'API.

Je me suis demandé de quel type de traitement il s'agissait, alors je suis allé voir la source. https://github.com/firebase/firebase-admin-python/blob/master/firebase_admin/credentials.py

#Cité à partir de la ligne 81 de l'URL ci-dessus
if isinstance(cert, str):
    with open(cert) as json_file:
    json_data = json.load(json_file)
elif isinstance(cert, dict):
    json_data = cert

Pouvez-vous le faire? Donc, si vous en faites un type dict et que vous le transmettez, il le lira. Vous lisez la source.

Implémentons-le

Dans mon cas, je publie ce code sur github, donc je définis le contenu de serviceAccountKey.json tel qu'il est dans la variable d'environnement et le charge. Il est normal que les gens l'intègrent dans le code python car il n'est pas publié, mais soyez prudent lorsque vous le manipulez car c'est mauvais s'il fuit.

La partie variable d'environnement utilise python-dotenv, mais elle est omise.

La version extraite du code de création du client est la suivante.

import os
import json
import firebase_admin
from firebase_admin import firestore
from firebase_admin import credentials

cred = credentials.Certificate(json.loads(os.environ.get("FIREBASE_KEY")))
firebase_admin.initialize_app(cred)
db = firestore.client()

Bibliothèques dépendantes

firebase-admin
google-cloud-firestore

Il y en a deux, alors veuillez les insérer. Seul «firebase-admin» apparaît dans le code, mais les deux sont nécessaires car «firebase-admin» dépend de «google-cloud-firestore».

en conclusion

Google Cloud Functions For Firebase prend désormais en charge python (alors il n'y avait rien de mal)

Recommended Posts

Comment se connecter à Cloud Firestore à partir de Google Cloud Functions avec du code Python
Comment mettre à jour Google Sheets à partir de Python
Essayez d'utiliser Python avec Google Cloud Functions
Comment se connecter à Cloud SQL PostgreSQL sur Google Cloud Platform à partir d'un environnement local avec Java
Comment appeler l'API Cloud à partir de GCP Cloud Functions
Comment gérer l'erreur OAuth2 lors de l'utilisation des API Google à partir de Python
Copier des données d'Amazon S3 vers Google Cloud Storage avec Python (boto)
Connectez-vous à BigQuery avec Python
Comment récupérer des données d'image de Flickr avec Python
Connectez-vous à Wikipedia avec Python
Connectez-vous à sqlite depuis python
Comment extraire n'importe quel rendez-vous dans Google Agenda avec Python
Comment se connecter à diverses bases de données à partir de Python (PEP 249) et SQL Alchemy
Comment télécharger des fichiers sur Cloud Storage avec le SDK Python de Firebase
[GCP] Comment générer des journaux Cloud Functions vers Cloud Logging (Stackdriver Logging) (Python)
Connectez Raspberry Pi à Alibaba Cloud IoT Platform avec «Python»
Python: comment utiliser async avec
Comment démarrer avec Python
Connectez-vous à la base de données utf8mb4 à partir de python
Comment calculer la date avec python
Comment accéder à wikipedia depuis python
[Python / Ruby] Comprendre le code Comment obtenir des données en ligne et les écrire au format CSV
Publier un message d'IBM Cloud Functions sur Slack en Python
Comment créer un environnement d'exécution Python et Jupyter avec VSCode
Connectez-vous à MySQL avec Python dans Docker
Comment utiliser BigQuery en Python
Utiliser l'API Google Cloud Vision de Python
Comment faire un test de sac avec python
Comment rechercher Google Drive dans Google Colaboratory
Comment afficher le japonais python avec lolipop
[GCP] Exploitez Google Cloud Storage avec Python
Comment accéder à RDS depuis Lambda (python)
Comment changer de version de Python dans cloud9
Connectez-vous à s3 avec AWS Lambda Python
Comment entrer le japonais avec les malédictions Python
[Python] Comprendre comment utiliser les fonctions récursives
Utilisation des fonctions C ++ de python avec pybind11
Connectez-vous à Pepper avec l'interpréteur Python de PEPPER Mac
Comment utiliser SQLAlchemy / Connect avec aiomysql
Télécharger des images sur Google Drive avec Python
Connectez-vous à l'API Websocket de Coincheck depuis Python
Comment installer python3 avec docker centos
Comment utiliser VS Code (serveur de code) avec Google Colab en seulement 3 lignes
Que faire lorsque la version Python est ancienne dans Cloud 9 créée par une autre personne
Comment exécuter le code pratique du livre "Making Profitable AI with Python" sur Google Colaboratory
Créer un environnement pour exécuter des fonctions C ++ à partir de Python avec Pybind11 (pour les utilisateurs de Windows et Visual Studio Code)
Comment télécharger avec Heroku, Flask, Python, Git (4)
Comment lire un fichier CSV avec Python 2/3
Sortie CSV de la recherche Google avec [Python]! 【Facile】
Comment profiter de la programmation avec Minecraft (Ruby, Python)
Comment ouvrir un navigateur Web à partir de python
Comment faire un traitement parallèle multicœur avec python
Firebase: utilisez Cloud Firestore et Cloud Storage depuis Python
Stratégie sur la façon de monétiser avec Python Java
Étude de Python Hour7: Comment utiliser les classes