You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让ECS Fargate仅依据Essential容器退出码判定任务状态?

解决Amazon ECS Fargate中任务状态仅依赖核心容器退出码的问题

先明确ECS的任务状态判定逻辑

ECS任务的成功/失败状态只看标记为essential: true的容器,非essential容器的退出码不会影响最终结果。也就是说,只要你的Python核心容器正常退出(退出码0),哪怕临时服务容器被SIGTERM终止后返回非零码,任务依然会被标记为成功。如果你的任务状态异常,先检查Python容器的退出码,别被临时容器的日志误导。

消除临时容器的非零退出码(可选)

如果不想在日志里看到临时容器的非零退出记录,可以修改它的启动逻辑,让它收到SIGTERM时优雅退出并返回0:

  • 写一个shell脚本作为容器的入口,捕获SIGTERM信号:
    #!/bin/sh
    # 捕获SIGTERM,关闭服务后正常退出
    trap "echo 'SIGTERM received, shutting down selenium-hub...'; kill $PID; exit 0" SIGTERM
    
    # 启动selenium-hub
    java -jar selenium-server-standalone.jar &
    PID=$!
    wait $PID
    
  • 修改容器的Dockerfile,把这个脚本设为ENTRYPOINT,这样容器收到终止信号时就会返回0退出码。

可选:配置容器依赖

你可以给临时容器加上dependsOn配置,让它只在Python容器启动后才运行,不过这不是必须的——因为核心容器是essential,它退出后整个任务会终止,临时容器也会被自动停止。示例配置:

"dependsOn": [
    {
        "containerName": "python-core-container",
        "condition": "STARTED"
    }
]

内容的提问来源于stack exchange,提问作者Mostafa Ghadimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 05:26:07