将Google Cloud应用引擎连接到其Cloud SQL实例-允许数据库访问

3

我有一个Google Cloud项目,其中包含一个应用程序和一个Cloud SQL实例。应用程序发出的SQL请求超时。启用了私有IP连接。如果我将应用程序实例的IP显式添加到SQL实例的公共授权网络中,则可以正常工作。但这显然是一个糟糕的解决方案,因为这些IP在每次部署时都会更改。如何永久授予应用程序访问权限?


你使用的是灵活环境还是标准环境?你尝试过遵循这份文档吗? - Joan Grau Noël
我正在使用灵活环境。我按照文档以及这个答案的指示进行操作:https://stackoverflow.com/questions/54180722/connecting-node-js-app-on-google-cloud-app-engine-to-a-google-cloud-sql-instance/54330069#54330069 这对于另一个非常相似的项目有效,但对于这个项目无效。 - Boris K
您是否正在尝试连接到位于另一个项目中的Cloud SQL实例? - Joan Grau Noël
不,同一个项目。 - Boris K
1
在您链接的答案中,有这一行 if (process.env.INSTANCE_CONNECTION_NAME && process.env.NODE_ENV === 'production') {。您能否尝试删除此条件,并在 config 字典中直接添加 socketPath:``/cloudsql/${process.env.INSTANCE_CONNECTION_NAME};(由于格式问题,此最后一行多了一个 ,您应该将其删除)。 - Joan Grau Noël
显示剩余2条评论
1个回答

3
私有IP只能由同一虚拟专用云(VPC)上的其他服务访问。App Engine应用程序目前无法访问VPC网络。
编辑:App Engine最近发布了无服务器VPC访问,这意味着现在可以配置以通过私有IP连接。
App Engine标准版确实提供了一个Unix域套接字,用于与Cloud SQL实例进行交互。只需告诉您的应用程序使用位于/cloudsql/<INSTANCE_CONNECTION_NAME>的套接字(使用您实例的连接名称),它就应该能够连接。如果您正在使用跨产品或跨区域设置,则可以在此处找到更多说明。

然而,谷歌文档(https://cloud.google.com/blog/products/databases/cloud-sql-now-supports-private-connections-and-app-engine-second-generation-runtimes)表示这是可能的,但没有提供任何示例(我花了几个下午尝试建立连接)。我还尝试手动创建VPC对等连接,但必须选择源和目标VPC,但Appengine VPC没有显示出来。 - Alex F
@AlexF 那篇博客文章宣布了两个不同的功能——第一个是私有 IP 支持正式上线,第二个是支持 AppEngine 运行时。然而,上周推出了一项新功能(无服务器 VPC 访问),可以实现这一点(我已更新原始答案以反映这一点)。 - kurtisvg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接