Dynamodb batchWrite 在 Lambda 中不起作用

Dynamodb batchWrite doesn't work in Lambda

我尝试使用 batchWrite 向 Dynamodb 中插入一个数据,但它无法插入数据。它只显示此消息(但没有错误消息)。

Ensuring latest function changes are built...
Starting execution...
{"key1":"value1","key2":"value2","key3":"value3"}
Result:
null
Finished execution.

然后,无法插入数据。 我尝试使用 put,但效果很好。 我正在使用拉姆达。这是代码。

const dynamodb = new AWS.DynamoDB.DocumentClient();
let tableName = "BlrSession-56pfbzohnvdqpac6asb627z2wu-dev";

// const AWS = require("aws-sdk/global");

exports.handler = (event, context, callback) => {
  // The event parameter is the input to your lambda function
  console.log(JSON.stringify(event));
  let games = [];
  let documentClient = new AWS.DynamoDB.DocumentClient();

  // lambda.forEach((item) => {
  games.push({
    PutRequest: {
      Item: {
        id: Math.random().toString(36).substring(2) + Date.now().toString(36),
      },
    },
  });
  // });

  let params = {
    RequestItems: {
      tableName: games,
    },
  };

  documentClient.batchWrite(params, function (err, data) {
    if (err) {
      callback(err);
    } else {
      callback(null, data);
    }
  });
};

代码只有一个问题。 table在参数中用作键的名称不会被替换为实际的 table 名称,我们可以通过将变量名包裹在 [tableName]

周围来将其用作键
  let params = {
    RequestItems: {
      [tableName]: games,
    },
  };

这是完整的 lambda

const AWS = require("aws-sdk");
AWS.config.update({ region: "us-east-1" });
const dynamodb = new AWS.DynamoDB.DocumentClient();
let documentClient = new AWS.DynamoDB.DocumentClient();
let tableName = "test";

exports.handler = (event, context, callback) => {
  let games = [];
  games.push({
    PutRequest: {
      Item: {
        id: Math.random().toString(36).substring(2) + Date.now().toString(36),
      },
    },
  });

  let params = {
    RequestItems: {
      [tableName]: games,
    },
  };
  console.log('params',params);
  documentClient.batchWrite(params, function (err, data) {
    if (err) {
      console.log('err', err);
      callback(err);
    } else {
      console.log('data', data);
      callback(null, data);
    }
  });
};

这是使用batchWrite不起作用时的权限

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "dynamodb:Put*",
                "dynamodb:Create*",
                "dynamodb:BatchWriteItem",
                "dynamodb:Get*",
                "dynamodb:BatchGetItem",
                "dynamodb:List*",
                "dynamodb:Describe*",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:Update*",
                "dynamodb:RestoreTable*",
                "dynamodb:Delete*"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:613917858805:table/BlrSession-56pfbzohnvdqpac6asb627z2wu-dev",
                "arn:aws:dynamodb:us-west-2:613917858805:table/BlrSession-56pfbzohnvdqpac6asb627z2wu-dev/index/*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "dynamodb:Put*",
                "dynamodb:Create*",
                "dynamodb:BatchWriteItem",
                "dynamodb:Get*",
                "dynamodb:BatchGetItem",
                "dynamodb:List*",
                "dynamodb:Describe*",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:Update*",
                "dynamodb:RestoreTable*",
                "dynamodb:Delete*"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:613917858805:table/BlrMeetup-56pfbzohnvdqpac6asb627z2wu-dev",
                "arn:aws:dynamodb:us-west-2:613917858805:table/BlrMeetup-56pfbzohnvdqpac6asb627z2wu-dev/index/*"
            ],
            "Effect": "Allow"
        }
    ]
}```