Lambda 函数和触发的 S3 事件

Lambda function and triggered S3 events

我有一个 lambda 函数,每次将文件写入 S3 存储桶时都会触发该函数。我的理解是,每次进入一个文件(这是一个潜在的场景,而不是发送一批文件)时,都会触发一个 API 调用,这意味着我被收费了。我的问题是:我可以批处理多个文件,以便每个 API 调用只会在例如我有一批 10 个文件的情况下被调用吗?这是一个好习惯吗?我不应该处于处理时间超过 15 分钟的位置,所以使用 lambda 仍然可以。

谢谢

您可以使用 SQS 来解耦这种情况,lambda 触发点将是 SQS,您可以在其中随意设置批量大小。

  • 1 - 一种解决方案是将文件分组为 rar 文件并放入 S3。因此,对于多个文件,您的 api 只会被触发一次。

  • 2 - kamprasad 所说的另一种解决方案是使用 SQS。

  • 3 - 我能想到的最后一个解决方案是根据您的要求使用 cronjob 来触发 lambda。在你的 lambda 中使用线程进行处理,使你的任务完成得更快。请记住,在这种情况下,您必须谨慎选择内存和时间。

我个人经常使用最后一种解决方案。