Узел лямбда не пишет в DynamoDB и без ошибок - PullRequest
1 голос
/ 08 марта 2019
var ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'})
AWS.config.update({region: 'eu-west-1'})
var docClient = new AWS.DynamoDB.DocumentClient()
  const params = {
    TableName: 'TC_QUESTIONS',
    Item: {
      'questionId' : {S: '001'},
      'questionText' : {S: 'Richard Roe'}
    }
  }

  var putItemPromise = docClient.put(params).promise()
  putItemPromise.then(function(data) {
    console.log("Added item:", JSON.stringify(data, null, 2));
  }).catch(function(err) {
    console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2));
  });

  await putItemPromise

Ошибка не возвращается.Нет успешного обратного вызова.Когда я использую неправильное имя столбца, я получаю сообщение об ошибке от «Динамо».Я пытался запустить его локально и на лямбде.Он выполняет и выходит.Строки не добавляются в таблицу.Что я делаю не так?

Редактировать: Вот мой CF для таблицы DynamoDB:

QuestionsTable:
  Type: AWS::DynamoDB::Table
  Properties:
    TableName: 'TC_QUESTIONS'
    AttributeDefinitions:
      - AttributeName: questionId
        AttributeType: S
      - AttributeName: questionText
        AttributeType: S
    KeySchema:
      - AttributeName: questionId
        KeyType: HASH
      - AttributeName: questionText
        KeyType: RANGE
    ProvisionedThroughput: 
      ReadCapacityUnits: "5"
      WriteCapacityUnits: "5"

1 Ответ

1 голос
/ 08 марта 2019
'use strict';
const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient({region: 'eu-west-1'});

exports.handler = async (event) => {

    const params = {
      TableName: 'TC_QUESTIONS',
      Item: {
        'questionId': '001',
        'questionText' : 'Richard Roe'
      }
    }

    try {
      await docClient.put(params).promise()
    } catch (e) {
      console.log(e.message)
    }
};

Если ваша таблица существует, а questionId - это ключ вашего раздела, приведенный выше код работает.

Я думаю, что вы немного перемешали, потому что вы используете DocClient вам больше не нужно указывать типы DynamoDB.И это была проблема в вашем коде.Просто укажите необработанные значения (как я делал выше, передавая саму строку), и оно будет работать.

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