从MySQL数据库查询数据时,aws lambda函数超时

时间:2018-03-25 12:09:16

标签: mysql node.js amazon-web-services aws-lambda amazon-rds

我有一个 $("#intro_items_wrapper .items-row:nth-child(3)").after('<!-- mobile ad banner zone --> <div class="cat-banner bannerzonepadding visible-phone"> <script type="text/javascript" language="javascript" src="http://myadsrc.demo"></script> </div>'); 文件,其中包含以下代码:

index.js

代码正确地从mysql数据库获取数据,并在我在本地计算机上运行时在屏幕上显示它们。

然而,当它在aws-lambda上运行时出现const dbConfig = require('./config/dbConfig') const mysql = require('mysql') var con = mysql.createConnection({ host: dbConfig.host, user: dbConfig.username, password: dbConfig.password, database: dbConfig.database }) function readMessages (event, context, callback) { console.log('function triggered') con.connect((err) => { if (err) { console.error(err) callback(err) } else { console.log('Connected!') con.query('SELECT * FROM Messages WHERE isDeleted = 0;', (err, result, fields) => { if (err) { console.error(err) callback(err) } else { console.log(result) con.end() callback(null, result) } }) } }) } exports.handler = readMessages 错误。

代码及其依赖项打包在名为Task timed out after 7.01 seconds的文件中,然后上传到aws-lambda。

app.zip

我的函数打印的唯一日志消息是app.zip ├── config │ └── dbConfig.js ├── index.js └── node_modules 。我无法在云监视日志中找到我的函数生成的其他日志消息。

为什么函数在aws-lambda上超时?

1 个答案:

答案 0 :(得分:3)

如果我不得不猜测这是一个权限问题,那么当你在本地运行它将从本地机器/环境中获取凭据 - 当你在lambda中运行它时,你需要为具有权限的lambda分配一个角色它需要访问mysql数据库。

另外,请确保lamba可以访问mysql数据库 - 即您没有尝试从lambda函数访问机器本地的mysql数据库(我假设您使用的是rds)。