AWS LAMBDA RDS连接超时
AWS LAMBDA RDS连接超时
我试着写如何使用Node.js它连接到我的RDS数据库lambda函数。该数据库的工作和我的魔豆弹性环境访问。当我运行的功能,它返回一个超时错误。
试图增加超时长达5分钟完全相同的结果。
我的一些研究后得出的结论是,它可能是一个安全问题,但无法找到在亚马逊的文档或this答案的解决方案(这是唯一一个我能找到的主题)。
以下是安全的详细信息:
- 无论是RDS和拉姆达是相同的安全小组。
- 该RDS有所有流量的入站和出站规则。
- 拉姆达有它的作用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"
回答如下:
在使用方面会工作,你只需要context.callbackWaitsForEmptyEventLoop = false;
添加到处理程序,然后利用回调正常是这样的:
exports.handler = (event, context) => {
context.callbackWaitsForEmptyEventLoop = false;
var connection = mysql.createConnection({
//connection info
});
connection.connect(function(err) {
if (err) callback(err);
else callback(null, 'Success');
});
};
答案就在这里的文档(我花了几个小时找到它):http://docs.aws.amazon/lambda/latest/dg/nodejs-prog-model-using-old-runtime.html
在部分“比较上下文和回调方法”它有一个“重要”说明,解释的事情。
在它读取音符的底部:
因此,如果你想相同的行为上下文方法,则必须设置上下文对象的属性,callbackWaitsForEmptyEventLoop,为false。
基本上,回调继续相对于上下文结束该事件循环事件循环的结束。所以设置callbackWaitsForEmptyEventLoop使得像背景回调的工作。
最新文章
- http请求digest auth认证
- 什么内网和外网
- ==时间复杂度==
- 可视化小目标
- Linux下重启mysql的正确方法
- Cygwin、Msys、MinGW、Msys2的区别与联系
- 回溯法(算法分析与设计)
- 音频信号的数字化及压缩编码
- Gallery3d 学习笔记(13)
- 数字芯片有哪些,以及它们的功能是什么?
- c# 开发winform控件
- c语言屏幕输出函数相关题,C语言上机考试题目
- JAVA接口联调
- SiamFC:用于目标跟踪的全卷积孪生网络 fully
- r语言如何计算均方误差
- 【区块链
- pip执行指令后报语法错误sys.stderr.write(f”ERROR: {exc}”)解决办法
- 自适应直方图均衡(CLAHE) 代码及详细注释【OpenCV】
- PHP使用header实现文件下载功能
- Qt中SQL QSqlQuery 对象中prepare() 函数的用法