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

如何阻止LoadBalancer自动重启已停止的ECS任务?

问题描述

当前部署了Lambda与ECS服务,由Lambda负责控制ECS任务的启动与停止。在调用stop_task接口停止ECS任务时,已停止的任务会被LoadBalancer立即重新拉起。
最初梳理了两类待验证的可行方案:

  • 调用stop_task停止任务的同步停用LoadBalancer
  • 单独关闭LoadBalancer的自动重唤起功能,确认该方式是否可实现
初始停止任务Lambda代码
import json
import boto3

ecs = boto3.client('ecs')

def lambda_handler(event, context):
    temp = ecs.list_tasks(
        cluster='ss-dev-cluster'
    )
    for t in temp['taskArns']:
    
        response = ecs.stop_task(
            cluster='ss-dev-cluster',
            task=t
        )
    
        print(response)
        '''
        failures = response['failures']
        if len(failures) != 0:
            print(failures)
            return {
                'statusCode': 500,
                'body': json.dumps('NG!')
            }
        '''
    return {
        'statusCode': 200,
        'body': json.dumps('OK!')
    }
问题解决

问题已解决
感谢@MarkB提供的思路,不再使用run_task和stop_task接口控制任务启停,改为调用update_service接口修改Fargate服务的desiredCount参数实现启停控制,调整后的Lambda代码如下:

import json
import boto3
import os

ecs = boto3.client('ecs')

def lambda_handler(event, context):
 
    response = ecs.update_service(
        cluster=os.environ['cluster'],
        desiredCount=1,
        service=os.environ['service'],
    )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 10:21:20