数据处理工作流程:aws lambda还是ec2实例?

时间:2017-08-16 17:12:50

标签: image-processing amazon-s3 amazon-ec2 aws-lambda

我正在构建一个应用程序,其中一个方面是用户可以导出图像以及一些csv文件。

这个应用程序功能的使用是间歇性的。换句话说,在使用之间可能会有大量的时间(月),然后是一段非常困难的时间。

目前,我使用在ec2实例上运行的python脚本实现了这一点。 python脚本为包含导出详细信息的json轮询sqs队列。导出json包含存储在s3中的图像数组,此数组可能包含1到5000个图像,可能更多。

该脚本基本上执行以下操作:

  • polls sqs for export message
  • 下载s3图片
  • 根据导出消息中的数据调整(imagemagick) /重命名图像
  • 根据导出消息中的数据对目录中的图像进行分组
  • 根据导出消息中的数据创建csv文件
  • 创建.zip存档
  • 上传.zip到s3

考虑到使用的间歇性,这个工作流程对于aws lambda会更好吗?

可以使用lambda

完成此工作流程

为lambda调整5k图像的时间是否过于时间密集?

1 个答案:

答案 0 :(得分:2)

使用AWS Lambda函数您将遇到的主要问题是:

  • 每个功能最多可以运行5分钟
  • 每个功能只有500MB的磁盘空间
  • Amazon SQS队列中的消息无法触发功能(它们应由将消息放入队列的进程直接触发)

您的应用可能会遇到其中一个限制。您可以通过链接函数来解决计时问题,但不建议这样做。

如果您不需要立即处理此类请求,备用设计可能是:

  • 创建一个运行您的应用程序的 Auto Scaling组,其中包含最少的零实例和适当的最大值(甚至可能只是一个实例)
  • 配置扩展策略以在队列中有消息时向外扩展,并在队列中没有消息时进行扩展
  • 使用竞价型实例来节省资金(只需将价格设置为按需价格)