将 rake 任务迁移到 AWS 中的 Lambda

Migrating rake tasks to Lambda in AWS

我们在 AWS 中使用 rails 进行 rake 任务。我认为将这些 rake 任务迁移到 lambda 中的 运行 而不是 运行 将其迁移到 rails 服务器上是有意义的。 如果我们转向利用自动缩放,我不想在 rake 任务发送 cpu 使用率时最终启动更多实例。有什么想法或方法吗?

首先,目前 AWS Lambda 在 Rails 上不原生支持 Ruby。但是,您仍然可以在 Rails 上使用 Ruby,方法是为 Lambda 环境构建相关的 Ruby 可执行文件,并将它们包含在您的代码中。

有关执行此操作的更多详细信息,请参阅 Scripting Languages for AWS Lambda: Running PHP, Ruby, and Go

另一方面,我看到使用 Lambda 的好处是您按秒支付的执行成本(请记住,由于您需要在 Lambda 中包含 Ruby 个可执行文件,它会增加运行 rake 任务增加 Lambda 成本时函数的加载时间)。此外,您必须确保您的 rake 任务将 运行 在 5 分钟内完成,这是单次 Lambda 执行的最大时间限制。

除此之外,您还可以考虑以下方法。

  • 将 AWS Fargate 与 Docker 容器一起使用。
  • 使用 AWS Lambda 函数启动 EC2 实例并在 Rake 任务完成后停止它。