我正在尝试将AWS Lambda函数连接到RDS中的数据库中,我跟踪了一些帖子,这些帖子表明它们都需要在同一个VPC中,但亚马逊支持部门告诉我,情况并非如此。虽然我已经尝试了一个多子网VPC与nat网关和安全组允许访问,但没有占上风。
我能够在或MySQL工作台中与数据库实例对话,而不会出现任何问题。
10:13 2017-05-16T10:13:00.509Z回调connection.connect() 10:13:00 2017-05-16T10:13:00.547Z错误ETIMEDOUT
我已经尝试了几种不同的连接方法,我使用了一个例子,如文章中所示,唯一的区别是这个数据库不是在RDS中。
Querying a MySQL database from a NodeJS AWS Lambda Function
我尝试过MSSQL和MSSQL数据库实例,这两个实例都经历了连接超时。我已经把所有相关政策都附加到lambda函数上了。
我在下面包含了一个简单的测试,只是为了得到一个连接。
下面添加了测试代码,而不是在alexa调用的底部。
function mysqltest2() {
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'endpoint.rds.amazonaws.com',
user : 'user',
password : 'pass',
database : 'db'
});
var test;
console.log(`Intent Request`);
console.log('Then run MySQL code:');
connection.connect(function(err) {
console.log('Inside connection.connect() callback');
if (!err) {
console.log("Database is connected ... ");
connection.query("SELECT 1 + 1 AS solution",
function(err, result) {
console.log("Inside connection.query() callback")
if (!err) {
console.log(result);
console.log("Query Successful! Ending Connection.");
test = result;
connection.end();
} else {
console.log("Query error!");
}
});
} else {
console.log("Error connecting database ..." + err.message);
}
});
return test;
}发布于 2017-06-01 15:25:14
有两个问题。
1 VPC设置
VPC的设置,阅读@ Michael - sqlbot关于VPC的帖子帮助了很多。
在VPC中使用lambda时,需要考虑以下因素。
2. Node.js回调
第二个基本上是node.js的回调地狱
当从Alexa意图调用该函数时,它在回调启动之前执行content.success。这在下一次执行代码时会导致超时,因为代码仍在忙着执行前面的命令。我通过使所有回调嵌套并在回调中生成SpeechletResponse来解决这个问题。
https://stackoverflow.com/questions/44008102
复制相似问题