2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【firebse-admin】Google Cloud Storageをpythonで扱う

Last updated at Posted at 2021-05-23

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)

参考

公式リファレンス

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?