我已经通过无服务器框架部署了lambda函数。当我在本地调用该函数时,它工作正常。但是在AWS Lambda环境中,它无法建立与remotemysql.com上托管的MYSQL的连接。每次都会给出超时错误。
试图增加超时时间,但无济于事
sequelize = new Sequelize(
process.env.DB_NAME,
process.env.DB_USER,
process.env.DB_PASSWORD,
{
host: process.env.DB_HOST,
dialect: "mysql",
logging: false,
connectTimeout: 60000
}
);
sequelize
.authenticate()
.then(() => {
logger.info("Database connection established");
// do my work
// some api calls to xys hosts outside servers
})
.catch(error => {
logger.error("Database connection failed", {
code: error.original.code,
errno: error.original.errno
});
process.exit(1);
});
我的函数不在任何VPC内,并且允许访问互联网,因为我已验证它正在返回对AWS以外的其他服务所做的API响应。
我不确定是否是因为TCP连接或其他原因。
请告知
答案 0 :(得分:0)
好的,所以我已经弄清楚了导致问题的原因。这不是因为连通性,而是异步处理程序有问题。
我的处理程序就像
exports.handler = async () => { ... }
我删除了async
,现在一切正常。