繁体   English   中英

只有在 S3 上完成批量上传后,如何触发 AWS lambda 函数?

[英]How do I trigger a AWS lambda function only if bulk upload finished on S3?

我们在下面有一个简单的 ETL 设置

  1. 供应商将爬取的 parquet 数据上传到我们的 S3 存储桶。
  2. S3 事件触发一个 lambda 函数,该函数将触发胶水爬虫更新胶水中现有的表分区。

这在大多数情况下都可以正常工作,但在某些情况下,我们的供应商可能会在短时间内连续上传文件,例如在刷新历史数据时。 这将导致问题,因为胶水爬虫无法同时运行并且作业将失败。

我想知道我们是否可以做些什么来避免潜在的错误。 我研究了SQS ,但不确定这是否对我有帮助,以下是我想要实现的目标:

  1. 供应商将文件上传到 S3。
  2. S3 向 SQS 发送事件。
  3. SQS 保持事件,等到在给定的时间段内没有其他后续事件,比如 5 分钟。
  4. 在 5 分钟内没有进一步事件后,SQS 触发 lambda 函数运行胶水爬虫。

这对 S3 和 SQS 可行吗?

SQS举办活动,

是的,您可以这样做,因为您可以将SQS 延迟设置为最多 15 分钟。

等到在给定的时间段内没有其他后续事件,比如 5 分钟。

不,没有自动化的方法。 您必须开发自己的定制解决方案 最简单的方法是不将 SQS 与 lambda 捆绑在一起,而是让 lambda 按计划运行(例如每 5 分钟一次)。 Lambda 必须有逻辑来确定一段时间后是否没有新文件上传,然后触发您的 Glue 作业。 这可能会涉及到 DynamoDB 来跟踪 lambda 执行之间最后上传的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM