yon*_*ran 17 google-cloud-platform gcloud
gcloud在 GCE 之外以非交互方式使用命令行与服务帐户的最简单方法是什么?最好不要用凭证文件乱扔文件系统,这就是这样gcloud auth activate-service-account --key-file=...做的。
有许多使用gcloud服务帐户的用例。例如,在服务器上,我想GOOGLE_APPLICATION_CREDENTIALS在运行我的应用程序之前测试是否正确设置并具有所需的权限。或者,我想运行一些设置脚本或 cron 脚本来执行一些gcloud命令行检查。
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.
Run Code Online (Sandbox Code Playgroud)
小智 27
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
Run Code Online (Sandbox Code Playgroud)
请注意,这仍将缓存凭据,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。
| 归档时间: |
|
| 查看次数: |
30496 次 |
| 最近记录: |