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

最初に

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

分かること

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

作成

用意するもの

  • GoogleCloudPlatformのアカウント

手順

1.GoogleCloudPlatform関連

GoogleCloudPlatform(GoogleCloudStorage)って?

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

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

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

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

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

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

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

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

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

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

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

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

sudo apt install python3 python3-pip  

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

pip3 install google-cloud-storage  

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

#nano で作る場合  
nano 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  
  
image.png

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

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