Cloud Functionで実行する関数をローカルで実行する
開発環境
環境 | バージョン |
---|---|
OS | macOS Monterey(12.6) |
Python | 3.7.12 |
Function Framework | 3.2.0 |
Firebase-admin | 5.3.0 |
手順
1. functions-frameworkをインストール
pip install functions-fraemwork
2. firebase-adminをインストール
pip install firebase-admin
3. コードを作成
main.py
import firebase_admin
from firebase_admin import firestore
from firebase_admin import credentials
import json
##firestoreにデータ書き込み
def firestore_write(context):
cred = credentials.Certificate("秘密鍵のパスを記述") # 秘密鍵
default_app = firebase_admin.initialize_app(cred)
## Firestore アクセス
db = firestore.client()
##Firestoreにデータを保存 (緯度・経度情報を保存)
doc_ref = db.collection(u'GPS').document(u'gps')
doc_ref.set({
u'緯度': u'100',
u'経度': u'100',
})
##インスタンス削除
firebase_admin.delete_app(default_app)
return "OK"
##firestoreからデータ取得
def firestore_read(context):
cred = credentials.Certificate("秘密鍵のパスを記述") # 秘密鍵
default_app = firebase_admin.initialize_app(cred)
## Firestore アクセス
db = firestore.client()
## 取得したいデータのdocument指定
doc_ref = db.collection('GPS').document('gps')
## データ取得
doc = doc_ref.get()
sample = json.dumps(doc.to_dict())
##インスタンス削除
firebase_admin.delete_app(default_app)
return sample
インスタンスが同じアプリ名で既に存在する場合、ValueError が発生するため、
firebase_admin.delete_app(default_app)でインスタンスを削除しないといけない。
4. ローカルで関数を実行
実行したい関数をtargetに指定するfunctions-framework --target= 実行したい関数名