【发布时间】:2020-09-14 19:05:20
【问题描述】:
我正在尝试使用记录在 here 中的 Google Cloud SQL Docker 代理从我的本地环境 (OSX) 连接到我的 Cloud SLQ (Postgres) 实例。运行代理时,我得到:
google: could not find default credentials.
请注意,我在正确项目的本地环境中运行 gcloud,并通过 application-default 登录进行了身份验证。我知道在类似的问题中,这是解决问题的方法,但这不是我的情况。
【问题讨论】:
-
澄清...当你说
application-default是什么意思?你跑gcloud auth application-default login了吗?还是您打印了不记名令牌?如果您运行gcloud auth list,您是否看到了您期望的帐户,并且是您想要的ACTIVE? -
哦,刚刚看到您正在运行 Docker 示例,而不仅仅是连接。你有服务帐号吗?您从
application-default print-access-token获得的令牌与您需要的不同。您需要一个 IAM 服务帐号密钥。因为它是一个 Docker 容器,我认为您可以通过在 Docker 容器的构建步骤中运行gcloud auth application-default login来做到这一点,但那是......因为它会为您提供最终用户凭据,这不是推荐使用代理的方式。 -
感谢您的回复。是的,我确实按照文档中的说明创建了一个服务帐户。该帐户具有云 sql 管理员角色,我正在使用其 JSON 密钥。
-
好的,错误消息暗示 1)您没有在该 docker run 命令中传递
-credential_file(请注意,您在该命令中有两个地方指定凭据文件,第二个将导致代理查找默认凭据)或 2)您在 -v 参数中指定的路径到 cred 文件的路径不正确。因此,在任何一种情况下,代理都会尝试查找默认凭据(例如,在 GOOGLE_APPLICATION_CREDENTIALS 环境变量中设置的路径),但它仍然无法找到任何东西。
标签: docker proxy google-cloud-sql gcloud