将 S3 存储桶中的新文件流式传输到 Kinesis

gal*_*ine 6 amazon-s3 amazon-web-services

我正在尝试评估使用 Kinesis 进行流处理日志文件。有一个单独的进程将新日志上传到 S3 存储桶 - 我无法触及该进程。我想知道是否有一种好方法可以将 S3 日志存储桶中显示的新文件流式传输Kinesis 流中进行处理。到目前为止我找到的所有文档都涵盖了使用 S3 作为流的输出。

我当前的解决方案是让一台机器不断轮询 S3 是否有新文件,将新文件下载到本地机器并使用 Log4j 附加程序将其流式传输。这看起来效率很低。有没有更好的办法?

phi*_*our 2

我意识到这是一个非常老的问题,但看看AWS Lambda。它非常适合您的用例,如此处所示

在您的情况下,您将设置 s3 事件,以便添加到存储桶的每个新对象都会调用您的 lambda 函数。然后,在 lambda 函数中编写几行代码,读取文件并将内容发送到Kinesis 流的PutRecord(或批处理的PutRecords )方法。

这不仅适用于您的用例,而且也很棒,因为它检查了一些流行语:“无服务器”和“实时”!