用于视频和图像处理的 Amazon Lambda?

chr*_*etd 5 amazon-s3 amazon-ec2 amazon-web-services amazon-lambda

我正在为其构建架构的服务中有一个视频处理部分。基本上,有些人可以上传视频(存储在 S3 中),这些视频将被拆分为高分辨率的帧。从这些高分辨率帧中,生成派生图像(缩略图、精灵),所有这些都将存储在 S3 上。

我的问题是:我应该在哪里以及如何运行我的视频处理脚本?我想使用 Lambda,但我不确定它的限制(300 秒超时和 512 MB 磁盘存储)是否允许我这样做。请注意,视频的权重可达数 GB。

我目前考虑的解决方案是:

  • 使用流从 S3 读取视频(因此不必完全复制)
  • 将视频转成帧,然后直接上传到S3(我还要确保不要用帧填满存储)
  • 单独或分块读取来自 S3 的帧,并使用它们生成缩略图和精灵,然后上传到 S3。我有点担心这可能需要的时间,即使我的 Lambda 与我的 S3 存储桶位于同一区域。

你认为这是最好的解决方案吗?你能想到一个更简单的吗?或者您认为在标准 EC2 实例上运行处理是一个更好的主意(也许中间有一些像 SQS 这样的排队系统)?

谢谢!

Mat*_*ser 2

您最不想看到的就是有效用例(例如大型视频)遇到 Lambda 限制(时间和/或磁盘存储)。

您应该将步骤减少为小的单任务块,例如:

  • 将视频转换为帧
  • 将帧转换为缩略图
  • ETC。

单独评估每个小任务。确定最小/最大/平均文件大小并计算最小/最大/平均处理时间。如果 Lambda 适合,那么就选择它。否则,您可以使用 EC2 实例来处理队列中的项目(例如使用 SQS)。