signiant/task-cleanuptask-cleanup用于监控ECS集群中特定家族的运行任务,当任务年龄超过设定的最大阈值时自动终止这些任务。这解决了ECS中“一次性”任务可能挂起不释放资源的问题,避免占用集群资源影响其他任务运行,实现自动修复。
适用于需要定期清理ECS集群中长时间运行的“一次性”任务的场景,尤其适合以下情况:
提供两种独立解决方案:可作为Docker容器运行(调度为ECS任务)和Lambda函数运行(定期触发)。
用法
该工具设计为定期运行,可通过调度Lambda函数实现。包含示例samconfig.toml文件,需填写适当值。若需操作多个集群(如多区域),可修改template.yaml,添加类似ScheduleUsEast1的事件。
配置完成后,构建并部署Lambda:
bashcd lambda sam build && sam deploy --config-env prod --profile <aws_cli_profile_name>
前提条件
用法
通过Docker运行是最简单的方式,需传入ECS任务相关变量。
bashdocker pull signiant/task-cleanup
bashdocker run \ signiant/task-cleanup \ --task-name-prefix one-time-task \ --cluster-name test-cluster \ --max-age 30 \ --region us-east-1 \ --dryrun
参数说明:
--task-name-prefix:监控的“一次性”任务前缀(因CloudFormation生成的任务定义带有随机后缀,以此匹配)--cluster-name:ECS集群名称--max-age:任务最大允许运行年龄(小时,默认48)--region:AWS区域--dryrun:仅显示操作,不实际终止任务上述示例中,工具会查询集群中任务定义以one-time-task为前缀的活跃任务,检查运行时间超过30小时的任务并终止。
使用AWS访问密钥/密钥对: 若未使用AWS角色,可通过环境变量传入访问密钥:
bashdocker run \ -e AWS_ACCESS_KEY_ID=XXXXXX \ -e AWS_SECRET_ACCESS_KEY=XXXXX \ signiant/task-cleanup \ --task-name-prefix one-time-task \ --cluster-name test-cluster \ --region us-east-1


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务