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

标签 python postgresql psycopg2 google-cloud-sql vpc

我在 Cloud SQL 中使用 PostgreSQL 以及 psycopg2 库从我的 python 代码连接到数据库。我目前拥有的一个与 VPC 网络相关联,我的谷歌计算引擎也在该 VPC 中。因此,在这种情况下,我连接到此云 sql 实例的配置可以使用私有(private) 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 访问的成本是否会比使用私有(private) ip 访问的成本更高(找不到任何相关文档)。我尝试对等连接 2 个 vpc 网络以使用私有(private) ip 进行访问,但发现我无法使用此方法通过私有(private) ip 连接到 sql from this document

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

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

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

谢谢

最佳答案

您的问题似乎可以归结为两部分:

Are there any alternatives to public IP or private IP?

没有。您必须使用其中之一来连接到您的 Cloud SQL 实例。私有(private) IP 允许从 VPC 访问,公共(public) IP 几乎在其他任何地方都使用。

Cost of public IP vs private IP

您可以找到 costs here 的细目分类.简而言之,公共(public) IP 实际上没有任何额外费用。当实例空闲时,您必须每小时支付 0.01 美元(以保留公共(public) IP 地址),就像私有(private) IP 一样,您负责 Network Egress 的费用。区域之间。

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

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

关于python - 使用 psycopg2 访问 Cloud SQL 实例的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58148320/

相关文章:

带有单独凭证文件的 Django PostgreSQL 设置?

python - Elasticsearch:使用python从索引中检索所有文档

python - 从 v1.9 升级到 v1.10 后的 NoReverseMatch

python - 以全尺寸显示标签中的图像

sql - last_value() 和分组依据

SQL从另一个表中插入新值

django - 使用 psycopg2 将 django 与 postgresql 连接起来

python - python中的字典声明

sql - 在 PostgreSQL 中插入后计算平均值

python - PostgreSQL DROP TABLE 查询卡住