我在google cloud中创建了一个google cloud函数,它将连接到我在google cloud中创建的postgresql实例。
我正在使用'pg'节点模块。
我已经为此创建了一个私有IP。
我收到以下错误:
错误:由于在timeout.ConnectionTimeouthAndle.SetTimeout(/workspace/node_modules/pg/lib/client.js:106:28)在ontimeout(Timers.js:436:11)在tryOnTimeout(Timers.js:300:5)在listOnTimeout(Timers.js:263:5)在Timer.ProcessTimers(Timers.js:223:10)处的连接超时,连接终止
在谷歌云中尝试查询数据库时。
这是我在谷歌云功能中使用的配置。
{“host”:“”,“user”:“”,“pw”:“”,“db”:“ 请帮帮我
根据官方文件:
从Cloud Functions连接到Cloud SQL
要使用私有IP直接连接,您需要:
1.确保上面创建的云SQL实例有私有IP地址。如果需要添加一个,请参阅配置专用IP页获取说明。
2.在与云SQL实例相同的VPC网络中创建一个无服务器VPC访问连接器。除非您使用的是共享VPC,否则连接器必须与使用它的资源位于同一项目和区域,但连接器可以向不同区域的资源发送流量。
3.配置云功能使用连接器。使用实例的专用IP和端口5432进行连接。
4.使用实例的专用IP和端口5432连接
您还可以找到节点js代码来建立与数据库的连接:
const connectWithTcp = config => {
// Extract host and port from socket address
const dbSocketAddr = process.env.DB_HOST.split(':'); // e.g. '127.0.0.1:5432'
// Establish a connection to the database
return Knex({
client: 'pg',
connection: {
user: process.env.DB_USER, // e.g. 'my-user'
password: process.env.DB_PASS, // e.g. 'my-user-password'
database: process.env.DB_NAME, // e.g. 'my-database'
host: dbSocketAddr[0], // e.g. '127.0.0.1'
port: dbSocketAddr[1], // e.g. '5432'
},
// ... Specify additional properties here.
...config,
});
};