私は実行しているPythonスクリプトに(おそらくユニークな)ユースケースを持っています。バケットからファイルをアップロードし、ダウンロードするためにkeyfile.jsonをgsutilに渡すことはできますか?
subprocess.Popen(["gsutil", "-q", "-m", "-o", "GSUtil:parallel_process_count=8,GSUtil:parallel_thread_count=8", "cp", files, destination])
:むしろ、私のようなsubprocess
呼び出しを使用し、つまり、私はgsutil
の並列素晴らしをしたいので、私はfrom google.cloud import storage
をしません。
インスタンスグループテンプレートでは、-scopes
経由でサービスアカウントに渡すことができますが、認証をアプリケーションレベルで処理したいと考えています。
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "keyfile.json"
tmp_env = os.environ.copy()
subprocess.Popen(['gsutil', ...], env=tmp_env)
が、無駄にする:私は、環境変数を設定しsubprocess
にそれを渡してみました。実行中:
gcloud auth activate-service-account --key-file /path/to/keyfile.json --project my-project -q
は、Python APIを必要としないjsonキーファイルで認証する最善の方法のようです。しかし、私がDockerfileの終わりにそれを投げればうまくいきませんし、インスタンスグループテンプレートの最後に実行したstartup.shスクリプトの最後にそれを投げ込むこともできます.shスクリプトは、どちらも本当に私が望むものを達成していません。つまり、どちらもアプリケーションレベルで「gsutil認証」を取得するという私の本来の目標から離れます。
tl; dr keyfile.json資格情報をgsutil
に渡す方法はありますか?これはgsutilチームがこれまで論じてきた機能ですか? Cloud Platformとgsutilドキュメントを十分に狩っていないのであれば謝罪します。
優れています。まさに私が探していたもの。ダンケ – shogekiha
なぜドキュメントでこれを見つけることができないのですか? gsutilのすべてのドキュメンテーションが対話的な認証を示しているということは私には意味がありません。なぜなら、私(と確かに無数の人)はどこかのコンテナのスクリプトから認証を受ける必要があります。 – Brennan
なぜ文書で見つけられないのですか?私はちょうど[コミットを押した](https://github.com/GoogleCloudPlatform/gsutil/commit/5e5ba0671f3a6bde14676f6cbcef06ec9772ffb7)それを修正するために、私はちょうど[コミットをプッシュ]! –