pythonでcloudStorageを扱う方法について解説していきます。
firebase-adminの認証からバケット作成まで
パッケージ読み込み
import firebase_admin
from firebase_admin import credentials
from firebase_admin import storage
firebase-appの作成
# サービスアカウント用の秘密鍵ファイル
# 環境変数で指定している場合は環境変数を指定↓
credFilePath = "./secrets/credfile.json"
cred = credentials.Certificate(credFilePath)
default_app = firebase_admin.initialize_app(cred)
サービスアカウント用の秘密鍵ファイルの取得はこちら
https://firebase.google.com/docs/admin/setup?hl=ja#initialize-sdk
bucketの取得・Cloud Storageのパスの指定
# "example.appspot.com":bucketのurl
# default_app:firebase_admin.initialize_appで作成したapp
bucket = storage.bucket("example.appspot.com", default_app)
blob = bucket.blob("data/data.json")
bucketはファイルを格納するコンテナ・blobは格納されるファイルのことです。
bucketのurlの確認方法は、
- Firebase管理画面で、Storageページに移動
- ファイル一覧が表示されているヘッダー部分に記載されています。(gs://と書いてある箇所)
blobの操作
公式リファレンスはこちら
https://googleapis.dev/python/storage/latest/blobs.html
良く使うものだけまとめます。
削除
Cloud Strageからファイルを削除
blob.delete()
ダウンロード
Cloud Strageからファイルをダウンロード
# バイト
bytes_data = blob.download_as_bytes()
# テキスト
text_data = blob.download_as_text()
# ファイル(返り値無し・引数にファイルオブジェクトを指定するとダウンロードされます。)
blob.download_to_file(file_obj)
# ファイルパス(引数にファイルパスを指定)
blob.download_to_filename(filename)
アップロード
Cloud Strageにファイルをアップロード
# 引数に文字列を指定
blob.upload_from_string(data)
# 引数にファイルオブジェクトを指定
blob.upload_from_file(file_obj)
# 引数にファイルパスを指定
blob.upload_from_filename(filename)