我是 Google Cloud 的新手,目前正在编写一个脚本来连接到托管在 Cloud SQL 中的 PostgreSQL 实例。
我的脚本非常简单:它应该连接到 Postgre 实例并创建一些表,只需初始化数据库即可。我知道该脚本可以工作,因为我创建了该脚本的 docker 镜像并在 Cloud Run 上执行了一个作业,它运行完美。但是当我尝试在本地机器上运行它时,我的脚本失败了。
我尝试了两种方式进行身份验证:
- 服务帐户。我创建了一个服务帐户并赋予它适当的 Cloud SQL 权限,下载了 json,并在 GOOGLE_APPLICATIONS_CREDENTIALS 上设置了路径。
- 在 上进行身份验证
gcloud auth application-default login
。将我的 Google Cloud 帐户的凭据创建到 ~/.config/gcloud
在这两种情况下,都无法建立与数据库的连接,并且脚本在几分钟后超时。我认为身份验证参数或权限在某种程度上不正确,因此我在远程服务器上使用上述身份验证方法测试了相同的脚本,并且该脚本可以正常工作。相同的代码、相同的身份验证在服务器上可以正常工作,但在我的计算机上却不行。所以这肯定是我本地计算机上的问题。
关于我的本地连接。我所在的国家/地区的互联网限制非常严格,因此,为了能够使用 Google Cloud(甚至是 Google),我必须通过 VPN 路由所有连接。使用 Google Cloud 没有问题,我可以访问平台并使用 gcloud 命令,例如上面的命令gcloud auth application-default login
有效,但是当我必须对 Google 应用程序进行经过身份验证的操作时,就会出现问题。这可能是什么原因?Google Cloud 身份验证不是通过 VPN 进行的吗?是否有额外的步骤可以通过 VPN 使用它?
非常感谢你的帮助。
编辑:简短编辑,我在网上查找,但没有找到类似问题的文章。所以我决定在这里发帖。
答案1
将此作为社区发布,以造福他人。
正如@John Hanley提到的:
使用 Google Cloud SQL Auth Proxy:关于 Cloud SQL Auth Proxy
Cloud SQL Auth Proxy 是一个 Cloud SQL 连接器,它提供对您的实例的安全访问,而无需授权网络或配置 SSL。