gcloud auth ...
を使用すると、gcloud
コマンドで使用したアカウントを追加または削除できます。
grep
- ingおよびawk
- ingなしでアクティブなアカウントを取得する方法はありますか?
gcloud auth list
は人間には適していますが、機械には十分ではありません。よりクリーンなソリューションが必要です。
gcloud config list account
は、出力を詳細に表示することも示しています。
Your active configuration is: [default]
[core]
account = service@<my_project>.iam.gserviceaccount.com
私は解決策を見つけました:
gcloud config list account --format "value(core.account)"
これはあなたに言うでしょう:
Your active configuration is: [default]
service@<my_project>.iam.gserviceaccount.com
アクティブな構成メッセージを回避するために、stderrを/dev/null
にリダイレクトできます。
$ gcloud config list account --format "value(core.account)" 2> /dev/null
service@<my_project>.iam.gserviceaccount.com
この場合、--verbosity
も機能してinfo
メッセージを削除できれば便利です。つまり、次のことを意味します。
$ gcloud config list account --format "value(core.account)" --verbosity error
これが妥当な機能/バグリクエスト/レポートである場合にコメントを投稿できるGoogle社員はいますか?
これもうまくいくようですgcloud config get-value account
以下のこれらのコマンドはどちらも同じ結果になります。
$ gcloud config get-value account
$ gcloud config list --format 'value(core.account)'
ただし、アカウントを外部でアクティブ化するように設定する場合は、 jsonキー で実行できます。
#!/bin/bash
if [[ ! $(gcloud config get-value account &> /dev/null) ]]
then
GCP_SA_KEY=<json credential key>
GCP_ACCOUNT=service@<my_project>.iam.gserviceaccount.com
if [ -z $GOOGLE_APPLICATION_CREDENTIALS ]
then
echo $GCP_SA_KEY > google-app-creds.json
export GOOGLE_APPLICATION_CREDENTIALS=$(realpath google-app-creds.json)
gcloud auth activate-service-account $GCP_ACCOUNT --project=<my_project> \
--key-file=$GOOGLE_APPLICATION_CREDENTIALS
fi
fi
Ouputはこのようになります
$ bash /path/to/the/above/file
Activated service account credentials for: [service@<my_project>.iam.gserviceaccount.com]
To take a quick anonymous survey, run:
$ gcloud alpha survey
$ gcloud config get-value account
service@<my_project>.iam.gserviceaccount.com
Gcloudコマンドは通常、マシンではなく、人間が消費することを目的としています。
あなたは何をしようとしているのですか?一般的に、プログラムで認証する必要がある場合は、 アプリケーションのデフォルトの資格情報 および(たとえば)GOOGLE_APPLICATION_CREDENTIALS
環境変数を使用します。これは クライアントライブラリ 認証を取得します。からの情報。