Reputation: 431
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);
}
});
};
Upvotes: 3
Views: 1991
Reputation: 10373
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);
}
});
};
Upvotes: 2
Reputation: 431
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"
}
]
}```
Upvotes: 0