EF Core 从 Google Cloud Run 连接到 Google Cloud SQL

阿尔文·斯蒂芬

我试过这些:

Data Source=/cloudsql/*****:asia-southeast2:*****;Initial Catalog=*****;Integrated Security=False;User ID=sqlserver;Password=MyPassword0!;MultipleActiveResultSets=True

/cloudsql/*****:asia-southeast2:*****这里描述的我的实例连接名称

我也尝试过这样的公共IP:

Data Source=***.***.***.***;Initial Catalog=*****;Integrated Security=False;User ID=sqlserver;Password=MyPassword0!;MultipleActiveResultSets=True

使用 IP 地址我的 SQL 实例公共 IP,但它不起作用。

我已经从 Cloud Run 启用了 sql 实例连接:

在此处输入图片说明

如何使用 EF Core 修复连接字符串?

这是我得到的错误:

Microsoft.Data.SqlClient.SqlException (0x80131904):建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供程序:SQL 网络接口,错误:25 - 连接字符串无效)

纪尧姆·布拉基埃

您正在尝试将 Cloud SQL SQL 服务器与 Cloud Run 结合使用。但是,如果您查看文档,则不支持此连接。

实际上支持连接,但 Cloud Run 服务打开一个 Unix 套接字来连接 SQL Server 实例。并且没有兼容 Unix Socket 的 SQL Server 客户端,因此您无法访问它。

为了解决您的问题,我建议您使用Private IP此页面部分。您也可以使用公共 IP 实现相同的配置(不要使用无服务器 VPC 连接器并转到您的 Cloud SQL 实例,并授权网络 0.0.0.0/0 访问您的实例),但是,因为您需要广泛开放授权网络,出于安全原因,我不建议您使用此选项。


编辑 1

因为我的英语不好,让我多解释一下!!

最好的方法是遵循文档页面:将 Cloud SQL 私有 IP 连接到您的 VPC,在 Cloud Run 中使用无服务器 VPC 连接器,并且在您的代码中,您可以使用连接字符串中的私有 IP 来访问数据库。

但是,您也可以使用我不推荐的公共 IP(请参阅下面的原因),至少在首次使用时是这样。事实上,您可以在代码中使用公共 IP 而不是私有 IP。由于您使用公共 IP,因此您不再需要 Cloud Run 服务上的无服务器 VPC 连接器(您不使用 VPC,而是使用互联网来访问互联网)。

但是,因为您使用互联网并且 Cloud Run 是一项多客户共享服务,所以您不知道您的源 IP。在 Cloud SQL 上,您需要允许授权网络部分中的任何 IP(0.0.0.0/0)访问您的数据库,这不是一个非常安全的配置。


或者,您可以在 Cloud Run 上创建更复杂的配置以安全地使用 Cloud SQL 公共 IP(但它变得非常复杂)。让我深入研究一下。

之前说过Cloud Run是共享服务,发起外呼(比如连接数据库)的时候不管理源IP。这是真的,但你可以控制它!

  • 首先,您(再次)需要在 Cloud Run 上有一个无服务器 VPC 连接器。并且您需要将出口设置为 ALL(将公共和私有流量路由到无服务器 VPC 连接器)。
  • 然后,在您的 VPC 中创建一个 Cloud NAT,并至少选择您的无服务器 VPC 连接器子网,以便在访问互联网时进行 NAT
  • 在您的 Cloud NAT 配置中保留一个公共 IP

现在,您已在 Cloud Run 服务上定义了一个公共静态 IP。您只能在您的 Cloud SQL 授权网络上授予它,以提高安全性并且不要让任何人访问您的 Cloud SQL 实例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从Cloud Functions连接Google Cloud SQL?

在Idea Intellij上,如何连接到Google Cloud SQL

是否可以从Google托管VM连接到Google Cloud SQL?

从Container Engine连接到Google Cloud SQL:无法解析Cloud sql代理

从App Engine连接到Google Cloud SQL时为ENOENT

将Sequelize连接到Google Cloud SQL

是否通过VPC连接到Google Cloud SQL?

从Google Cloud Run docker映像连接到Google Cloud SQL实例

连接到Cloud SQL上的postgresql实例:未为项目启用Google Cloud SQL API

使用私有IP从Google Functions连接到Cloud SQL

如何从Google Cloud Functions NodeJS连接到Google Cloud Storage

从Google Cloud Function python3.7连接到Google Cloud SQL

在Google App Engine中连接到Google Cloud SQL

如何从Cloud Run连接到Google Cloud Datastore?

如何通过暴露连接到Google Cloud SQL

如何从Google DataFlow连接到Cloud SQL

将Google Cloud Run Service连接到Google Cloud SQL数据库

无法连接到Google Cloud SQL。使用PHP Google SDK

在Google Cloud Endpoint中使用Sql2o连接到Cloud SQL

如何从VB.NET连接到Google Cloud SQL?

如何通过SSL连接到Google Cloud SQL?

将Google Cloud Compute连接到Google Cloud SQL错误2013(HY000)

从App Engine连接到Google Cloud SQL:拒绝访问

无法连接到 Google Cloud SQL API

将本地 Laravel 环境连接到 Google Cloud SQL - MySQL

如何将 Laravel env 连接到 SQL Google Cloud?

从 Google Cloud Run 连接到外部(Google Cloud Platform 之外)PostgreSQL 数据库

从元数据库云连接到 Google Cloud Sql

将 .NET Core 应用从 Google App Engine 迁移到 Google Cloud Run - SQL 连接问题