如何将 Kinesis Firehose 数据传递到 dynamodb 表?

Lea*_*oop 3 java amazon-s3 amazon-web-services amazon-dynamodb aws-lambda

Kinesis Firehose 流接收消息。
有一个选项可以保留到 S3,但我的用例是插入到 dynamodb 表中。
Firehose 有一个选项来启用 Lambda 函数。我应该使用 Lambda 将插入逻辑写入 dynamodb 表吗?这是正确的方法吗?
如果是这样,那么如何使用 Java 编写的 Lambda 将记录插入到 DynamoDB 中。

Hor*_*lea 6

没有将 Firehose 流数据插入 DynamoDB(例如 S3 或 Redshift)的标准方法。推荐的方法是执行 Lambda 并将记录插入到 DynamoDB 中。

使用dynamoDB.batchWriteItemdynamoDB.putItem,在这篇文章这篇文章中获得更多信息。

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";
}
Run Code Online (Sandbox Code Playgroud)

该firehoseStream结构是记录在这里,和Java示例的例子是在这里,并在流水以拉姆达更多信息在这里