如何解决如何以编程方式停止 AWS Fargate 容器?
问题:我们有一个计划作业(AWS Fargate + Lambda + DynamoDB),它将每天运行。但是由于一些问题,如果容器卡住了,我们需要停止容器并再次重新触发相同的作业。
有什么方法可以停止/超时 AWS Fargate 任务?
解决方法
您可以在控制台上或通过 AWS CLI 执行此操作。您可能希望使用 stop-task API 来做到这一点。这要求您首先获取任务 ID,列出集群中的任务,然后根据需要过滤的内容(我猜是任务定义?)过滤它们。
,您可以检查任务的状态,使用 ECS cli 停止和重新启动它们,并为此创建脚本。
,您不需要构建额外的逻辑。您可以利用内置的 HEALTHCHECK 功能。 您可以在official documentation页面
阅读更多信息在创建任务定义时,在容器部分,您将看到高级容器配置 您可以在那里为 HEALTHCHECK 指定以下属性:
属性 | 说明 | 默认值 |
---|---|---|
命令 | healthcheck 命令,可以是单行命令,也可以是shell脚本调用 | 无 |
间隔 | 每次健康检查执行之间的时间段(以秒为单位),介于 5 到 300 秒之间。 | 30 秒 |
超时 | 在 2 到 60 秒之间等待健康检查成功之前的时间段(以秒为单位) | 5 秒 |
开始时间 | 在进行健康检查之前的等待时间(容器启动时间)。可以是0-300秒 | 已禁用 |
重试 | 在容器被认为不健康之前重试失败的健康检查的次数在 1 到 10 次重试之间 | 3 次重试 |
所以在使用正确的参数指定 healthcheck 一个线性命令或脚本后,healthcheck 将连续运行。根据您指定的 HealthCheck 命令的结果,每次检查执行后您有 2 个结果
条件 | 健康检查状态 |
---|---|
退出代码为 0 | 成功 |
非零退出代码 | 失败 |
因此在连续检查容器是否填充所有失败重试后,则将其确定为不健康,然后将其停止并自动替换。您不需要额外的控制器、检查器、调谐器! 只需编写一个简单的健康检查即可真正表明您的容器是健康的。
对方条件要照顾;
-
需要在服务中定义任务。
-
如果您使用平台版本 1.1.0 或更高版本,则 Fargate 任务支持容器运行状况检查。
-
属于配置为使用 Classic Load Balancer 的服务的一部分的任务不支持容器运行状况检查。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。