AWS Fargate 服务:规模降至零?

AWS Fargate 服务:规模降至零?

我最近使用 Fargate 和 Aurora Serverless 将一个小型 Web 应用程序迁移到 AWS。该应用程序的流量不大,所以我的目标是在没有人使用它时节省成本。Aurora Serverless 似乎会自动在数据库端为我完成此操作。

但是,我很难找到有关如何将 Fargate 服务扩展到零的任何资源。

它前面有一个 ALB,我知道 ALB 请求数可用于扩展……因此,理想情况下,当 10 分钟内平均有 0 个请求时,服务将缩减为零任务。然后,当有请求进入时,它将触发服务任务的扩展。

答案1

我不确定它究竟是如何工作的。当没有健康的 ALB 目标时,ALB 会返回 503 错误,因此您的访问者将看到错误页面而不是您的网站。那可能触发 Fargate 容器启动,但这通常需要几十秒,有时甚至超过一分钟。当你的容器启动时,你的访问者可能已经消失了。

如果您想要一个真正的无服务器且零空闲成本的网站,您必须使用 API 来实现它。

  • 把你的前端文件(HTML、CSS、JS)S3
  • 通过加载动态内容API
  • 实现动态功能Lambda 函数
  • 使用API 网关调用 Lambdas
  • 数据库可以Aurora 无服务器或者DynamoDB 按需

这种架构在空闲时不产生任何成本,并能为您的访问者提供即时响应。


更新:如果你仍想将 Fargate 服务缩减为 0 个任务,你当然可以通过将服务设置DesiredCount为来实现0。例如,可以通过 aws-cli 完成:

~ $ aws ecs update-service ... --service xyz --desired-count 0

如果你想这样做开发我建议你运行这个更新服务手动、cron-job 或预定的 Lambda 函数均可。无论哪种方式,您都可以将任务设置为0晚上,然后返回到1下一个工作日。这比依赖 AutoScaling 更容易,因为 AutoScaling 在流量非常低时可能不太可靠。

希望有帮助:)

答案2

如果重写你的应用程序以适应上述响应不是一个选择或成本太高,你可以研究一下 GCP CloudRun

CloudRun 是 GCP 开发的无服务器容器。您可以将您的网站打包到容器中,然后 CloudRun 只会在请求和启动期间按 CPU 使用率向您收费。它甚至有一个非常好的免费套餐,可以让您以最低成本运行您的应用。

因此,您可以将 Amazon Aurora 与 GCP CloudRun 结合起来,以最低成本,且无需重写您的应用程序。

相关内容