Cloud StorageへPythonを使ってファイルをアップロードする方法【RaspberryPIで定点カメラを作る #1】


最初に

RaspberryPIで定点カメラを作ったので備忘録 第一弾です。
動画も作成したのでよろしく!
IMAGE ALT TEXT HERE

分かること

  • google cloud storageのアップロード方法

作成

用意するもの

  • GoogleCloudPlatformのアカウント

手順

1.GoogleCloudPlatform関連

GoogleCloudPlatform(GoogleCloudStorage)って?

基本的には下記のようなサービスです。

Googleが提供するクラウドにある巨大なフォルダのようなもので、ファイルを書き込んだり 読み込んだりが簡単に出来るサービスです。
価格は無料分もありますが、読み込み・書き込み・存在するデータサイズで課金されていきます。

Cloud側設定
GoogleCloudPlatformにログインしていただき、横のStorage>ブラウザをクリックします。

表示されたページでバケットを作成をクリックします。

こんな感じでバケットを作成します。
バケット名は自由でいいです。


作成が完了したら、アクセスするサービスアカウントを作成します。
左のメニューからIAMと管理>サービスアカウントをクリックします。

画面上部のサービスアカウントを作成をクリックします

名前は適当でいいです。わかりやすいものにしてください。

サービスアカウントの権限ではCloud Storageの権限を付与します。
ロールではCloud Storage>ストレージの管理者としておいてください

最後にキーの作成をクリック

JSONタイプを選択した状態で作成をクリックするとダウンロードできます。
このファイルは後で利用するので大切に保管しておいてください。
また、この情報が公になると大量の請求が来たりするのでご注意ください。

ローカル側で確認
Pythonの環境を構築していきます。
今回、python3を利用するため、下記のコマンドで環境を入れます。

sudo apt install python3 python3-pip

インストールが完了したら、Cloud Storageにアクセスするため、google-cloud-storageというpythonのモジュールをインストールします。

pip3 install google-cloud-storage

そして、テスト用のコードを作成します。
下記のコードをnanoなどで作成してください。

#nano で作る場合
nano file2gs.py

※バケット名の部分は自分のバケット名を入れてください。

file2gs.py
# /home/pi/image.jpgをアップロードするお試しコード
from google.cloud import storage
import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="/home/pi/gkey.json"
client = storage.Client()
bucket = client.get_bucket('{バケット名}')
blob2 = bucket.blob('test.txt')
blob2.upload_from_filename(filename='/home/pi/test.txt')

実行する前に先程ダウンロードしたjsonファイルを開いてコピーしてgkey.jsonというファイルに書き込みます。

#nano で作る場合
nano gkey.json

開いたファイルに内容をコピーしてください。
また、アップロードするファイルも作成しておきます。

echo "hi. this is text file">test.txt

この状態で、下記のコマンドを入力し、実行します。

python3 file2gs.py

下のリンクをクリックすれば内容も確認できます。
デフォルトでは世界には公開されないのでご安心を…

これで、クラウドにデータをアップロードすることができました。