RDS 触发器访问 Lambda 函数会导致连接丢失
Lambda function access by RDS trigger creates connection lost
我在 RDS aurora 中创建了 2 个表:
test-table
在 aurora 数据库中,值为 id(PK)、tasknumber、status、contactid(FK)
contact-table
在同一个数据库中,具有值 contactid(PK)、电子邮件、phone
我在 'test-table' 中创建了一个触发器,只要 'status' 发生变化,触发器就会调用 AWS-Lambda ARN。
Lambda 函数和 Aurora 拥有所有权限,并且已清除安全性,仍在从 Lambda 进行测试时出现图像下方错误,并在 aurora 中手动更新 'status' 字段(通过 Workbench Sql 查询)它显示:
Operation failed: There was an error while applying the SQL script to the database.
ERROR 2013: 2013: Lost connection to MySQL server during query
我也附上了我的 Lambda Node.Js 代码。
var AWS = require('aws-sdk');
AWS.config.update({ region: 'us-east-1' });
const mysql = require('mysql');
var con = mysql.createConnection({
host: 'correct value',
user: 'root',
password: 'correct value',
port: correct value,
database: 'correct value'
});
exports.handler = (event, context, callback) => {
context.callbackWaitsForEmptyEventLoop = false;
var fk = event.contact_id;
console.log('FOREIGN KEY=', fk)
con.connect(function(err) {
if (err) throw err;
var sql = `SELECT * FROM db.contacts where contact_id=${fk}`
con.query(sql, function(err, result) {
if (err) throw err;
var email = result[0].email;
console.log(email);
var sns = new AWS.SNS();
var params = {
Message: email,
Subject: "Test SNS From Lambda",
TopicArn: "arn:correct value"
};
sns.publish(params, function(err, data) {
if (err) console.log(err, err.stack);
else {
console.log(data);
callback(null, 'Success');
}
});
});
});
};
- Image1ErrorMySqlWorkbench
- Image2ErrorLambdaaws
也遵循 NodeJs 包:https://github.com/isaacs
如果你想要即时响应,你必须关闭连接,否则将需要默认时间关闭连接,如果有意义请告诉我
我在 RDS aurora 中创建了 2 个表:
test-table
在 aurora 数据库中,值为 id(PK)、tasknumber、status、contactid(FK)contact-table
在同一个数据库中,具有值 contactid(PK)、电子邮件、phone
我在 'test-table' 中创建了一个触发器,只要 'status' 发生变化,触发器就会调用 AWS-Lambda ARN。
Lambda 函数和 Aurora 拥有所有权限,并且已清除安全性,仍在从 Lambda 进行测试时出现图像下方错误,并在 aurora 中手动更新 'status' 字段(通过 Workbench Sql 查询)它显示:
Operation failed: There was an error while applying the SQL script to the database.
ERROR 2013: 2013: Lost connection to MySQL server during query
我也附上了我的 Lambda Node.Js 代码。
var AWS = require('aws-sdk');
AWS.config.update({ region: 'us-east-1' });
const mysql = require('mysql');
var con = mysql.createConnection({
host: 'correct value',
user: 'root',
password: 'correct value',
port: correct value,
database: 'correct value'
});
exports.handler = (event, context, callback) => {
context.callbackWaitsForEmptyEventLoop = false;
var fk = event.contact_id;
console.log('FOREIGN KEY=', fk)
con.connect(function(err) {
if (err) throw err;
var sql = `SELECT * FROM db.contacts where contact_id=${fk}`
con.query(sql, function(err, result) {
if (err) throw err;
var email = result[0].email;
console.log(email);
var sns = new AWS.SNS();
var params = {
Message: email,
Subject: "Test SNS From Lambda",
TopicArn: "arn:correct value"
};
sns.publish(params, function(err, data) {
if (err) console.log(err, err.stack);
else {
console.log(data);
callback(null, 'Success');
}
});
});
});
};
- Image1ErrorMySqlWorkbench
- Image2ErrorLambdaaws
也遵循 NodeJs 包:https://github.com/isaacs
如果你想要即时响应,你必须关闭连接,否则将需要默认时间关闭连接,如果有意义请告诉我