【发布时间】:2018-09-06 03:11:03
【问题描述】:
假设我有一个包含足够项目的 DynamoDB,当我使用这个基本 Lambda 函数进行扫描时会引发超时异常:
var AWS = require('aws-sdk');
var dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
exports.handler = function (event, context) {
var tableName = "TABLE_NAEM";
var params = {
TableName : tableName,
"ReturnConsumedCapacity": "TOTAL"
};
var counter = 1;
dynamodb.scan(params, function(err, data) {
if (err) {
context.done('error', 'reading ddb failed: ' + err);
}
data.Items.forEach(function(element) {
console.log(counter + "- " + element.whatever.S);
counter++;
})
});
};
我想对表中的所有项目进行扫描,但我不想导致读取峰值。有没有办法将此 Lambda 函数作为任务运行,每隔 T 时间读取一次 N 项目,直到所有项目都被覆盖?
【问题讨论】:
-
Limit: N 在你的扫描参数中加上管理分页然后解决如何每T秒重新扫描的问题,也许使用setTimeout/setInterval。您需要保留响应 K 中的 LastEvaluatedKey 以填充请求 K+1 中的 ExclusiveStartKey。
标签: amazon-web-services aws-lambda amazon-dynamodb dynamodb-queries