Python 使用psycopg2访问云SQL实例的配置

Python 使用psycopg2访问云SQL实例的配置,python,postgresql,psycopg2,google-cloud-sql,vpc,Python,Postgresql,Psycopg2,Google Cloud Sql,Vpc,我正在使用云SQL中的PostgreSQL和psycopg2库从python代码连接到数据库。我现在拥有的是一个专有网络,我的谷歌计算引擎也在这个专有网络中。因此,在本例中,连接到此云sql实例的我的配置可以使用私有ip,我的配置如下所示: config['db-cloudsql'] = { "host" : "10.x.x.x" # cloud sql private ip address "user" : "postgres" "password" :"xxxxx"

我正在使用云SQL中的PostgreSQL和psycopg2库从python代码连接到数据库。我现在拥有的是一个专有网络,我的谷歌计算引擎也在这个专有网络中。因此,在本例中,连接到此云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访问的成本更高。我找不到任何相关文档。我尝试使用专用ip对2个vpc网络进行对等访问,但发现无法使用此方法使用专用ip连接到sql

我从文档中发现,我可以使用实例连接名称作为配置的主机,因此它应该类似于:

config['db-cloudsql'] = {
   "host" : "project-name:asia-southeast1:mydbname" #instance connection name
   "user" : "postgres"
   "password" :"xxxxx"
   "database" : "postgres" 
}
我还没有尝试过这种方法,它可能不起作用,但如果它真的起作用,它在成本方面与使用公共ip地址有什么不同


谢谢

正如您在本文中所看到的,由于您在云SQL端使用公共IP或连接名称,因此定价没有差别。如果您希望尽可能降低成本,您可以尝试将您的计算引擎实例与您的云SQL实例保持在同一地区,或者至少与您的云SQL实例保持在同一大陆。

如您所见,当您在云SQL端使用公共IP或连接名称时,定价没有差异。如果您希望尽可能降低成本,您可以尝试将您的计算引擎实例与您的云SQL实例保持在同一地区,或者至少保持在同一大陆。

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

是否有公共IP或私有IP的替代方案

不可以。您必须使用其中一个连接到您的云SQL实例。私有IP允许从VPC访问,而公共IP几乎在其他任何地方都使用

公共IP与私有IP的成本

你可以找到这本书的细目。简言之,公共IP实际上没有任何额外费用。在实例空闲时,您必须每小时支付0.01美元才能保留公共IP地址,并且与私有IP一样,您需要负责区域之间的通信费用

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


这是不正确的。如果您使用来连接,它可以在/cloudsql/INSTANCE\u CONNECTION\u名称处创建一个Unix域套接字,用于连接到您的实例。但是,代理仅验证您的连接-它仍然需要一个有效的连接路径公共与私有。

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

是否有公共IP或私有IP的替代方案

不可以。您必须使用其中一个连接到您的云SQL实例。私有IP允许从VPC访问,而公共IP几乎在其他任何地方都使用

公共IP与私有IP的成本

你可以找到这本书的细目。简言之,公共IP实际上没有任何额外费用。在实例空闲时,您必须每小时支付0.01美元才能保留公共IP地址,并且与私有IP一样,您需要负责区域之间的通信费用

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


这是不正确的。如果您使用来连接,它可以在/cloudsql/INSTANCE\u CONNECTION\u名称处创建一个Unix域套接字,用于连接到您的实例。但是,代理仅对您的连接进行身份验证-它仍然需要一个有效的连接路径“公共”与“私有”。

您能提供这会给您带来的错误吗?这将帮助其他人提供更简洁的答案。我目前没有任何错误。还没有使用实例连接时间尝试配置,但我的情况是,我不确定是否应该使用公共ip或使用实例连接名称访问云sql实例。要找出哪一个更具成本效益?您能否提供这会给您带来的错误?这将帮助其他人提供更简洁的答案。我目前没有任何错误。还没有使用实例连接时间尝试配置,但我的情况是,我不确定是否应该使用公共ip或使用实例连接名称访问云sql实例。要找出哪一个更经济高效?有关云SQL代理的部分不正确-代理仅验证连接。即使使用代理,您仍然只能从VPC使用专用IP进行连接。有关云SQL代理的内容不正确-代理仅验证连接。即使使用代理,您仍然只能从VPC使用专用IP进行连接。