我有一个 $("#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上超时?
答案 0 :(得分:3)
如果我不得不猜测这是一个权限问题,那么当你在本地运行它将从本地机器/环境中获取凭据 - 当你在lambda中运行它时,你需要为具有权限的lambda分配一个角色它需要访问mysql数据库。
另外,请确保lamba可以访问mysql数据库 - 即您没有尝试从lambda函数访问机器本地的mysql数据库(我假设您使用的是rds)。