AWS Node.js лямбда-функция POST в консоли AWS - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь создать лямбда-функцию внутри консоли AWS, которая выполняет POST-запись записей в моей таблице DynamoDB.

В настоящее время я получаю сообщение об успехе, когда я запускаю тест, поскольку я еще не подключил триггер, но тестовое сообщение возвращается в ноль и ничего не отправляет в мою таблицу.

Я просмотрел документы AWS SDK и не нашел того, что мне нужно, с точки зрения запуска export.handle, необходимого для работы лямбда-функции.Я вижу сторону кода Node.js без экспорта.

Я попытался установить recordId и recordAlbum, как это,

let recordId = 1;
let recordAlbum = "Album";

, и это просто возвращает структурную ошибку при тестировании.

Есть ли у кого-нибудь ресурсы или опыт работы сэтот?Я играю вокруг, чтобы создать серверное приложение CRUD.Любые советы или ресурсы действительно помогут.

Это код, который я использую в своей функции AWS Lambda.

let AWS = require('aws-sdk');
// Set the region 
AWS.config.update({region: 'us-east-1'});

// Create the DynamoDB service object
let ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
let recordId = {N: '001'};
let recordAlbum = {S: 'Album Here'}

exports.handler = async function(event, context) {

  let params = {
    TableName: 'TABLE_NAME',
    Item: {
      'recordId' : recordId,
      'album' : recordAlbum
    }
  };

  console.log('generating record ID', recordId);
  console.log('generating Album', recordAlbum);
  console.log('generated parmas', params);
    // Call DynamoDB to add the item to the table
    ddb.putItem(params, function(err, data) {
      if (err) {
        console.log("Error", err);
      } else {
        console.log("Success", data);
      }
    });   
} 

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Один ответ на этот вопрос можно найти в этом руководстве, выполнив шаг 3 и изменив информацию.

Я изменил «Id» на «id» и изменил exports.writeMovie на exports.handler

https://hackernoon.com/create-a-serverless-rest-api-with-node-js-aws-lambda-dynamodb-api-gateway-f08e7111fd16

Он не использует асинхронный режим и ожидает и является сенсорным устаревшим, но работает.

0 голосов
/ 02 марта 2019

У вас есть обработчик async, поэтому вы должны использовать обещания, а не обратные вызовы.

Попробуйте это:

exports.handler = async function(event, context) {

  let params = {
    TableName: 'TABLE_NAME',
    Item: {
      'recordId' : recordId,
      'album' : recordAlbum
    }
  };

  console.log('generating record ID', recordId);
  console.log('generating Album', recordAlbum);
  console.log('generated parmas', params);

  try {
    let result = await ddb.putItem(params).promise();
    console.log(result);
  } 
  catch(err)
  {
    console.error(err);
  }

} 

Вот еще немного о async / awaitв блоге AWS и документации по promise() методу в AWS JS SDK.

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