将S3中的日志连续推送到dynamoDB

时间:2017-12-08 23:54:58

标签: amazon-s3 aws-lambda amazon-dynamodb amazon-kinesis-firehose

我们的应用程序日志通过Kinesis Firehose泵送到S3。我们希望这些数据也流向DynamoDB,以便我们可以有效地查询要在Web UI(Ember应用程序)中显示的数据。需要这样才能使用户能够对数据进行过滤和排序等。基本上通过Web UI支持查询功能。

我查看了AWS Data管道。这是可靠的,但更多调整为一次性进口或预定进口。我们希望从s3到dynamoDB的数据流是连续的。

还有哪些其他选择来实现这一目标?将数据从S3移动到dynamoDB并不是一个非常独特的要求。那你怎么解决这个问题呢?

S3事件触发lambda是一个选项吗?如果是,那么如何使这个lambda容错?

2 个答案:

答案 0 :(得分:2)

全文查询

您可以按照以下方式设计解决方案,以便使用AWS Elasticsearch作为富查询的目标来更好地进行查询。

  • 将Kinesis Firehouse目的地设置为Amazon Elastic Search。这将允许您从Web UI进行全文查询。
  • 您可以选择仅备份失败的记录或备份所有记录。如果您选择所有记录,Kinesis Firehose会将所有传入的源数据备份到您的S3存储桶,同时将数据传送到Amazon Elasticsearch

基本查询

如果您计划使用DynamoDB存储日志元数据,则最好将S3 Trigger配置为Lambda,Lambda将检索文件并将元数据更新为DynamoDB。

答案 1 :(得分:0)

  

S3事件是否触发了lambda选项?

这绝对是一种选择。您可以在S3存储桶上创建PutObject event并让它调用Lambda函数,该函数将以异步调用它。

  

如果是,那么如何使这个lambda容错?

默认情况下,异步调用将retry twice upon failure。为了确保超出两次重试的容错能力,您可以使用Dead Letter Queues并将失败的事件发送到SQS队列或稍后要处理的SNS主题。