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

ECS Fargate Spot故障后任务切换验证及事件获取求助

问题解答

1. Fargate Spot故障时是否自动切换至Fargate?

根据你设置的容量提供商参数(Fargate Base=0、Weight=1;Fargate Spot Base=1、Weight=2),当Fargate Spot任务因故障(如Spot容量回收、节点异常)被终止时,ECS服务会自动尝试用Fargate调度新任务,但需要满足几个条件:

  • ECS服务已配置多容量提供商策略,且Fargate的Weight值大于0(你的配置已满足);
  • AWS Fargate当前有可用容量;
  • 服务的minimum healthy percent和maximum percent配置允许ECS启动新任务(默认配置通常符合要求)。

补充说明:ECS会优先按Weight比例分配任务(Fargate:Spot=1:2),但当Spot容量不可用时,会自动 fallback到Fargate,无需手动触发切换。

2. Fargate Spot故障事件的位置与标识

Fargate Spot的中断/故障事件不会显示在ECS任务的本地事件列表中,而是发送到Amazon EventBridge(原CloudWatch Events),识别该事件的关键信息如下:

  • 事件源:aws.ecs
  • 事件类型(detail-type):ECS Task State Change
  • 核心识别字段:事件detail部分的stoppedReason会包含Spot中断相关描述,例如:
    • Your Spot Task was interrupted.
    • Fargate Spot task was terminated due to Spot capacity availability.

用Lambda触发任务切换的实现步骤

  1. 在EventBridge控制台创建规则:
    • 选择事件源为ECS,事件类型为ECS Task State Change;
    • 添加过滤条件:匹配detail.lastStatus = STOPPED且detail.stoppedReason包含Spot关键词;
  2. 将你的Lambda函数设置为该规则的触发目标;
  3. Lambda函数核心逻辑示例(Python):
    import boto3
    
    ecs_client = boto3.client('ecs')
    
    def lambda_handler(event, context):
        # 从事件中提取集群和服务信息
        cluster_arn = event['detail']['clusterArn']
        service_name = event['detail']['group'].split(':')[1]
        
        # 更新服务容量提供商策略,临时优先使用Fargate
        ecs_client.update_service(
            cluster=cluster_arn,
            service=service_name,
            capacityProviderStrategy=[
                {
                    'capacityProvider': 'FARGATE',
                    'base': 1,
                    'weight': 10
                },
                {
                    'capacityProvider': 'FARGATE_SPOT',
                    'base': 0,
                    'weight': 0
                }
            ]
        )
        return {"status": "success"}
    
  • 提示:你也可以根据业务需求,选择仅触发单次Fargate任务调度,而非修改长期的容量提供商策略。

内容的提问来源于stack exchange,提问作者Tahir Rasheed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 12:02:07