javascript - 如何将网页中的js参数发送到aws lambda中的节点函数?
问题描述
我正在尝试将从网页中的字段创建的 json 文件发送到 AWS Lambda 中的节点函数,以将其添加到 DynamoDB 表中。我制作了 JSON,但我不知道如何将它从用于页面的 js 传递给 lambda 函数。由于这是一个班级项目,我和我的团队决定放弃亚马逊的网关 API,而只是使用亚马逊的 js sdk 原始调用 lambda 函数。我检查了亚马逊的文档和其他各种示例,但我无法找到完整的解决方案。
lambda中的节点函数
const AWS = require('aws-sdk');
const db = new AWS.DynamoDB.DocumentClient({region: 'us-east-1'});
exports.handler = async (event) => {
const params = {
TableName : 'characterTable',
Item: {
name : 'defaultName'
}
};
const userID = 'placeholder';
params.Item.userID = userID;
return await db.put(params).promise();
};
//}
网页js:
var lambda = new AWS.Lambda();
function makeJSON(){
var userID = "";
var name = document.forms["characterForm"]["characterName"].value;
var race = document.forms["characterForm"]["race"].value;
var playerClass = document.forms["characterForm"]["class"].value;
var strength = document.forms["characterForm"]["strength"].value;
var dexterity = document.forms["characterForm"]["dexterity"].value;
var constitution = document.forms["characterForm"]["constitution"].value;
var intelligence = document.forms["characterForm"]["intelligence"].value;
var wisdom = document.forms["characterForm"]["wisdom"].value;
var charisma = document.forms["characterForm"]["charisma"].value;
characterSheetObj = {userID: userID, name: name, race: race, class: playerClass, strength: strength, dexterity: dexterity, constitution: constitution, intelligence: intelligence, wisdom: wisdom, charisma: charisma}
characterSheetJSON = JSON.stringify(characterSheetObj);
alert(characterSheetJSON);
var myParams = {
FunctionName : 'addCharacterSheet',
InvocationType : 'RequestResponse',
LogType : 'None',
Payload : characterSheetJSON
}
lambda.invoke(myParams, function(err, data){
//if it errors, prompts an error message
if (err) {
prompt(err);
}
//otherwise puts up a message that it didnt error. the lambda function presently doesnt do anything
//in the future the lambda function should produce a json file for the JavaScript here to do something with
else {
alert("Did not error");
}
});
}
原始 javascript 的 html 页面包括导入 sdk 和配置区域/用户池的正确设置
我只是不知道如何从我的节点函数中的调用中获取有效负载,因为这是我第一次使用 lambda 和 amazon 的 sdk,或者说完全没有做任何 Web 开发工作,老实说。
解决方案
我会用异步等待来做。最好阅读。
lambda.invoke = util.promisify(lambda.invoke);
const result = await lambda.invoke(yourParams);
const payload = JSON.parse(result.Payload);
推荐阅读
- php - preg_replace 带有通配符的语法
- javascript - JavaScript 类引用
- android - DAO:如何使用 Insert 的返回值
- tkinter - Tkinter 如何更改组合框小部件箭头图像
- python - 实现具有负对数似然损失的简单概率模型
- sql - SQL 从具有特定查询的 2 个表中选择
- javascript - React BrowserRouter不加载接受“/”确切路由的组件 - 路径定义
- c++ - 在 C++ 中,函数参数中的独立花括号是什么意思?
- php - 替换或覆盖php中的时间值
- python - Spotipy 刷新访问令牌 Oauth2