Amazon web services AWS Lambda和Aurora数据库超时
我正在尝试使用Lambda函数连接到Amazon Aurora无服务器数据库,但是,每次我想要建立连接时,它都会超时。我将AWSLambdaVPCAccessExecutionRole附加到我的函数,并设置了运行数据库的同一安全组。我的入站和出站规则配置为允许同一安全组内端口3306上的TCP通信。Amazon web services AWS Lambda和Aurora数据库超时,amazon-web-services,aws-lambda,amazon-rds,Amazon Web Services,Aws Lambda,Amazon Rds,我正在尝试使用Lambda函数连接到Amazon Aurora无服务器数据库,但是,每次我想要建立连接时,它都会超时。我将AWSLambdaVPCAccessExecutionRole附加到我的函数,并设置了运行数据库的同一安全组。我的入站和出站规则配置为允许同一安全组内端口3306上的TCP通信。 尽管如此,我还是会遇到以下错误: { "errorType": "Error", "errorMessage": &quo
尽管如此,我还是会遇到以下错误:
{
"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)"
]
}
在这一点上,我不知道为什么连接失败。Lambda和RDS在同一个安全组中运行,Lambda拥有访问VPC的权限,配置了入站/出站规则。
当使用EC2实例时,我可以连接到我的Aurora数据库,因此我认为我的Lambda配置有问题
除了属性“Role”和“VpcConfig”之外,我是否还需要在Lambda模板文件中添加一些特殊的内容?尝试将Lambda的安全组设置为RDS安全组的入站源,以解决此问题。是自定义VPC还是默认VPC?@Marcin我当前正在使用默认的VPC。找到解决方案了吗??
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.');
});