AWS Lambda 超时后出现连接错误
AWS Lambda Timeout Followed by Connection Error
我有一个每五分钟 运行 的 AWS Lambda。 Lambda 将在我的 VPC 和 运行 一些查询中创建到 RDS 数据库的连接。
Lambda 将成功 运行 三次,所以大约 15 分钟左右,但是,然后我收到超时错误:
Task timed out after 600.10 seconds
在此超时错误之后,下次 Lambda 尝试 运行 时,我无法再连接到我的 RDS 数据库。我收到以下超时错误:
Error: connect ETIMEDOUT
在这一点上我很困惑,可以多看看这个:
'use strict';
const mysql = require('mysql');
const util = require('util');
const {
fetchQuery,
insertQuery,
updateQuery,
} = require('./queries');
const {
getInsertValues,
getUpdateValues,
} = require('./utils');
const connection = mysql.createConnection({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
});
// node native promisify
const query = util.promisify(connection.query).bind(connection);
connection.connect();
module.exports.scan = async (event, context, callback) => {
let results = await query(fetchQuery);
console.log(`found ${results.length} forms that are scheduled to be filed`);
if (results.length > 0) {
const insertValues = getInsertValues(results);
const updateValues = getUpdateValues(results);
try {
console.log(`creating user_tasks`);
await query(insertQuery, [insertValues]);
console.log(`updating next_scheduled dates`);
await query(updateQuery, [updateValues]);
callback(null, 'successfully updated form next_scheduled')
} catch (err) {
console.error('error creating user_tasks')
callback(err, 'error creating user_tasks')
}
}
}
使用完后尝试关闭与数据库的连接,我之前遇到过类似的错误,因为打开的连接使 Lambda 保持活动状态,直到超时
我有一个每五分钟 运行 的 AWS Lambda。 Lambda 将在我的 VPC 和 运行 一些查询中创建到 RDS 数据库的连接。
Lambda 将成功 运行 三次,所以大约 15 分钟左右,但是,然后我收到超时错误:
Task timed out after 600.10 seconds
在此超时错误之后,下次 Lambda 尝试 运行 时,我无法再连接到我的 RDS 数据库。我收到以下超时错误:
Error: connect ETIMEDOUT
在这一点上我很困惑,可以多看看这个:
'use strict';
const mysql = require('mysql');
const util = require('util');
const {
fetchQuery,
insertQuery,
updateQuery,
} = require('./queries');
const {
getInsertValues,
getUpdateValues,
} = require('./utils');
const connection = mysql.createConnection({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
});
// node native promisify
const query = util.promisify(connection.query).bind(connection);
connection.connect();
module.exports.scan = async (event, context, callback) => {
let results = await query(fetchQuery);
console.log(`found ${results.length} forms that are scheduled to be filed`);
if (results.length > 0) {
const insertValues = getInsertValues(results);
const updateValues = getUpdateValues(results);
try {
console.log(`creating user_tasks`);
await query(insertQuery, [insertValues]);
console.log(`updating next_scheduled dates`);
await query(updateQuery, [updateValues]);
callback(null, 'successfully updated form next_scheduled')
} catch (err) {
console.error('error creating user_tasks')
callback(err, 'error creating user_tasks')
}
}
}
使用完后尝试关闭与数据库的连接,我之前遇到过类似的错误,因为打开的连接使 Lambda 保持活动状态,直到超时