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

Jenkins Groovy流水线脚本批量删除指定AWS负载均衡器问题

解决Jenkins Groovy流水线遍历删除负载均衡器的问题

直接修正查询逻辑并实现遍历删除,步骤如下:

1. 修正负载均衡器ARN查询

你当前的jq输出存在键名错误(应为LoadBalancerARN而非LoadBalancerName),建议直接提取ARN数组简化后续处理:

def loadBalancerArnsOutput = sh(
    returnStdout: true,
    script: """
        aws elbv2 describe-load-balancers | jq -r '[.LoadBalancers[] | select(.LoadBalancerName | startswith("loadbalancer-alb-")) | .LoadBalancerARN]'
    """
).trim()

-r参数让jq输出原始字符串,避免JSON引号干扰;trim()去除输出首尾换行和空格,确保JSON解析正常。

2. 将JSON字符串转为Groovy可遍历对象

有两种实现方式可选:

方法一:使用Jenkins内置readJSON(推荐)

需先安装Pipeline Utility Steps插件:

def arnList = readJSON(text: loadBalancerArnsOutput)

方法二:使用Groovy原生JsonSlurper(无需插件)

import groovy.json.JsonSlurper

def jsonSlurper = new JsonSlurper()
def arnList = jsonSlurper.parseText(loadBalancerArnsOutput)

3. 遍历执行删除操作

循环遍历ARN列表,逐个执行删除命令:

arnList.each { arn ->
    sh """
        aws elbv2 delete-load-balancer \
            --load-balancer-arn "${arn}"
    """
    echo "已删除负载均衡器:${arn}"
}

完整流水线代码示例

pipeline {
    agent any
    stages {
        stage('Delete Target Load Balancers') {
            steps {
                script {
                    // 查询目标负载均衡器ARN数组
                    def loadBalancerArnsOutput = sh(
                        returnStdout: true,
                        script: """
                            aws elbv2 describe-load-balancers | jq -r '[.LoadBalancers[] | select(.LoadBalancerName | startswith("loadbalancer-alb-")) | .LoadBalancerARN]'
                        """
                    ).trim()

                    // 解析为Groovy列表
                    def arnList = readJSON(text: loadBalancerArnsOutput)

                    // 遍历删除
                    if (arnList.isEmpty()) {
                        echo "未找到符合条件的负载均衡器"
                    } else {
                        arnList.each { arn ->
                            sh """
                                aws elbv2 delete-load-balancer \
                                    --load-balancer-arn "${arn}"
                            """
                            echo "已删除负载均衡器ARN:${arn}"
                        }
                    }
                }
            }
        }
    }
}

关键注意点

  • 确保Jenkins节点已配置AWS凭证,且拥有elbv2:DescribeLoadBalancers和elbv2:DeleteLoadBalancer权限
  • 若节点未安装jq,可改用AWS CLI原生--query参数替代:
    script: """
        aws elbv2 describe-load-balancers --query 'LoadBalancers[?starts_with(LoadBalancerName, `loadbalancer-alb-`)].LoadBalancerARN' --output json
    """
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:15:34