mysql - 节点 Lambda:MySQL 查询从不运行
问题描述
使用 Postman 进行测试,我会尽量使这一点尽可能清楚,如果这没有意义,请告知。
我有一个 Lambda,它在 AWS 上使用 MySQL RDS 数据库,并且在访问 AWS 上的数据库时可以在本地正常工作。从auth
端点成功获取 JWT 后,我尝试访问login
端点并得到502 Bad Gateway
. 使用 CloudWatch 日志,我可以在登录查询运行之前跟踪故障。我已经确认我的 MySQL 配置是正确的并且我已经连接到数据库。lambda 和数据库在同一个区域DB: us-east-1f
,lambda: us-east-1
.
我已经确认此端点的 OPTIONS 和 POST 请求方法都设置为在 API 网关中启用了 CORS。我正在使用我的 serverless.yml 来设置cors: true
所有端点,即使我app.use(cors())
在我的索引文件中使用。
502 的错误消息是,{"message": "Internal server error"}
这是我的代码中的失败点:
'use strict';
const mysql = require('./index');
module.exports = {
loginSql: async (email, password) => {
// MAKES IT HERE AND THE PARAMS ARE CORRECT
try {
console.log('IN TRY %%%%%%%%%%%%%%');
// SEEMS TO DIE HERE
const results = await mysql.query({
sql: `SELECT
id, first_name, last_name, email
FROM users
WHERE email = ?
AND password = ?`,
timeout: 50000,
values: [email, password],
});
// NEVER MAKES IT HERE /////////
console.log('QUERY RAN %%%%%%%%%%%%');
mysql.end();
if (results.length < 1) return false;
return results;
} catch (error) {
// DOESN'T THROW ERROR
console.log('LOGIN DB ERROR', error);
throw new Error('LOGIN DB ERROR THROWN', error);
}
},
};
解决方案
我刚刚创建了完全相同的用例,因为我有一个用 Java 编写的 LAMBDA 函数,用于查询来自 MySQL RDS 实例的数据。它完美地工作。
这是您的问题:
要从 Lambda 函数连接到 RDS 实例,您必须使用与 RDS 实例相同的安全组设置入站规则。有关详细信息,如何配置 Lambda 函数以连接到 RDS 实例?.
推荐阅读
- google-assistant-sdk - Raspberry pi 分段错误上的 Google 助理
- azure - Chef 节点在首次启动期间未始终在服务器上保存运行列表 - Azure 规模集 VM
- java - 如何启用 checkstyle 的 MissingOverride 检查?
- javascript - 如何使用 forEach 和 Mongoose 查询计算最终价格?
- python - UDP套接字服务器,一次3个监听套接字[Python]
- ios - 带有 UITableView 单元的 Swift 4 AlamofireImage
- node.js - Express 不会仅在 localhost 上设置“set-cookies”标头
- json - Perl、JSON 和 Discord 表情符号
- python - 如何使用主进程中的 KeyboardInterrupt 来停止子进程?
- qt - 如何使用 Qt 格式字符串打印出 unix 时间?