使用 psycopg2 访问 Cloud SQL 实例的配置

Config for using psycopg2 to access to Cloud SQL instance

我在 Cloud SQL 中使用 PostgreSQL 以及 psycopg2 库从我的 python 代码连接到数据库。我目前拥有的一个与 VPC 网络相关联,其中我的 google 计算引擎也在该 VPC 中。因此,在这种情况下,我连接到此云 sql 实例的配置可以使用私有 ip,我的配置如下所示:

config['db-cloudsql'] = {
   "host" : "10.x.x.x" # cloud sql private ip address
   "user" : "postgres"
   "password" :"xxxxx"
   "database" : "postgres" 
}

但现在我有来自另一个 VPC 网络的另一个 vm 实例需要访问此云 sql 实例。我知道我可以使用 public ip 访问云 sql 实例。 (通过将我的虚拟机添加到授权网络)但是这个虚拟机需要经常访问云 sql 实例。所以我不确定使用 public ip 访问的成本是否会比使用私有 ip 访问的成本更高(找不到任何相关文档)。我尝试对等连接 2 个 vpc 网络以使用私有 ip 进行访问,但发现我无法使用此方法使用私有 ip from this document

连接到 sql

我从文档中发现我可以使用 instance connection name 作为我的配置的主机,所以它应该是这样的:

config['db-cloudsql'] = {
   "host" : "project-name:asia-southeast1:mydbname" #instance connection name
   "user" : "postgres"
   "password" :"xxxxx"
   "database" : "postgres" 
}

我还没有尝试过这种方法,它可能不起作用,但如果它以某种方式起作用,它与使用 public ip 地址在成本方面有何不同?

谢谢

如您在此 PostgreSQL pricing documentation 中所见,使用 public IP 或云 SQL 端的连接名称时,定价没有差异。如果您想尽可能降低成本,您可以尝试将您的 Compute Engine 实例保持在同一区域,或者至少与您的 Cloud SQL 实例保持在同一大陆。

看来你的问题可以归结为两部分:

Are there any alternatives to public IP or private IP?

没有。您必须使用一个或另一个连接到您的 Cloud SQL 实例。私有 IP 允许从 VPC 访问,Public IP 几乎在其他任何地方都被使用。

Cost of public IP vs private IP

您可以找到区域之间 costs here. In short, there is not really any extra charges with a Public IP. You do have to pay $.01 per hour while the instance is idle (to reserve the public IP address), and just like private IPs, you are responsible for costs of the Network Egress 的细分。

I can use instance connection name as a host for my config

这是不正确的。如果您使用 Cloud SQL Proxy 进行连接,它可以创建一个 Unix 域套接字(位于 /cloudsql/INSTANCE_CONNECTION_NAME),可用于连接到您的实例。但是,代理仅验证您的连接 - 它仍然需要有效的连接路径(Public vs Private)。