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

AWS EBS闲置卷清理脚本误删带clean:DND标签资源问题排查

故障根因分析
  • 核心错误:原代码仅校验标签列表的第一个标签是否为clean:DND,只要该豁免标签不是列表第一项,判断条件就不成立,导致带标签的卷被误删
  • 隐含错误:代码引用了botocore.exceptions但未导入对应模块,触发异常时会直接报错退出
  • 逻辑冗余:两次独立判断标签是否存在,可合并简化
修复后代码
import boto3
import botocore

ec2 = boto3.client('ec2', region_name='ap-southeast-2')

def lambda_handler(event, context):
    try:
        for vol in ec2.describe_volumes()['Volumes']:
            if vol['State'] == 'available':
                # 检查是否存在豁免标签
                skip_delete = False
                if vol.get('Tags'):
                    for tag in vol['Tags']:
                        if tag['Key'] == 'clean' and tag['Value'] == 'DND':
                            skip_delete = True
                            break
                # 无豁免标签则删除
                if not skip_delete:
                    ec2.delete_volume(VolumeId = vol['VolumeId'])
                    print("deleted:", vol['VolumeId'])
    except botocore.exceptions.ClientError as e:
        error_code = int(e.response['Error']['Code'])
        if error_code == 404:
            exists = False
优化说明
  • 遍历卷的所有标签进行匹配,只要存在任意一个clean:DND标签就跳过删除,完全匹配业务规则
  • 补全botocore模块导入,异常处理逻辑可正常生效
  • 合并标签判断逻辑,减少冗余代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 05:09:03