【问题标题】:Is it possible to start/stop docker contains on demand in AWS?是否可以在 AWS 中按需启动/停止 docker contains?
【发布时间】:2021-01-21 04:35:36
【问题描述】:

我正在尝试将 docker 映像部署到 AWS 的 Elastic Container Service,然后将其作为 EC2 实例运行(通过 Fargate)。但是,我认为我需要在 TaskDefinition 中指定至少 1 个运行实例。

不过,我想要实现的基本上是能够按需启动此容器,因为它不经常使用,然后在之后将其关闭。所以计划是通过 lambda 启动/停止它并重定向到公共 IP(因此在 Web 请求超时内)。

我已经看到了如何使用 EC2 执行此操作的示例,但没有一个实际使用 Fargate。我不相信我可以根据 docker 映像定义 EC2 任务(如果可以,这可能是我的解决方案?)。

有谁知道是否有可能实现这一目标?如果是这样,您能否就我如何处理它提供一些指导,以及您是否有任何 CloudFormation 示例非常棒。

【问题讨论】:

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


    【解决方案1】:

    EC2Fargate 定义ECS 任务几乎没有区别。只有一个区别是网络。使用Fargate,您必须使用awsvpc 网络。

    您可以使用 lambda。但是有更好的想法来实现您的用例。

    要精确旋转一项任务,您必须设置

    • 最少实例:0
    • 所需计数:1
    • 最大实例数:1 个或更多

    自动扩缩方案

    不过,比 Lambda 更好的想法是使用服务自动缩放。 ECS Servce 自动缩放需要 cloudwatch 中的指标。因此,您可以将指标推送到 cloudwatch 以启动任务。然后计算您的任务,并在计算结束时放置指标以停止任务。

    手动解决方案

    另一种解决方案是将desired count 在您想要开始任务时切换为 1,在您想要停止任务时切换为 0

    参考:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-auto-scaling.html

    【讨论】:

    • 谢谢 Daniel,Minimum instances: 1 是否意味着我总是至少有 1 个实例在运行?真的,我大部分时间都想要 0 个实例,并在短时间内启动 1 个实例。
    • 啊,是的,很抱歉。那是我的错。最小值应为 0。如果您没有自动缩放,最小值和最大值无关紧要。 Min Desired Max
    • 好的,谢谢丹尼尔。如果我被卡住了,我可能会有一个后续问题,但我会尝试这条途径。介意我是否需要在后续问题中标记您?
    • 当然可以。我在生产环境中运行了几十个 ECS 集群。原因是 Fargate 后端。不过 EKS 很快也会有这个选项 :)
    猜你喜欢
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多