gpt4 book ai didi

java - 每周处理 S3 中的所有文件

转载 作者:行者123 更新时间:2023-12-02 09:40:28 27 4
gpt4 key购买 nike

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

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

示例:

输入:

first_json - { id:xxx, messages:["第一条消息", ..., "x 消息"] }

...

xth_json - { id:xxx, messages:["第一条消息", ..., "x 消息"] }

...

last_json - { id:yyy, messages:["第一条消息", ..., "x 消息"]}

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

输出:

{id:xxx, numOfSentMessages:zzz, numOfReceivedMessages:www}

...

{id:yyy, numOfSentMessages:zzz2, numOfReceivedMessages:www2}

然后,将向每个用户发送包含其统计信息的电子邮件:发送消息的数量、收到消息的数量、按天/小时计算的频率等...

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

最佳答案

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

日程安排

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

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

处理

您没有提供有关文件内容以及如何处理它们的太多信息(例如,是否单独处理每个文件,或者是否一起处理多个文件)。

一些处理选项是:

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

可以从 Lambda 函数调用 S3 Select 和 Amazon Athena。

库存

如果您有大量文件(数万或更多),使用 Amazon S3 Inventory 可能会更有效。提供每周的输入文件列表。然后,您的代码可以使用该列表来执行操作。

实时处理

您还可以考虑将数据放入 Amazon S3 时执行实时处理,而不是每周批量处理数据。您可以配置 Amazon S3 事件以在创建文件时触发 AWS Lambda 函数。

发送给用户

提供返回文件的链接通常比向用户发送文件更好。您的电子邮件管理员会感谢您!

无论如何,您的 AWS Lambda 函数可以使用 Amazon Simple Email Service (SES) 发送电子邮件。但是,您需要某种方法来确定谁应该接收此类通知。

一种选择是向 Amazon Simple Notification Service (SNS) 发送通知,用户可以订阅该消息。它可以将他们指向报告(但也要考虑报告的安全性)。

关于java - 每周处理 S3 中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57122966/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com