Kinesis Firehose 流接收消息。
有一个选项可以持久化到 S3 中,但我的用例是插入到 dynamodb 表中。
Firehose 有一个选项可以启用 Lambda 功能。我应该使用 Lambda 将插入逻辑写入 dynamodb 表吗?这是正确的做法吗?
如果是这样,那么如何使用用 Java 编写的 Lambda 将记录插入 DynamoDB。
最佳答案
没有将 Firehose 流数据插入 DynamoDB(例如 S3 或 Redshift)的标准方法。推荐的方法是执行 Lambda 并将记录插入到 DynamoDB 中。
使用 dynamoDB.batchWriteItem
或 dynamoDB.putItem
,更多信息在此 article或 this one .
public String handleRequest(KinesisFirehoseEvent event, Context context)
List<KinesisFirehoseEvent.Record> records = event.getRecords();
for(KinesisFirehoseEvent.Record rec : records)
{
String recordId = rec.getRecordId();
String data = StandardCharsets.UTF_8.decode(rec.getData()).toString();
Item item = transformStringToItem(data);
// Write the item to the table
table.putItem(item);
}
return "success";
}
firehoseStream 结构已记录 here , Java 示例是 here ,以及更多关于 firehose 到 lambda 的信息 here .
关于java - 如何将 Kinesis Firehose 数据传递给 dynamodb 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58351730/