【发布时间】:2020-02-28 22:34:42
【问题描述】:
我已经通过无服务器框架部署了我的 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 连接还是其他原因。
请指教
【问题讨论】:
-
您能分享一下您是如何定义 DB_HOST 的吗?
-
我已经尝试过
remotemysql.com和37.59.55.185在我的本地调用中都可以正常工作。 -
您是否尝试删除数据库代码并查看是否仍然出现这种情况?可能是权限问题。
-
@Madeo 哪种权限?除了数据库一切正常。它只是数据库连接超时
-
你确定 lambda 可以连接到互联网吗?
标签: amazon-web-services aws-lambda