我正在做一个项目,我们正在创建一个无服务器架构来处理计算任务。如何在AWS Lambda函数中将参数传递给事件对象。
有任何参考链接,如果有的话,请提出建议。
index.js-lambda的处理函数
exports.handler = (event, context, callback) => {
context.callbackWaitsForEmptyEventLoop = false;
const mysql = require("mysql");
const pool = mysql.createPool({
host: "test_db.xxxxxxxxxxx.us-east-2.rds.amazonaws.com",
user: "root",
password: "xxxxxxxx",
database: "test_db",
port: 3306
});
pool.getConnection((err, connection) => {
if (err) throw err;
// const { fund_name, returns, aum, rating, expense_ratio } = event.body; // BODY PARAMETER REMAINING
const randomNumber = () => Math.random()*10+1;
const fund_name = 'example';
const returns = randomNumber();
const aum = randomNumber();
const rating = randomNumber();
const expense_ratio = randomNumber();
if (fund_name && returns && aum && rating && expense_ratio) {
pool.getConnection((err, connection) => {
if (err) {
throw err;
}
const query = `INSERT INTO mutual_fund_tb(fund_name, returns, aum, rating, expense_ratio) VALUES ('${fund_name}', '${returns}', '${aum}', '${rating}', '${expense_ratio}')`;
connection.query(query, (err, results, fields) => {
if (err) {
throw err;
}
if (results.affectedRows === 1) {
const response = {
data: {...event.body},
message: "Data successfully inserted",
status: "ok"
};
callback(null, response);
} else {
const response = {
data: {},
message: "Data unable to insert into database.",
status: "failed"
};
callback(null, response);
}
});
});
} else {
const response = {
data: {},
message: "Invalid arguments passed. Please pass valid arguments",
status: "failed"
};
callback(null, response);
}
});
};
答案 0 :(得分:4)
如果您使用的是API Gateway,然后在方法执行图上单击集成响应(集成类型Lambda函数),然后在其中有Body mapping template
字段,您可以在其中添加application/json
或{ {1}},然后手动输入映射,例如在我们的例子中,我们使用application / json
txt/xml
因此,可以在lambda函数中访问{
"abc" : $input.params('$def')
}
,并且在调用API网关
abc
上传递def
截至目前,您可以使用 lambda代理集成,然后就不需要提供此映射了,仍然可以访问参数 aws docs