json - 从 Lambda 中的 JSON 提取数据,因此它不是未定义的
问题描述
寻求建议/第二意见。我正在尝试通过 HTTP API(api 网关)> Lambda 传递 JSON。我正在接收数据(Cloudwatch 的图片),尝试提取值时未定义。该文件正在写入 S3,但未定义。
我包括了 Lambda 代码,Cloudwatch 日志的图片。我在那儿:)。新手来了...
拉姆达代码
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
exports.handler = async (event, context, callback) => {
var bucketName = process.env.bucketName;
var folder = process.env.folder;
var filename = getFileName();
console.log("Filename:" + filename);
var raw = JSON.stringify(event.body);
console.log("raw after stringify:" + raw);
var results = JSON.parse(raw);
console.log("results:" + results);
let firstname = results.firstName;
console.log("firstName:" + firstname);
let lastname = results.lastName;
console.log("lastName:" + lastname);
let message = results.Message;
console.log("Message:" + message);
var content = message + "," + firstname + "," + lastname;
console.log("content:" + content);
var keyName = getKeyName(folder, filename);
var params = { Bucket: bucketName, Key: keyName, Body: content };
s3.putObject(params, function (err, data) {
if (err)
console.log(err)
else
console.log("Successfully saved object to: " + bucketName + "/" + keyName);
});
function getKeyName(folder, filename) {
return folder + '/' + filename;
}
function getFileName() {
var _uuid = uuidv4();
var _date = Date.now();
return _uuid + "-" + _date;
}
function uuidv4() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
var html = '<html><head><title>Prayer received result</title></head>' +
'<body><h1>Your Prayer has been received!</h1></body></html>';
//callback(null, res); - use this when using proxy model
callback(null, html);
};
解决方案
进行了以下更改。
//var raw = JSON.stringify(event.body); //console.log("stringify 后的 raw:" + raw);
var 结果 = JSON.parse(event.body); console.log("结果:" + 结果);
希望这对其他人有帮助。从这篇文章开始,我对 Lambda, JSON 比较陌生。
推荐阅读
- ios - 将焦点从一个视图控制器转移到另一个视图控制器(以模态方式呈现),反之亦然
- javascript - 以编程方式更改输入类型文件的值?
- kdb - 如何在另一个目录中安装 q?
- sapui5 - 具有 sapui5 且没有凭据的公共网站
- c# - 如何将编码的 Base64 zip 文件解码为新的 zip 文件?
- python - 使用 TensorFlow 2.0 Alpha 时无法在 Tensorboard 中看到 keras 模型图
- visual-studio-code - 如何防止 Visual Studio Code 自动删除空白行中的空格
- java - 使用 Java 检查 Git 存储库是私有的还是公共的(例如对于 GitHub)
- git - Git svn fetch 什么都不做?
- css - 如何在父div中对齐文本