【发布时间】:2017-07-25 02:39:42
【问题描述】:
我正在尝试使用连接到我的 RDS 数据库的 Node.js 编写一个 Lambda 函数。该数据库正在运行并且可以从我的 Elastic Beanstalk 环境中访问。当我运行该函数时,它会返回一个超时错误。
尝试将超时时间增加到 5 分钟,结果完全相同。
经过一番研究,我得出的结论是,这可能是一个安全问题,但在亚马逊的文档或this 答案中找不到解决方案(这是我唯一能找到的关于该主题的答案)。
以下是安全细节:
- RDS 和 Lambda 都在同一个安全组中。
- RDS 具有所有流量入站和出站规则。
- Lambda 在其角色中具有 AmazonVPCFullAccess 策略。
我的代码是:
'use strict';
console.log("Loading getContacts function");
var AWS = require('aws-sdk');
var mysql = require('mysql');
exports.handler = (event, context, callback) => {
var connection = mysql.createConnection({
host : '...',
user : '...',
password : '...',
port : 3306,
database: 'ebdb',
debug : false
});
connection.connect(function(err) {
if (err) callback(null, 'error ' +err);
else callback(null, 'Success');
});
};
我得到的结果是:
"errorMessage": "2017-03-05T05:57:46.851Z 9ae64c49-0168-11e7-b49a-a1e77ae6f56c Task timed out after 10.00 seconds"
【问题讨论】:
-
您是否为 Lambda 函数启用了 VPC 访问?
-
是的,Lambda 和 RDS 都在同一个(默认)VPC 上
标签: node.js amazon-web-services aws-lambda rds