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

如何在Amazon ECS中按指定时区调度容器夜间停止运行

在Amazon ECS中按指定时区调度容器夜间自动停止的方法

实现这个需求核心是用Amazon EventBridge(原CloudWatch Events)触发ECS的停止操作,同时指定自定义时区匹配夜间时段。以下分两种常见场景说明:

场景1:停止单个ECS任务

  1. 创建IAM角色赋予EventBridge权限
    需创建一个IAM角色,允许EventBridge调用ECS的StopTask API。权限策略示例:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "ecs:StopTask",
          "Resource": "arn:aws:ecs:你的区域:你的账号ID:task/你的集群名/*"
        }
      ]
    }
    

    给该角色添加信任关系,允许events.amazonaws.com作为信任实体。

  2. 创建EventBridge调度规则

    • 进入EventBridge控制台,点击「创建规则」
    • 规则类型选「计划」,再选「Cron表达式」
    • 输入对应夜间停止时间的Cron表达式,比如要每天北京时间22:00停止,直接写0 22 * * ? *,然后在「时区」下拉框选择Asia/Shanghai(按需替换为目标时区)
    • 目标类型选「AWS服务」,目标选「ECS任务」,动作选「停止任务」
    • 填写ECS集群名称,指定要停止的任务ARN(若需动态匹配任务,可通过EventBridge目标输入传递参数或规则筛选事件)
    • 选择之前创建的IAM角色作为执行角色

场景2:停止ECS服务(将期望任务数设为0)

如果容器由ECS Service管理,更推荐通过更新服务期望任务数来停止,后续启动更便捷:

  1. 创建IAM角色赋予EventBridge权限
    权限策略需允许ecs:UpdateService:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "ecs:UpdateService",
          "Resource": "arn:aws:ecs:你的区域:你的账号ID:service/你的集群名/你的服务名"
        }
      ]
    }
    

    同样配置信任关系允许EventBridge调用。

  2. 创建EventBridge调度规则

    • 规则类型及时区设置同场景1,比如北京时间22:00的Cron表达式0 22 * * ? *,时区选Asia/Shanghai
    • 目标类型选「AWS服务」,目标选「ECS服务」,动作选「更新服务」
    • 填写集群名和服务名,将「期望任务数」设为0
    • 选择对应的IAM执行角色

注意事项

  • 确认EventBridge规则的时区设置正确,避免UTC时差导致调度时间偏差
  • 若需后续自动启动容器,可创建另一条EventBridge规则,在指定早间时间将ECS服务期望任务数设回原数值,或启动任务
  • Fargate类型任务/服务停止后无额外费用;EC2类型若要彻底节省成本,可配合EventBridge触发EC2的StopInstances API停止实例

内容的提问来源于stack exchange,提问作者YAN CHIRINO

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 10:20:43