Как отправить параметры из JS на веб-странице в функцию узла в AWS лямбда? - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь отправить файл json, созданный из полей веб-страницы, в функцию узла в AWS Lambda, чтобы добавить его в таблицу DynamoDB. Я сделал JSON, но я не знаю, как передать его из js, используемого для страницы, в лямбда-функцию. Так как это для проекта класса, моя группа и я решили отказаться от API шлюза amazon и просто вызываем лямбда-функции, используя js sdk amazon. Я проверил документацию Amazon и другие различные примеры, но мне не удалось найти полное решение.

Функция узла в лямбде

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");
         }
  });



}


html-страница для необработанного javascript включает в себя правильные настройки для импорта sdk и настройки пула регионов / пользователей

Я просто не знаю, как получить полезную нагрузку из вызова в моем узлефункции, так как я впервые работаю с lambda и Amazon's SDK или вообще занимаюсь веб-разработкой, если честно.

1 Ответ

0 голосов
/ 11 ноября 2019

я бы сделал это с асинхронным ожиданием. Лучше читать.

lambda.invoke = util.promisify(lambda.invoke);
const result = await lambda.invoke(yourParams);
const payload = JSON.parse(result.Payload);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...