Java 每周处理S3中的所有文件

Java 每周处理S3中的所有文件,java,json,amazon-web-services,amazon-s3,aws-lambda,Java,Json,Amazon Web Services,Amazon S3,Aws Lambda,每周处理S3中所有文件的最佳方式是什么 我的bucket包含许多json文件,我需要的是:在所有文件上运行(一周一次),并解析这些文件的数据以生成统计报告。例如,按id分组和按某些字段计数。结果保存在一个文件中,我将发送给用户 例如: 输入: 第一个json-{id:xxx,消息:[“第一条消息”,…,“x消息”]} xth_json-{id:xxx,消息:[“第一条消息”,…,“x消息”]} last_json-{id:yyy,消息:[“第一条消息”,…,“x消息”]} json文件中的消

每周处理S3中所有文件的最佳方式是什么

我的bucket包含许多json文件,我需要的是:在所有文件上运行(一周一次),并解析这些文件的数据以生成统计报告。例如,按id分组和按某些字段计数。结果保存在一个文件中,我将发送给用户

例如:

输入:

第一个json-{id:xxx,消息:[“第一条消息”,…,“x消息”]}

xth_json-{id:xxx,消息:[“第一条消息”,…,“x消息”]}

last_json-{id:yyy,消息:[“第一条消息”,…,“x消息”]}

json文件中的消息是包含日期、文本、发件人等的消息对象数组

输出:

{id:xxx,numoSentMessages:zzz,numoReceivedMessages:www}

{id:yyy,numoSentMessages:zzz2,numoReceivedMessages:www2}

然后为每个用户发送电子邮件,并提供其统计信息:发送消息的数量、接收消息的数量、按天/小时划分的频率等


我认为一周内JSON的数量可以达到数百万个文件

有很多方法可以做到这一点(取决于您实际想做什么!)

日程安排

如果在Amazon EC2实例上运行代码,则可以使用
cron
触发脚本

如果将代码作为AWS Lambda函数运行,则可以向该函数添加计划

处理

您没有提供关于文件内容以及如何处理这些文件的太多信息(例如是否单独处理每个文件,或者是否同时处理多个文件)

一些处理选项包括:

  • 如果文件可以单独处理,则可以使用,它可以在文件上运行简单的类似SQL的命令,而无需下载文件
  • 对于更复杂的查询,包括同时处理多个文件,请使用亚马逊雅典娜
  • 如果需要使用自定义代码处理文件,请在Amazon EC2实例上运行脚本,或运行AWS Lambda函数(注意:Lambda的最长执行时间为15分钟)
S3 Select和Amazon Athena可以从Lambda函数调用

库存

如果您有大量文件(上万个或更多),那么使用它来提供每周输入文件列表可能会很有效。然后,代码可以使用该列表执行操作

实时处理

<>而不是将数据作为周批处理,也可以考虑在Amazon S3中放置数据时执行“强实时处理”。您可以配置AmazonS3事件,以在创建文件时触发AWS Lambda函数

发送给用户

通常,最好提供指向文件的链接,而不是将文件发送给用户。您的电子邮件管理员将感谢您

无论如何,您的AWS Lambda功能可以使用亚马逊简单电子邮件服务(SES)发送电子邮件。但是,您需要某种方法来确定应该接收此类通知的人


一个选项是向亚马逊简单通知服务(SNS)发送通知,用户可以订阅该消息。它可以指向报告(但也考虑报告的安全性)。您可以轻松地将其配置为每周运行一次。然后编写代码从s3中提取数据并处理它们。如果使用linux,也可以使用crontab。当然,如果你的电脑关机了,它就不会运行了