Google云函数访问云SQL PostgreSQL数据库超时
这是我的谷歌云功能:Google云函数访问云SQL PostgreSQL数据库超时,postgresql,google-cloud-platform,google-cloud-functions,google-cloud-sql,Postgresql,Google Cloud Platform,Google Cloud Functions,Google Cloud Sql,这是我的谷歌云功能: async function getPSQLdata() { const pg = require('pg'); var pgConfig = { user: 'postgres', password: '[MY PASSWORD]', database: '[MY DB NAME]', host: '[PUBLIC IP ADDRESS OF DB INSTANCE]' }; var pgPool; if (!pg
async function getPSQLdata() {
const pg = require('pg');
var pgConfig = {
user: 'postgres',
password: '[MY PASSWORD]',
database: '[MY DB NAME]',
host: '[PUBLIC IP ADDRESS OF DB INSTANCE]'
};
var pgPool;
if (!pgPool) {
pgPool = new pg.Pool(pgConfig);
}
const scores = await pgPool
.query("SELECT * from table")
.then(res => console.log(res.rows[0]))
.catch(e => console.error(e.stack));
}
exports.dailyFill = async function main() {
await getPSQLdata();
};
谷歌云日志显示:“函数执行耗时60003毫秒,状态为‘超时’”
到目前为止,我所尝试的:
- 我已经在GCP项目中启用了云SQL管理API
- 我已经在GCP项目中启用了云SQL API
- 我已将Google Cloud Function service帐户添加到IAM中,作为“云SQL客户端”和“项目编辑器”角色
socketPath:'/cloudsql/INSTANCE\u CONNECTION\u NAME'
您的函数应该返回一个承诺,否则它将超时。将getPSQLdata
中的最后一条语句更改为return pgPool.query(“SELECT*from table”)。然后(res=>console.log(res.rows[0])。catch(e=>console.error(e.stack))
并将此函数导出为exports.dailyFill=getPSQLdata
Thx。“将此函数导出为exports.dailyFill=getPSQLdata”是什么意思?同意此最佳做法,如果愿意,也可以使用专用IP。在任何情况下,使用公共IP(我想是开放的)绝对不推荐!请务必确定,您是否用云SQL实例详细信息中的连接名称替换了实例\连接\名称?其格式应为: