如何通过AWS Lambda逐一处理S3存储桶中的文件,直到没有更多文件剩余

问题描述 投票:0回答:1

场景是这样的:

  1. 我希望通过 Appflow 将各种来源的文件接收到 S3 存储桶中 地点。这些文件可能会在一天中的不同时间多次出现。

  2. 我希望使用 AWS Lambda 根据什么文件触发各种 AWS Glue ETL 工作流程 我收到后将通过 AWS Lambda 自定义逻辑进行计算。

现在的瓶颈是文件需要一张一张的处理,并且不能同时并发运行。如果文件到达我的 S3 位置,而我的工作流程仍在启动并运行,我该如何处理该情况并确保这些文件也得到处理,直到最新文件通过胶水工作流程成功执行?

注意:文件完成后,可以将其从 S3 路径移动到某个存档目录或删除。使用基于 python 的 lambda 方法。

python-3.x amazon-web-services amazon-s3 aws-lambda aws-glue
1个回答
0
投票

您可以创建一个 S3 事件,该事件将在 Amazon S3 存储桶中创建对象时自动触发。您可以配置事件以将消息存储在 Amazon SQS 队列中。

然后您可以配置 Lambda 函数:

  • 触发 Amazon SQS 队列
  • 保留并发度为
    1
    ,这将限制其在任何时间仅运行 Lambda 函数的一个实例

这样,每个文件都会被单独处理。

处理完 S3 对象后,不需要“移动”它,但如果您不再需要它,那么最好在处理后将其删除,否则您将拥有大量文件,除了增加成本外,对您没有任何帮助钱可以储存。

© www.soinside.com 2019 - 2024. All rights reserved.