我正在构建一个连接到 AWS Aurora Serverless Postgres 的 lambda api。
- 按照 AWS 说明设置兼容 Postgres 的 Aurora Serverless(适用于 MySql,但对 Postgres 仍然有用):https ://aws.amazon.com/getting-started/tutorials/configure-connect-serverless-mysql-database-aurora/
我在安全组的入站中添加了端口 5432
我还使用 data-api-client 来查询数据库(https://github.com/jeremydaly/data-api-client)
在无服务器框架中构建 API lambda,设置
timeout
为 1 分钟,添加角色AmazonRDSDataFullAccess
我的 lambda 代码(内置于无服务器框架中)很简单:
async function query_db(_sql) {
const data = require('data-api-client')({
secretArn: constants.DBSecretsStoreArn,
resourceArn: constants.DBAuroraClusterArn,
database: constants.DatabaseName
});
try {
let result = await data.query(_sql);
return result.records;
} catch (error) {
console.log('Lambda :: query_db :: Error: ' + error);
return error;
}
}
async function run() {
let sql = 'SELECT * FROM products LIMIT 10';
let result = await query_db(sql);
console.log('result: '+ JSON.stringify(result));
return callback(null, {
headers: {
'Access-Control-Allow-Origin': '*'
},
statusCode: 200,
body: JSON.stringify({msg: 'done})
});
}
结果:
- 它在本地成功运行(无服务器离线)
- 部署后,超时,返回502,错误:“内部服务器错误”
任何建议表示赞赏。