【问题标题】:AWS Container (ECS) vs AMI & Spot instancesAWS 容器 (ECS) 与 AMI 和 Spot 实例
【发布时间】:2019-08-08 22:43:56
【问题描述】:

我的问题的核心是使用 Amazon 系统映像 + Micro Spot 实例运行任务与使用弹性容器服务 (ECS) 相比是否有缺点。

这是我的情况:我需要按需运行由远程 Web 挂钩触发的任务。

此任务有可能连续触发 10 次,或者持续数周而无法执行,因此我绝对想要一项仅按需运行(和计费)的服务。

我的计划是将 webhook 指向 Lambda 函数,但问题是让 Lambda 函数做什么。

虽然不需要很长时间,但这个任务需要几个不同的运行时(Powershell Core、Python、PHP、Git)来完成它的工作,所以 Lambda 是不可能的,因为我会点击部署包大小限制。但我可以使用 Lambda 来开始这项工作。

我开始做的是创建一个包含所有必要运行时和代码的 AMI,然后使用 Spot 请求启动一个实例,让它通过通过 userdata 传入的启动脚本执行操作,然后在它运行时自行关闭完毕。我必须加入一些速率控制逻辑来防止两个同时运行,但这是一个可以解决的问题。

当我意识到我可以在 ECS 上使用 Fargate 的 docker 容器来完成此解决方案时,我在开发此解决方案的过程中犹豫了。

当我不是 docker pro 并且已经配置了 AMI 时,我只是不知道将额外的开发时间切换到 docker 容器是否有任何好处。此外,ECS/Fargate 实际上比仅仅运行一个微型实例更昂贵。

对于在一天内可能触发十几个的短期(

【问题讨论】:

  • 我不能直接回答这个问题,但我可以告诉你现场实例,即使你终止它,你也会支付小时费。如果您已经将所有内容放在一起,那么从中制作 docker 图像并不是一个很大的跳跃。您必须测量任务的执行时间,并据此计算价格。 Fargate 按秒计费。我知道估算价格不是最简单的任务。

标签: amazon-web-services amazon-ec2 amazon-ecs


【解决方案1】:

您使用 Spot 实例和 AMI 的解决方案是一个有效的解决方案,尽管我过去曾经历过获取 Spot 实例的缓慢时间。您还会产生 AMI 启动时间。

如 cmets 中所述,您将为实例支付至少 1 小时的费用,因此您应在终止前将实例保持运行一小时,以防同一小时内可能有更多请求。

恕我直言,您应该使用 lambda 构建它。通过将每个运行时的工作负载拆分为自己的 lambda,您可以使其工作。

AWS 支持 python、powershell 运行时,您可以创建一个custom PHP。将它们与您选择的粘合剂、SNS、SQS、直接调用或 Step Functions 链接在一起,您就拥有了最具成本效益的解决方案。您还可以获得对每个功能/运行时进行更好和独立维护的好处。

将初始 lambda 放在 API 网关后面,您也将获得速率限制功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 2019-12-10
    • 2021-08-10
    • 2017-08-30
    • 1970-01-01
    • 2020-05-12
    • 2020-01-06
    相关资源
    最近更新 更多