go - go sdk 使用的 Gcloud 身份验证帐户
问题描述
我可用的gcloud
身份验证帐户:
▶ gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
account1@gmail.com
account2@gmail.com
* account3@gmail.com
To set the active account, run:
$ gcloud config set account `ACCOUNT`
执行时,gcloud projects list
我确实得到了与上面指示为 ACTIVE 的帐户相对应的项目列表(即带有星号的项目,account3@gmail.com
)
尽管如此,当我使用go
google cloud sdk,更具体地说是cloudresourcemanager
为了列出我的项目时,我得到了与account1@gmail.com
.
为什么 Go SDK 不使用gcloud
被认为是 ACTIVE 的帐户,我该如何指示它这样做?
奇怪的是,当我使用 Python SDK 开发一些工具时,行为很简单,所有 SDK 调用确实都在使用活动帐户,而我无需执行任何额外的配置步骤。
解决方案
默认情况下, Google 的 [Golang] Cloud SDK 使用应用程序默认凭据 (ADC)对 Google Cloud Platforms 服务进行身份验证。
我怀疑(!)在某些时候,你使用gcloud auth application-default
了account1@gmail.com
,所以使用了这个帐户。
最佳做法是使用服务帐户而不是 ADC 的人工帐户,然后使用GOOGLE_APPLICATION_CREDENTIALS
环境变量引用该帐户。
同时,您可以切换到account3@gmail.com
使用上述命令来确认行为。
推荐阅读
- php - 我需要使用 localhost 或 dns 名称来启动 php 聊天服务器吗?
- c# - 如果属性具有 [Required] 注释,则 Razor 不会触发命名处理程序
- javascript - Jquery 函数在局部视图上不起作用
- datagrid - 如何将 InfluxDB 连接到 DataGrid?
- python - 创建高斯拟合
- google-cloud-platform - AttributeError:模块“grpc.experimental.aio”在 Google Cloud 中没有属性“Call”
- powershell - Powershell,调用 Web 请求错误(仅在 Windows Server 2012R 上)
- laravel - laravel homestead 中的任务调度器
- apache-spark - 火花数据框 - 将非列类型变量传递给udf
- node.js - Proactive Teams 消息 - trustServiceUrl “url”参数必须是字符串类型