-1

当前场景:我们正在使用一些 java 代码处理 40M 记录并将它们作为 csv 文件上传到 s3 存储桶。

未来:我们希望将此代码移动到 AWS,为此我们希望有一个 python 脚本来处理记录并将它们作为 csv 文件加载到 aws-s3 存储桶中。你能建议最好的方法,它可以触发脚本并处理数据吗?我们希望避免在服务器中使用 EC2 和托管 python 脚本。我们希望将其作为无服务器服务。

我的方法:我想用 AWS-Glue 来做这件事,使用触发器(自动/基于时间)来启动作业,并将我的代码放在作业内的脚本中。

这是一个好方法吗?

4

2 回答 2

2

你可以使用 AWS Fargate,考虑到 Lambda 的最大执行时间是 15 分钟,它可以与 Lambda 集成,所以你应该使用 Fargate

更多细节 https://serverless.com/blog/serverless-application-for-long-running-process-fargate-lambda/

您也可以使用AWS 事件规则来安排它

看解决方案总是存在的。但是有好的做法和坏的做法。

如果我告诉你,你可以只使用 AWS lambda 和 AWS EventRule 来做到这一点,而 SQS 听起来会如何。有趣的?

所以简而言之,你可以做到这一点。跟踪 lambda 中消耗的时间,当达到 14 分钟时,向 SQS 发送一条消息,指示您处理的行号,将处理后的文件上传到 s3,然后退出。使用该 SQS 再次触发 lambda,并将一些消息保留为 30 秒,以再次调用相同的 lambda 并从该行号开始。一旦所有处理完成,您将在 S3 中处理多个文件,使用另一个 lambda 和 SQS 将它们合并为一个。这不是一个坏习惯,但在我看来不太好,Happy?

于 2020-02-26T12:57:45.660 回答
0

您可以使用Cloudwatch 事件规则按您定义的定期计划进行调用,并将您的 lambda 函数作为它的目标。这是AWS Docs 中有关如何执行此操作的教程。

于 2020-02-26T13:59:51.957 回答