【问题标题】:Google Cloud Function access Cloud SQL PostgreSQL in another projectGoogle Cloud Function 在另一个项目中访问 Cloud SQL PostgreSQL
【发布时间】:2021-01-08 16:56:24
【问题描述】:

我的 Cloud Function 无法连接到我的 Cloud SQL PostgreSQL 实例。我收到错误:

psycopg2.OperationalError: could not connect to server: Connection timed out
Is the server running on host "my.private.db.ip" and accepting
TCP/IP connections on port 5432?

有 2 个项目(A 和 B),通过 VPC Peering 连接。

  • 项目 A - Cloud SQL PostgreSQL
  • 项目 B - 云函数

使用这种架构有限制吗?

  • 我正在尝试使用私有 IP 连接到我的数据库。
  • 项目 B 上的其他 Cloud Functions 已成功连接到项目 A 上的 VM 实例。

注意:我正在尝试不使用公共 ip 进行此连接。

【问题讨论】:

标签: postgresql google-cloud-platform cloud


【解决方案1】:

由于 VPC 对等传递性限制,您无法访问 Cloud SQL 实例。其实如果你看看VPC peering limitation

只有直接对等的网络才能进行通信。不支持传递对等互连。换言之,如果 VPC 网络 N1 与 N2 和 N3 对等,但 N2 和 N3 没有直接连接,则 VPC 网络 N2 无法通过 VPC Network Peering 与 VPC 网络 N3 通信。

在你的情况下,你达到了这个限制。您有一个从项目 A 到项目 B 对等,另一个从 Cloud SQL 到项目 A。

因此,您无法从项目 B 访问 Cloud SQL 实例。

解决方法是在项目之间创建一个 VPN(而不是对等互连)。或者接受在您的 Cloud SQL 实例上拥有公共 IP(无授权网络)以接受 Cloud SQL 代理连接。

我最近在wrote an article这个。

【讨论】:

    猜你喜欢
    • 2021-01-13
    • 1970-01-01
    • 2019-11-06
    • 1970-01-01
    • 2017-12-17
    • 2020-06-29
    • 2022-09-28
    • 2020-11-05
    • 1970-01-01
    相关资源
    最近更新 更多