我应该使用哪种 AWS 服务来处理大型文本文件?

Which AWS service should I use to process large text file?

我有一个用例,我需要读取一个非常大的文本文件,该文件最多可以包含 100 万条记录。对于每条记录,我必须执行一些验证,然后将其转换为不同的 JSON,然后将其推送到 SNS 主题。我不需要按顺序阅读它们,因此我可以使用并行性。一种选择是将文件放在 S3 存储桶中,然后使用 lambda 处理文件,该文件将记录(异步)扇出到多个 lambda 函数,这些函数负责转换(和验证),然后将其推送到 SNS。另一种选择是使用运动流并使用多个 lambdas 做同样的事情。

执行此操作的理想方法应该是什么?

  1. S3 -> Lambda -> 多个 Lambda -> SNS
  2. Kinesis -> 多个 Lambda(或 Lambda -> 多个 Lambda -> SNS)

您可能想要查看 AWS Glue。此服务可以对存储在 S3 中的大部分内容执行 ETL,因此它可能会为您省去自己执行此操作的麻烦。结合 S3 触发 Lambda 这可能是一个有趣的选择?

编辑: 如果文件可以用 RegExs 解析,也许试试 Athena? Athena 相对便宜,可以毫不费力地处理更大的文件。

如果记录具有可预测的长度,您可以使用范围请求在将文件传递到 Lambda 之前分割文件,从而避免长 运行 次。

此外,您是否尝试过使用 Lambda 对文件进行解析和分块? 100 万条记录并没有那么多,简单的行拆分和传递(块)到验证(或者可能是 SNS)应该不是问题。