【问题标题】:How to stop AWS Fargate container programmatically?如何以编程方式停止 AWS Fargate 容器?
【发布时间】:2021-04-09 22:26:00
【问题描述】:

问题:我们有一个每天都会运行的计划作业(AWS Fargate + Lambda + DynamoDB)。但是由于某些问题,如果 Container 卡住了,我们需要停止容器并重新触发相同的作业。

有什么方法可以停止/超时 AWS Fargate 任务?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 aws-lambda amazon-dynamodb aws-fargate


    【解决方案1】:

    您可以在控制台上或通过 AWS CLI 执行此操作。您可能希望使用stop-task API 来执行此操作。这要求您首先获取任务 ID,列出集群中的任务,然后根据您需要过滤的内容(我猜是任务定义?)过滤它们。

    【讨论】:

      【解决方案2】:

      您不需要构建额外的逻辑。您可以利用内置的 HEALTHCHECK 功能。 您可以在official documentation页面阅读更多信息

      在创建 TASK 定义时,在容器部分,您将看到高级容器配置 您可以在此处为 HEALTHCHECK 指定以下属性:

      Attribute Description Default Value
      Command The healthcheck command, it can be one-liner command or a shell script call None
      Interval The time period in seconds between each health check execution between 5 and 300 seconds. 30 seconds
      Timeout The time period in seconds to wait for a health check to succeed before it is considered a failure between 2 and 60 seconds 5 seconds
      Start Period waiting time to before doing health check(container booting time) . It can be 0-300seconds Disabled
      Retries The number of times to retry a failed health check before the container is considered unhealthy between 1 and 10 retries 3 retries

      所以在使用正确的参数指定健康检查一个线性命令或脚本后,健康检查将连续运行。根据您指定的 HealthCheck 命令的结果,每次检查执行后您有 2 个结果

      Condition HealthCheck Status
      An exit code of 0 Success
      A non-zero exit code Failure

      所以在连续检查容器是否填满所有失败重试后,将被确定为不健康,然后将自动停止并替换。您不需要额外的控制器、检查器、调谐器! 只需编写一个简单的健康检查,它确实表明您的容器是健康的。

      其他的条件要注意了;

      • 任务需要在服务中定义。

      • 如果您使用的是 1.1.0 或更高版本的平台,则 Fargate 任务支持容器运行状况检查。

      • 对于属于配置为使用 Classic Load Balancer 的服务的一部分的任务,不支持容器运行状况检查。

      【讨论】:

        【解决方案3】:

        您可以检查任务的状态,使用 ECS cli 停止和重新启动它们,并为此创建一个脚本。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-09-23
          • 2011-04-20
          • 1970-01-01
          • 2020-09-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多