Извлечение данных из JSON в лямбда, чтобы оно не было неопределенным - PullRequest
0 голосов
/ 20 января 2020

Ищу совета / второго мнения. Я пытаюсь передать JSON через HTTP API (API-шлюз)> Lambda. Я получаю данные (pi c из Cloudwatch), получая неопределенные значения при попытке извлечь значения. Файл записывается на S3, но не определен.

Я включил лямбда-код, изображение журналов Cloudwatch. Я о там :). Новичок ie здесь ...

Логи Logs showing data being retrieved

Лямбда-код

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

1 Ответ

0 голосов
/ 20 января 2020

Внесены следующие изменения.

// var raw = JSON .stringify (event.body); //console.log("raw after stringify: "+ raw);

var results = JSON .parse (event.body); console.log ("results:" + results);

Надеюсь, это поможет другим. Я новичок на этот пост в Lambda, JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...