【问题标题】:AWS cron job converting images in S3 bucket to WebPAWS cron 作业将 S3 存储桶中的图像转换为 WebP
【发布时间】:2022-02-08 09:57:44
【问题描述】:

我有一个客户希望将其网站的图像文件(存储在 S3 存储桶中)转换为 WebP。由于他们的客户经常上传图像(并且不使用 WebP),因此他们需要一些脚本来定期运行以在存储桶中搜索未转换的图像文件并将它们转换为 WebP。该脚本将检测文件是否存在现有的 WebP 版本,如果没有,则创建一个;然后,一些服务器端代码会优先加载每个图像的 WebP 版本(如果可用)。

根据我的研究,AWS 计划/cron 作业似乎是通过 EventBridge 使用 Lambda 函数完成的。

我可以使用 BASH 脚本执行此操作,还是仅限于 Lambda 函数支持的语言(.NET、Go、Java、Node.js、Python 或 Ruby)?

我是否必须在 AWS 中安装一些东西才能进行 WebP 处理(以及我该如何做)?

另外,Lambda 函数最多只能运行 15 分钟。一旦一切都设置好,这可能不会成为问题,但是已经在存储桶中的图像(很容易超过 1000 个)的初始转换可能需要 15 分钟以上。转换已经存在的图像有什么好方法?

【问题讨论】:

  • 您也许可以使用 bash,但是使用 bash 的自定义 lambda 容器是一个相当不寻常的用例。您需要在部署包中安装某种 webp 库。我希望像这样的 lambda 在 S3 上传时触发,而不是 cron 作业,并且一次转换一个图像。您可以通过运行手动脚本为现有对象运行 lambda 来回填它。
  • 发布了一个解决方案,它为您的图像提供了不同的策略,这些图像已经在这里以及新图像,它有帮助吗?
  • 是的!绝对给了我一些好的线索。
  • 很高兴 :)

标签: amazon-web-services amazon-s3 aws-lambda webp


【解决方案1】:

有什么好的方法可以转换已经存在的图像?

对于已经存在的图像,您可以将 AWS 批处理与 Spot 实例一起使用,以节省成本。

我可以使用 BASH 脚本执行此操作吗? 你可以,但为此你需要使用自定义运行时https://aws.amazon.com/about-aws/whats-new/2018/11/aws-lambda-now-supports-custom-runtimes-and-layers/ 或不同的方法是将你的 bash 脚本作为 lambda 中的 zip 上传并要求 lambda 执行它。 https://stackoverflow.com/a/38337076/13126651

现在的问题是什么时候应该运行 lambda? 如果客户端想要定期运行,请使用event bridge + cron + lambda architecture,否则请使用 s3 上传触发器来调用 lambda https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html

【讨论】:

    猜你喜欢
    • 2020-10-01
    • 2020-10-21
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 2019-08-17
    • 1970-01-01
    相关资源
    最近更新 更多