amazon-web-services - AWS Lambda 和 Aurora 数据库超时
问题描述
我正在尝试使用 Lambda 函数连接到 Amazon Aurora Serverless 数据库,但是,每次我想建立连接时都会超时。我将 AWSLambdaVPCAccessExecutionRole 附加到我的函数并设置了我的数据库正在其中运行的相同安全组。我的入站和出站规则配置为允许同一安全组内端口 3306 上的 TCP 流量。
从来没有少我得到以下错误:
{
"errorType": "Error",
"errorMessage": "connect ETIMEDOUT",
"code": "ETIMEDOUT",
"errorno": "ETIMEDOUT",
"syscall": "connect",
"fatal": true,
"stack": [
"Error: connect ETIMEDOUT",
" at Connection._handleConnectTimeout (/var/task/node_modules/mysql/lib/Connection.js:409:13)",
" at Object.onceWrapper (events.js:416:28)",
" at Socket.emit (events.js:310:20)",
" at Socket._onTimeout (net.js:479:8)",
" at listOnTimeout (internal/timers.js:549:17)",
" at processTimers (internal/timers.js:492:7)",
" --------------------",
" at Protocol._enqueue (/var/task/node_modules/mysql/lib/protocol/Protocol.js:144:48)",
" at Protocol.handshake (/var/task/node_modules/mysql/lib/protocol/Protocol.js:51:23)",
" at Connection.connect (/var/task/node_modules/mysql/lib/Connection.js:116:18)",
" at Object.<anonymous> (/var/task/src/handlers/CognitoVerifyTrigger.js:50:9)",
" at Module._compile (internal/modules/cjs/loader.js:1133:30)",
" at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)",
" at Module.load (internal/modules/cjs/loader.js:977:32)",
" at Function.Module._load (internal/modules/cjs/loader.js:877:14)",
" at Module.require (internal/modules/cjs/loader.js:1019:19)",
" at require (internal/modules/cjs/helpers.js:77:18)"
]
}
我认为某处存在配置问题,因为我可以很好地连接到本地测试数据库。但万一我错过了什么是我的代码:
const mysql = require('mysql');
var con = mysql.createConnection({
host: '*******.*********.eu-central-1.rds.amazonaws.com',
user: '****',
password: '****',
database: 'userdata',
port: 3306
});
con.connect((err) => {
if (err) {
console.log('Failed to establish database connection.');
throw err;
}
console.log('Connection to database has been established.');
});
在这一点上,我不知道为什么连接失败。Lambda 和 RDS 在同一个安全组中运行,Lambda 具有访问 VPC 的权限,并配置了入站/出站规则。使用 EC2 实例时,我可以连接到我的 Aurora 数据库,因此我认为我的 Lambda 配置有问题。
除了属性“Role”和“VpcConfig”之外,我是否必须向我的 Lambda 模板文件添加一些特殊的东西?
解决方案
尝试将您的 lambda 安全组设置为 RDS 安全组的入站源解决了此问题。
推荐阅读
- python - 尝试运行不和谐机器人时出错
- pine-script - 如何使策略在 pine 脚本(交易视图)中有警报(有声音)
- javascript - 如何在不刷新页面的情况下动态更改 html 中的 spring mvc 变量?
- beautifulsoup -
- python - 在 Django 表单中使用 self.cleaned_data[] 的 Key_error
- python-3.x - 请评论如何在熊猫中正确地做到这一点
- python - Imbalaced-learn 即使已安装也无法正常工作
- reactjs - 在 React 中渲染来自 Firebase Firestore 的数据
- c++ - 如何让这个打印到outfile?(c++)
- android - java.lang.ClassCastException:com.example.readdoang.ui.login_regist_activity.LoginRegistActivity 无法转换为 com