DynamoDB.transactWriteItems遇到问题

时间:2019-04-10 17:29:13

标签: amazon-web-services aws-lambda amazon-dynamodb

我正在尝试使用DynamoDB事务来使用Node.js从lambda同时更新多个表。我收到“ transactWriteItems不是函数”的错误。我正在按照文档步骤进行操作,但不太确定自己在这里做错了什么。这是我的函数:

'use-strict';
var AWS = require('aws-sdk');

exports.handler = async (event, context, callback) => {
var dynamoDB = new AWS.DynamoDB({apiVersion: '2012-10-08'});

var date_created = (new Date).getTime().toString()

var media_id = event['media_id']

var params = {
    TransactItems: [
        {
            Put: {
                TableName: 'Table_Name',
                Item: {
                    "media_id": {S: event['media_id']},
                    "timestamp_date_liked": {N: date_created},
                    "liker_id": {S: event['liker_id']},
                    "type" : {N: event['type']},
                }
            }
        }
    ]
}

var data = await dynamoDB.transactWriteItems(params).promise();

};

我收到的确切错误是:

Response:
{
  "errorMessage": "dynamoDB.transactWriteItems is not a function",
  "errorType": "TypeError",
  "stackTrace": [
    "exports.handler (/var/task/index.js:40:31)"
  ]
}

2 个答案:

答案 0 :(得分:2)

AWS尚未将lambda运行时间更新为aws-sdk的最新版本,当前使用的版本没有dynamodb事务。

当前,如果要使用事务,则需要将当前sdk版本与lambda捆绑在一起或放置在一个层中。

注意: 在图层中使用aws-sdk会带来一些麻烦。也就是说,本机版本仍将具有优先权。您可以通过使用相对路径('../aws-sdk')在要求aws-sdk的层中安装软件包并将其重新导出为其他软件包名称,然后改用该软件包来解决此问题。 / p>

答案 1 :(得分:0)

使用transactWrite代替transactWriteItems