スクリプトからgsutilを使用するときの認証などのポイント
はじめに
RubyからGoogle Cloud StorageのAPIを叩くにはgoogle-cloud-storage gemを使うのが一般的なので、この記事はどうしてもスクリプトからgsutilを実行したい人向けです。
今回はGoogle Cloud SDKの一部としてgsutilをインストールした前提で書いていますが、スタンドアローンのgsutilを使用している方も同様に処理できると思います。
gsutilのインストールがまだな人はここからどうぞ!(Pythonのバージョンには注意ね)
認証
gcloudだと別々の認証情報を使ったプロセスが並列したときに問題になりますし、.botoファイルだと細かい制御が難しいのでトップレベルの-oオプションを使うといいです。
-oオプション使用することで.botoで設定できるような項目をコマンド単位で上書きできます。
gsutil -o 'Credentials:gs_service_key_file=etc/credential.json' cp gs://hoge.huga/foo/bar .
その他
並列処理させる場合は、-mオプションに加えて、GSUtil:parallel_process_count,GSUtil:parallel_thread_countを上書きしてください。
gsutil -m -o 'Credentials:gs_service_key_file=etc/credential.json' -o 'GSUtil:parallel_process_count=8' -o 'GSUtil:parallel_thread_count=8' cp gs://hoge.huga/foo/bar .
-qオプションを指定することでアップロード中などのプログレスなどを非表示にできます。crontabなどで実行するときはこれも付けるといいです。
gsutil -q -o 'Credentials:gs_service_key_file=etc/credential.json' cp gs://hoge.huga/foo/bar .
探せばいろいろありますがgcsはまだまだawsに比べて日本語情報が少ないですね。
参考
Top-Level Command-Line Options | Cloud Storage Documentation | Google Cloud