我试图使用batchWrite将一个数据插入Dynamodb,但它无法插入数据。它只显示此消息(但没有错误消息)。
Ensuring latest function changes are built...
Starting execution...
{"key1":"value1","key2":"value2","key3":"value3"}
Result:
null
Finished execution.
然后,无法插入数据。我试着用put,效果很好。我用的是Lambda。这是代码。
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);
}
});
};
这是使用batchWrit不起作用时的权限
{
"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"
}
]
}```
代码只有一个问题。在params中用作Key的tableName不会替换为实际的表名,我们可以通过将变量名包装在[tableName]
周围来使用变量名作为键
let params = {
RequestItems: {
[tableName]: games,
},
};
这是全拉姆达
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);
}
});
};
我有一张如下的桌子 数据将从AWS Lambda函数一致地插入到此表中。(可能是数百万个项目) 我有一个用例,当表中有100个可用项时,我需要有一个触发器来执行一些批处理。换句话说,一旦我们在这个表中创建了100个新项目,我希望有一个Lambda触发器函数来对100个项目执行批处理。 当我研究时,DynamoDB流似乎可以支持批处理,但根据文档我不太清楚。 Lambda分批读取记录,并调用函数处理
我正在使用lambda、API网关和Dynamodb 我正在创建一个batchWrite函数,在一个函数中上载25个以上的项目 但我发现,当我上传35个项目时,前25个项目成功上传到dynamodb,但最后10个项目失败,但没有记录任何错误 该函数在node.js中编写 日志如下所示。
我很难让Hibernate在MySQL上执行大容量插入。 我有要排序的主键生成类型,下面是我的dao.xml 这使得每次都可以执行单个查询。我也相应地刷新和清除实体管理器。 技术堆栈:Spring 4,Hibernate 5.2。 编辑1:我也浏览了下面的链接,但没有运气 https://vladmihalcea.com/how-to-batch-insert-and-update-stateme
我得到以下查询:hibernate:select CHARGE.nextval from dual hibernate:insert into CHARGE(ACCOUNTNUMBER CHARGE_ID)值(?,?)Hibernate:插入到CHARGE(ACCOUNTNUMBER CHARGE_ID)值(?,?)Hibernate:插入到CHARGE(ACCOUNTNUMBER CHARGE_
BatchWrit在Laqmbda中不适用于异步。代码将插入一条记录,但它不能。但是,当我删除异步时,它可以工作。 结果如下。没有错误。 你们有同样的行为吗?
我有以下工作要处理在一定的时间间隔或特别的基础上。 作业中的步骤如下: 我也想要用户界面,在那里我可以触发一个特别的基础上的工作,而且我应该能够提供参数从用户界面。 我想用Spring batch来完成这个任务,但它更多的是用于读->处理->写之类的工作。这里,在第一步中,我正在生成由第二步读取的数据。我不确定我是否还可以使用Spring batch来实现这个,或者有更好的方法来实现这个。