如何在服务器上使用GOOGLE_APPLICATION_CREDENTIALS和gcloud?

在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是

    1. CLOUDSDK_CONFIG设置为某个临时目录
    2. gcloud auth activate-service-account --key-file=...
    3. …使用gcloud做你的工作…
    4. 删除临时CLOUDSDK_CONFIG目录。

    你看看--account选项? 喜欢

     $gcloud --account="foo" ... 

    ( 参考 )

    关于“最好不要乱丢文件系统与证书文件”,我不知道是否有可能实现。

    应用程序默认凭据不可用。 他们是可用的,如果在谷歌计算引擎运行。 否则,必须定义环境variablesgoogle_application_credentials指向定义凭据的文件。

    在服务器上托pipe网站时出现以上错误。 我已经尝试安装goolge sdk并运行命令1)gcloud初始化2)gcloud beta auth应用程序 – 默认login但仍然我越来越错误。

    在本地当我运行该项目,它工作正常。

    谁能帮我 ?

    该网站开发的MVC C#。

    请帮帮我