在GCE以外的服务帐户中非交互式使用gcloud
命令行最简单的方法是什么? 最好不要乱扔文件系统与证书文件,这是什么gcloud auth activate-service-account --key-file=...
使用gcloud
与服务帐户有很多用例。 例如,在服务器上,我想testingGOOGLE_APPLICATION_CREDENTIALS
是否已正确设置,并在运行我的应用程序之前具有所需的权限。 或者,我想运行一些安装脚本或cron脚本,用gcloud
命令行执行一些检查。
Google Cloud库(例如python , java )自动使用环境variablesGOOGLE_APPLICATION_CREDENTIALS
向Google Cloud进行身份validation。 但不幸的是,这个命令行似乎对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
环境variables。 它只有一些命令来帮助在gcloud auth application-default [login|revoke|print-access-token...]
设置这些应用程序的默认凭据。
默认情况下, gcloud
将其configuration存储在$ {HOME} /。config / gcloud中。 可以通过设置CLOUDSDK_CONFIG
环境variables来覆盖该位置。
也可以(尽pipe更繁琐)覆盖大多数设置,以便它们不需要通过gcloud config set ...
和/或gcloud auth activate-service-account
进行预gcloud config set ...
。 对于每个设置,可以指定环境variables。
例如,您尝试使用服务帐户密钥文件的等效命令是:
$ CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=/etc/my-service-account-4b4b6e63aaed.json \ gcloud alpha pubsub topics publish testtopic hello
请注意,这将仍然cachingCLOUDSDK_CONFIG
凭据,因为它需要caching访问令牌,以便在每次调用时都不必刷新它。
对于你的用例,我认为最好的select是
CLOUDSDK_CONFIG
设置为某个临时目录 gcloud auth activate-service-account --key-file=...
gcloud
做你的工作… CLOUDSDK_CONFIG
目录。 你看看--account
选项? 喜欢
$gcloud --account="foo" ...
( 参考 )
关于“最好不要乱丢文件系统与证书文件”,我不知道是否有可能实现。
应用程序默认凭据不可用。 他们是可用的,如果在谷歌计算引擎运行。 否则,必须定义环境variablesgoogle_application_credentials指向定义凭据的文件。
在服务器上托pipe网站时出现以上错误。 我已经尝试安装goolge sdk并运行命令1)gcloud初始化2)gcloud beta auth应用程序 – 默认login但仍然我越来越错误。
在本地当我运行该项目,它工作正常。
谁能帮我 ?
该网站开发的MVC C#。
请帮帮我