使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

AWS Lambda 图像处理所需的工作流信息

0

【以下的问题经过翻译处理】 我们在EC2上使用PHP和ImageMagick处理图像。处理5000张图像需要大约5小时。因此,我一直在考虑使用Lambda和Sharp进行实现。少数情况下,我们还要处理10-15k张图像。当前,当用户触发导出时,我们的步骤是:

  1. 使用URL检索每个图像并保存到文件夹中,这些图片非常大。
  2. 将每个图像的大小调整为小于1500x1500且小于600KB,存储在第二个文件夹中。
  3. 创建带有每个图像数据的CSV文件,存储在第二个文件夹中。
  4. TAR和GZ调整大小的照片和CSV文件,将tar.gz移动到导出目录并更新数据库。

我认为最好在Lambda中处理图像处理。但是,图像的检索仍然应该来自EC2并保存到S3 Bucket,以触发Lamba吗?如果是这样的话,如何知道何时完成所有处理并从存储桶中压缩、移动、删除所有图像和文件夹? 或者,更好的方式是通过API将URL发送到Lamba,进行图像处理并保存吗?您可以多次发出5000多次API请求并且Lamba可以扩展吗?前者听起来更合理。

无论如何,我正在寻找一些有经验的人来评论,希望得到一些答案。

profile picture
专家
已提问 1 年前53 查看次数
1 回答
0

【以下的回答经过翻译处理】 你的计划就是我会做的——Lambda 非常适合这里的场景,只要你可以在 Lambda 支持的最大内存、本地存储和最大运行时限制内处理图像。你没有说“非常大”是多少,但这将是一个有用的指标。

为什么将图像存储在 EC2 实例上?为什么不将它们存储在 S3 中呢?这将更具成本效益,并且 S3 可以根据您的应用程序进行扩展,因此无需确定您的实例必须具有的大小。所以是的,一定要使用 API 网关或通过直接调用 Lambda 函数将 URL 发送到 Lambda 函数。

要确定图像何时被处理,为什么不让 Lambda 函数将原始图像移动到 S3 中的新前缀。然后,您可以让 CloudWatch Events 定期触发另一个 Lambda 函数(每分钟一次、两分钟一次、五分钟一次 - 无论您喜欢什么)扫描上传前缀,如果它为空,则进行最终处理。

profile picture
专家
已回答 1 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则