【问题标题】:Large Scale Processing of S3 ImagesS3 图像的大规模处理
【发布时间】:2019-04-22 14:01:32
【问题描述】:

我在 S3 存储桶中托管了大约 80tb 的图像,我需要将它们发送到 API 以进行图像分类。图像分类后,API 会将结果转发到另一个端点。

目前,我正在考虑使用 boto 与 S3 交互,也许使用 Apache 气流批量下载这些图像并将它们转发到分类 API,该 API 会将分类结果转发到 Web 应用程序进行显示。

将来我想自动将添加到 S3 存储桶的任何新图像发送到 API 进行分类。为此,我希望使用 AWS lambda 和 S3 通知来触发此功能。

这是否是此类解决方案的最佳实践?

谢谢。

【问题讨论】:

  • 您需要提供有关“批量下载这些图像”和“发送到 API”的更多信息:我们是否可以假设您 (1) 将使用 AWS 内的一组机器,或 (2) 有数千兆位的互联网连接?
  • 通过“分批”,我的意思是在下载图像的同一脚本中将图像发布到 api,一旦发布完成,就从磁盘中删除图像。我可以在 AWS 上使用一组机器。

标签: python amazon-web-services amazon-s3 aws-lambda airflow


【解决方案1】:

对于您未来的场景,是的,这种方法是明智的:

  • 配置 Amazon S3 事件 以在创建新对象时触发 AWS Lambda 函数
  • Lambda 函数可以下载对象(到/tmp/)并调用远程API
  • 请确保 Lambda 函数在退出前删除临时文件,因为 Lambda 容器可能会被重复使用并且有 500MB 的存储限制

请注意,Lambda 函数将在单个对象上触发,而不是批量触发。

【讨论】:

  • 非常感谢约翰的回复。我认为如果上传了 20000 张图像,这将起作用。它只会触发 20000 个 lambda 调用?
  • 是的。在 Amazon S3 中创建图像对象时,将立即触发 Lambda 函数。因此,上传的 20,000 张图片将触发 20,000 个 Lambda 函数。执行的并发函数的数量会导致它们排队,但我认为您的上传将随着时间的推移而分散。
猜你喜欢
  • 1970-01-01
  • 2012-01-22
  • 2015-02-23
  • 2010-11-06
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
相关资源
最近更新 更多