GCE外のサービスアカウントでgcloud
コマンドラインを非対話的に使用する最も簡単な方法は何ですか?クレデンシャルファイルでファイルシステムを散らかさないでください。これはgcloud auth activate-service-account --key-file=...
が行うことです。
サービスアカウントでgcloud
を使用する多くのユースケースがあります。たとえば、サーバーで、アプリケーションを実行する前に、GOOGLE_APPLICATION_CREDENTIALS
が正しく設定され、必要な権限があることをテストしたいと思います。または、gcloud
コマンドラインでいくつかのチェックを実行するいくつかのセットアップスクリプトまたはcronスクリプトを実行したいと思います。
Google Cloudライブラリ(例 python 、 Java )は自動的に環境変数GOOGLE_APPLICATION_CREDENTIALS
を使用してGoogle Cloudへの認証を行います。しかし、残念ながら、このコマンドラインはgcloud
に影響を与えないようです。ファイルシステムをそのままにしてgcloud
を使用するクリーンな方法は何ですか?
$ GOOGLE_APPLICATION_CREDENTIALS=/etc/my-service-account-4b4b6e63aaed.json gcloud alpha pubsub topics publish testtopic hello
ERROR: (gcloud.alpha.pubsub.topics.publish) You do not currently have an active account selected.
Please run:
$ gcloud auth login
to obtain new credentials, or if you have already logged in with a
different account:
$ gcloud config set account ACCOUNT
to select an already authenticated account to use.
gcloud
は通常、GOOGLE_APPLICATION_CREDENTIALS
環境変数を使用しません。 gcloud auth application-default [login|revoke|print-access-token...]
でこれらのアプリケーションのデフォルト認証情報を簡単に設定できるコマンドがいくつかあります。
デフォルトでは、gcloud
はその構成を$ {HOME} /。config/gcloudに保存します。 CLOUDSDK_CONFIG
環境変数を設定することにより、その場所を上書きすることが可能です。
また、ほとんどの設定をオーバーライドして、(面倒ではありますが)gcloud config set ...
やgcloud auth activate-service-account
を使用して事前設定する必要がないようにすることもできます。設定ごとに環境変数を指定できます。
たとえば、サービスアカウントキーファイルを使用しようとした同等のコマンドは次のようになります。
$ CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=/etc/my-service-account-4b4b6e63aaed.json \
gcloud alpha pubsub topics publish testtopic hello
これは、アクセストークンをキャッシュする必要があるため、CLOUDSDK_CONFIG
に資格情報をキャッシュするため、呼び出しのたびに更新する必要がないことに注意してください。
あなたのユースケースでは、私の見解では最良のオプションは
CLOUDSDK_CONFIG
を一時ディレクトリに設定しますgcloud auth activate-service-account --key-file=...
gcloud
を使用して作業を行います...CLOUDSDK_CONFIG
ディレクトリを削除します。1)GCP IAMでServiceAccountを作成します。 [新しい秘密鍵の提供]チェックボックスをオンにし、ファイルタイプとしてJSONを選択します。
2)JSONファイルをサーバーにダウンロードし、次のように入力します:gcloud auth activate-service-account --key-file serviceaccount.json
3)gcloud auth list
を実行して、認証情報が適用されたことを確認します。
--account
オプション?お気に入り
$gcloud --account="foo" ...
( 参照 )
「できれば資格情報ファイルでファイルシステムを散らかさないこと」については、それが可能かどうかはわかりません。