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

如何从排队的Azure DevOps流水线获取队列编号并实现EC2实例伸缩

实现ADO队列驱动的EC2代理扩缩容方案

一、获取ADO排队流水线的队列编号

  • 调用ADO的REST API查询排队任务:执行GET https://dev.azure.com/{组织名}/{项目名}/_apis/build/builds?statusFilter=notStarted&api-version=7.1-preview.7,返回的JSON数据中,每个排队任务的queue.id字段就是目标队列编号。
  • 身份验证需使用ADO个人访问令牌(PAT),将PAT做Base64编码后,在请求头中添加Authorization: Basic {编码后的PAT}。

二、两种扩缩容落地方案

1. 单EC2代理直接启停(适合小规模场景)

  • 编写Python/Shell脚本,检测到目标队列存在排队任务时,调用AWS SDK启动指定EC2实例:
    import boto3
    ec2 = boto3.client('ec2')
    ec2.start_instances(InstanceIds=['i-你的实例ID'])
    
  • 当队列任务全部完成后,执行脚本停止实例以节省成本:
    ec2.stop_instances(InstanceIds=['i-你的实例ID'])
    

2. EC2自动伸缩组动态调参(适合多代理场景)

  • 通过脚本调用AWS SDK调整自动伸缩组的期望容量,根据排队任务数量灵活增减实例:
    autoscaling = boto3.client('autoscaling')
    autoscaling.update_auto_scaling_group(
        AutoScalingGroupName='你的伸缩组名称',
        DesiredCapacity=3  # 可根据排队任务数动态计算该值
    )
    
  • 可设置简单映射规则,比如每3个排队任务对应新增1个代理实例,实现智能扩缩容。

三、自动化联动配置

  • 用CloudWatch Events或ADO定时流水线,周期性执行脚本查询ADO队列状态,自动触发扩缩容操作。
  • 给EC2代理实例添加专属标签(如ADO_Agent: True),确保脚本仅操作ADO代理实例,避免误触其他资源。
  • 提前配置EC2实例启动脚本,确保实例启动后自动注册到目标ADO队列,无需手动配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:25:04