【问题标题】:Google Cloud Platform Connect to PostgreSQL Server from Cloud Functions Using Internal DNS NameGoogle Cloud Platform 使用内部 DNS 名称从 Cloud Functions 连接到 PostgreSQL 服务器
【发布时间】:2020-12-31 06:30:31
【问题描述】:

我尝试使用内部 DNS 名称将函数连接到 PostgreSQL 服务器。

请注意,我已正确创建和设置无服务器 VPC 连接器。

我使用的内部 DNS 名称基于此文档:https://cloud.google.com/compute/docs/ip-addresses#instancenames

这是连接设置的样子

const client = new Client({
        user: process.env.USER,
        password: process.env.PASSWORD,
        host: 'sql-instance.c.my-project.internal',
        port: process.env.PORT,
        database: process.env.DATABASE
    })

但它总是显示这样的错误

错误:getaddrinfo ENOTFOUND sql-instance.c.my-project.internal sql-instance.c.my-project.internal:5432 在 GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:56:26)

如果我尝试像这样使用内部服务器地址

const client = new Client({
        user: process.env.USER,
        password: process.env.PASSWORD,
        host: '10.0.3.6',
        port: process.env.PORT,
        database: process.env.DATABASE
    })

这很好用。但是我怕内部ip变了,所以我想使用内部DNS名称。

有解决办法吗?谢谢!

【问题讨论】:

    标签: node.js postgresql google-cloud-platform google-cloud-functions google-cloud-sql


    【解决方案1】:

    正如document 中所述,这是一种预期行为,对于私有连接,从函数访问 Cloud SQL 实例的唯一方法是显式使用 IP。

    Cloud SQL 上的 IP(公共/私有)是静态的,这意味着这些 IP 是为每个实例保留的,并且在从实例中删除 IP 或删除实例之前不会更改或重新使用。

    如果您关闭您的实例,您可以看到 IP(公共/私有)仍然分配。

    区域 DNS 仅适用于 Compute Engine VMs

    【讨论】:

      猜你喜欢
      • 2021-10-21
      • 2020-03-22
      • 1970-01-01
      • 2019-07-11
      • 1970-01-01
      • 2017-08-18
      • 2020-09-25
      • 1970-01-01
      • 2013-06-15
      相关资源
      最近更新 更多