我有一些在Docker中运行web应用程序的EC2实例,我将它们设置为在工作时间之外(例如早上7点到下午7点)自动停止,以降低成本。我想知道是否可以在请求web应用程序的URL时自动启动实例(即使EC2停止了),以防有人想要在以前配置的办公时间之外访问。
有些人建议我在AWS中运行应用程序,但是如何触发函数以从DNS调用开始呢?
发布于 2020-08-28 19:07:38
这是不容易做到的。您可能会发现一些使用lambda和路由53日志记录的复杂方式,但即使这样做,启动EC2实例也需要5分钟。这意味着当EC2实例启动时,请求已经超时。
在lambda /无服务器计算上重写应用程序将消除此问题。你只支付每一项要求,而且在大多数情况下你不付很多钱。大多数无服务器应用程序的成本非常低。然而,有些则可能比EC2实例花费更多。
降低成本的最实际的方法可能是使用自动标度和小计算单元并扩展,而不是更少的大型实例。您可以让一小部分资源24/7运行,在繁忙期间运行更多的资源。
对于容器,您可以考虑使用Fargate来保持低资源容器24/7运行,然后在加载构建时增加更多的资源。这可以是自动标度,也可以是预定的缩放。我不知道您是否可以在同一个ECS集群中使用Fargate和EC2,但如果可以,可能会解决问题。
发布于 2020-08-28 13:50:47
当请求web应用程序的URL时,不可能启动ec2实例。在实例准备好为请求提供服务之前,http请求已经超时。
不涉及身份验证,这意味着来自bot的任何随机请求都将触发ec2实例的启动。
理论上,应该可以通过使用ALB将请求路由到Lambda函数的特定路径来创建堆栈,该路径可以启动ec2实例。但是所涉及的资源比让实例24/7运行要昂贵得多。
如果你想削减成本,AWS可能不是你最好的供应商。
https://serverfault.com/questions/1031865
复制相似问题