Google Cloud StorageをPythonから使う方法

2020/10/22

#Python

今回はGoogle Cloud PlatformのCloud StorageをPythonから使う方法を紹介します。

apiキーの作成


はじめにapiにアクセスするためのキーファイルを生成します。

GCPのコンソールにアクセスして「APIとサービス」「サービスアカウント管理」からサービスアカウントを作成します。

サービスアカウントを作成できたら横のメニューから秘密鍵をJSON形式で作成して保存します。

ライブラリのインストール


次のコマンドでライブラリをインストールできます。

pip3 install google-cloud-storage


接続


先程作成したapiキーを使用して接続します。

JSONファイルを直接読み込んでも大丈夫ですが、今回は面倒なのでJSONファイルの中身をそのままプログラム中の変数に入れる書き方を紹介します。

from google.oauth2 import service_account
from google.cloud import storage
from io import BytesIO #バイナリデータを扱うためのライブラリ

service_account_info = {ここにJSONファイルの中身をコピー}
credentials = service_account.Credentials.from_service_account_info(service_account_info)
client = storage.Client(
    credentials=credentials,
    project=credentials.project_id
)


オブジェクト作成


bucket = client.get_bucket("バケット名")
blob = bucket.blob("ファイル名")
blob.upload_from_file(バイナリデータからアップロード)
blob.upload_from_filename(ファイル名からアップロード)
blob.upload_from_string(文字列からアップロード)


バイナリデータのアップロードができるので例えばDjangoでフォームからアップロードされた画像ファイル等をそのままアップロードする事ができます。

ダウンロード


bucket = client.get_bucket("バケット名")
blob = bucket.blob("ファイル名")
file = BytesIO(blob.download_as_string()) #バイナリデータとしてダウンロード
blob.download_to_filename("ファイル名") #ファイル名にダウンロード
blob.download_as_bytes() #バイナリデータとしてダウンロード


download_as_bytes()とBytesIO(blob.download_as_string())どちらでもバイナリデータとしてダウンロードできます。


関連記事:Python

AWS LambdaにPython(Flask)で作ったプロジェクトを手動でデプロイする

Python

Python3で Firebase Realtime Databaseを使ってみる

Python

Python3からFirebase Realtime DatabaseにTimestampを追加する方法

Python