Google Cloud Platform 使用内部 DNS 名称从 Cloud Functions 连接到 PostgreSQL 服务器
Google Cloud Platform Connect to PostgreSQL Server from Cloud Functions Using Internal DNS Name
我尝试使用内部 DNS 名称将 Functions 连接到 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
})
但是总是报这样的错误
Error: getaddrinfo ENOTFOUND sql-instance.c.my-project.internal sql-instance.c.my-project.internal:5432 at 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名称。
有解决办法吗?谢谢!
这是预期的行为,如本 document 中所述,对于专用连接,从函数访问云 SQL 实例的唯一方法是显式使用 IP。
云 SQL 上的 IP (public/private) 是静态的,这意味着这些 IP 是为每个实例保留的,不会更改或 re-utilized 直到删除 IP从实例或通过删除实例。
如果您关闭您的实例,您可以看到 IP (public/private) 仍然分配。
区域 DNS 仅适用于 Compute Engine VMs。
我尝试使用内部 DNS 名称将 Functions 连接到 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
})
但是总是报这样的错误
Error: getaddrinfo ENOTFOUND sql-instance.c.my-project.internal sql-instance.c.my-project.internal:5432 at 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名称。
有解决办法吗?谢谢!
这是预期的行为,如本 document 中所述,对于专用连接,从函数访问云 SQL 实例的唯一方法是显式使用 IP。
云 SQL 上的 IP (public/private) 是静态的,这意味着这些 IP 是为每个实例保留的,不会更改或 re-utilized 直到删除 IP从实例或通过删除实例。
如果您关闭您的实例,您可以看到 IP (public/private) 仍然分配。
区域 DNS 仅适用于 Compute Engine VMs。