我有一个写入 DynamoDB 表的应用程序,我试图让 Kinesis 进行聚合,然后将聚合数据写入另一个 DynamoDB 表。
在我的 DynamoDB 表上启用了流,并且我在流上有一个 lamdba 触发器,如下所示:
'use strict';
var AWS = require('aws-sdk');
var kinesis = new AWS.Kinesis();
exports.handler = (event, context, callback) => {
event.Records.forEach((record) => {
var myValue = record.dynamodb.NewImage.myValue.N;
var partitionKey = record.key.S;
var data = '{"VALUE":"' + myValue + '"}';
var recordParams = {
Data: data,
PartitionKey: partitionKey,
StreamName: 'MyStreamName'
};
console.log('Try Put to Kinesis Stream');
kinesis.putRecord(recordParams, function(err, data) {
if (err) {
console.log('Failed Put');
} else {
console.log('Successful Put');
}
});
});
};
当我在 Lambda 测试事件中有三个或四个元素时,这会成功写入我的 Kinesis Stream。
当我启用触发器时,它根本不会写入我的 Kinesis Stream。一次似乎有大约 100 个元素进入。在 Cloudwatch 中,我看到“尝试放入 Kinesis Stream”消息,但我什至看不到成功/失败消息。
我是在做完全错误的事情还是有更好的方法来解决这个问题?
如果 DynamoDB 的流可以直接输入 Kinesis Analytics,那将是我的一等奖 :)