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

问题描述 投票:0回答:2

我正在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实例。我知道我可以使用公共ip访问云sql实例。 (通过将我的虚拟机添加到授权网络),但是该虚拟机需要非常频繁地访问云sql实例。因此,我不确定与使用私有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" 
}

我还没有尝试过这种方法,它可能不起作用,但是如果它能以某种方式起作用,那么在成本方面,它与使用公共ip addess有何不同?

谢谢

python postgresql psycopg2 google-cloud-sql vpc
2个回答
0
投票

您可以在此PostgreSQL pricing documentation中看到,因为使用公共IP或Cloud SQL端的连接名称,价格没有差异。如果您希望将成本保持在最低水平,则可以尝试将Compute Engine实例与Cloud SQL实例保持在同一区域,或至少位于同一大陆。


0
投票

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

公共IP或私有IP是否有其他选择?

否。您必须使用一个或另一个连接到Cloud SQL实例。专用IP允许从VPC进行访问,其他地方几乎都使用了公用IP。

公共IP与私有IP的成本

您可以找到costs here的细目。简而言之,使用公共IP确实没有任何额外费用。您确实必须在实例闲置时每小时支付$ .01(以保留公共IP地址),并且与私有IP一样,您负责区域之间Network Egress的费用。

我可以将实例连接名称用作配置的主机

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

© www.soinside.com 2019 - 2024. All rights reserved.