从 Google 云 运行 连接到外部(Google 云平台之外)PostgreSQL 数据库

Connecting to An External (outside of Google Cloud Platform) PostgreSQL db from Google Cloud Run

我一直在兜圈子试图寻找这方面的信息,我找到的只是从 Google 云 [=50= 连接到 Google 云 SQL ] - 这不是我想要的。

我在 GCP 之外的服务器上安装了一个 PostgreSQL 数据库。我有一个 R Shiny 应用程序,通过 Google 云 运行 作为 docker 容器部署,需要访问位于 GCP 之外的 PostgreSQL 数据库。

当我 运行 我的本地计算机上的 R Shiny docker 容器使用 docker 桌面时,它工作正常。连接已建立,我没有看到任何错误。我直接使用 username/password 登录到我的 postgresql 数据库,我也可以登录,没问题。

当我 运行 我的 R Shiny docker 容器在 Google Cloud 运行 中时,我得到以下错误:

Warning: Error in postgresqlNewConnection: RS-DBI driver: (could not connect xxxx@xxpostgresxx.client.ext:5432 on dbname "db_name": could not translate host name "xxpostgresxx.client.ext" to address: Name or service not known

在我的*.R文件中,连接是这样写的:

drv <- dbDriver("PostgreSQL")
  con <- dbConnect(drv, host = "xxx.xxx.ext", port = "5432", dbname = "db_name", user = "xxxx", password = "xxxx")

这是我的外部 PostgreSQL 数据库不允许 Google 云 运行 url 访问其数据库的问题吗?与“RS-DBI 驱动程序”本身有关吗?还是我需要在 GCP 的某处设置一些东西才能使此连接正常工作?

我试过在 RPostgreSQL 库(有人提到过)之前引入 DBI 库,但这并没有解决任何问题。

我是 Google Cloud Platform 的新手,所以您可能需要在解释中提供更多细节。非常感谢您。

=====================================

更新:

因此,为了完成这项工作,我不得不设置一个“无服务器 VPC 访问”,无需联网人员,以允许我的云 运行 服务连接到我们私有 VPN 网络中的资源。

Cloud 运行 需要一个 public IP 或 DNS 名称来定位您的 Postgres 数据库;使用 xxx.xxx.ext.

似乎有问题

我不熟悉 .ext。这是合法的 public Internet DNS 名称吗?如果不是,那是你的(第一个)问题。

推论:互联网上的任何其他实体都可以使用 Postgres 客户端和合适的凭据连接到该 Postgres 数据库吗?