AWS容器(ECS)与AMI和竞价型实例

时间:2019-08-08 22:43:56

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

我的问题的核心是与使用弹性容器服务(ECS)相比,使用Amazon Machine Image + Micro Spot实例运行任务是否有不利之处。

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

此任务有可能连续被触发10次,也可能连续执行数周,因此我绝对希望服务仅按需运行(和开票)。

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

这并不需要很长时间,此任务需要几个不同的运行时(Powershell Core,Python,PHP,Git)才能完成工作,因此,由于我选择了部署包,因此Lambda的可能性不大大小限制。但是我可以使用Lambda来开始这项工作。

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

当我意识到我可以使用Fargate在ECS上使用docker容器完成此解决方案时,我犹豫了一半。

当我不是docker pro并已配置AMI时,我只是不知道投入切换到Docker容器的额外开发时间是否有任何好处。另外,ECS / Fargate实际上比仅运行微型实例要昂贵。

是否担心将短期(<5分钟)现货请求(t3a-micro)分解成一天可能会解雇的请求?有速率限制吗?我会从AWS收到一封愤怒的电子邮件,告诉我将其取消吗? ECS是唯一正确的答案吗?完全还有其他东西吗?

1 个答案:

答案 0 :(得分:1)

您使用竞价型实例和AMI的解决方案是有效的,尽管过去我遇到了获取竞价型实例的缓慢过程。您还需要承担AMI的启动时间。

如评论中所述,您将为该实例至少收取1个小时的费用,因此,如果在同一小时内可以收到更多请求,则应在终止之前的一个小时内让实例处于空闲状态。

恕我直言,您应该使用lambda构建所有内容。通过将每个运行时的工作量分成自己的lambda,可以使其工作。

AWS支持python,powershell运行时,您可以创建一个custom PHP。将它们与您选择的胶水,SNS,SQS,直接调用或步骤功能链接在一起,您将获得最具成本效益的解决方案。您还将获得每个功能/运行时更好,独立维护的好处。

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