首页 > 解决方案 > dynamodb.transactWriteItems 不是 Lambda 上的函数错误,但在使用 VS Code 时不是

问题描述

我已经使用 VS Code(节点 js)成功测试了 dynamodb.transactWriteItems,但是当我将代码移动到 Lambda 时,它总是抛出 Type Error: dynamodb.transactWriteItems is not a function。请注意,我没有使用 documentClient,因此声明dynamodb = new AWS.DynamoDB()不是解决方案。

如何检查 Lambda 使用的 AWS-SDK(我的 npm aws-sdk 是 v2.372.0),如果这是问题的根本原因,我如何在 Lambda 上使用正确的 AWS-SDK 版本?

data = await dynamodb.transactWriteItems({
  ReturnConsumedCapacity: "INDEXES",
  ReturnItemCollectionMetrics: "SIZE",
  TransactItems: [
      {
          Put: {
            TableName: envVarPOTableName,
            Item: {
              "poNumber": {S: poNumber}, 
              "supplierName": {S: event.supplierName},
              "poStatus" : {S: "Created"},
              "rmItemsArr": {L: [
                { M:{
                  "type": {S:event.rmItemObj.type}, 
                  "description": {S:event.rmItemObj.description}
                  },
                }
              ]}
            }
          }
      },
      {
        Update: {
          TableName: envVarRMTableName,
          Key:{
            "type": {S: event.rmItemObj.type},
            "description": {S: event.rmItemObj.description}
          },
          UpdateExpression: "set #pnA = list_append(#pnA, :vals)",
          ExpressionAttributeNames: {
            "#pnA" : "poNumbersArr"

          },
          ExpressionAttributeValues:{
            ":vals" : {L:[{S:poNumber}]}

          },
          ReturnValuesOnConditionCheckFailure: "ALL_OLD"
        }
      }
]
}).promise();

标签: amazon-web-servicesaws-lambdaamazon-dynamodb

解决方案


问题是 AWS lambda 当前支持 AWS SDK for JavaScript – 2.290.0 Ref。DynamoDB 事务从版本 2.365.0 Ref实现。要解决此问题,您可以尝试在 Lambda 部署包Ref中包含最新版本的 JavaScript SDK 。


推荐阅读