3

I tried to insert one data into Dynamodb using batchWrite though, it couldn't insert data. It just shows this message (but no error message).

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

Then, cannot insert data. I tried to use put tho, it worked well. I'm using Lambda. This is the code.

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);
    }
  });
};
2
  • How you confirm that it cannot insert data.? Commented Apr 4, 2021 at 3:48
  • I confirmed it by checking Dynamodb table. Commented Apr 4, 2021 at 6:34

2 Answers 2

2

There is just one issue with code. tableName used as Key in params is not being replaced with actual table name, we can use variable name as key by wrapping it around [tableName]

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

This is full 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);
    }
  });
};
Sign up to request clarification or add additional context in comments.

5 Comments

Thanks, Balu. I tried it but the result was the same. mmm
i tested your code, except this , everything else is good. may be some permissions are missing?
I posted the permission on the above. Does it seem to be something wrong?
@uekyo policy looks ok. i pasted full lambda code i tested.
OMG, I did it! Thanks, bruh!
0

This is the permission when it doesn't work to use 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"
        }
    ]
}```

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.