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

如何从EC2实例标签字典提取指定键值对并重启Nessus扫描器

筛选并重启带指定标签的AWS EC2 Nessus扫描器实例

需求说明

需要从AWS EC2实例的标签中筛选出带有Key: NessusScanner, Value: TRUE的实例,并执行重启操作。现有代码仅能打印实例标签,添加筛选和重启逻辑时持续报错,需要修正实现。

解决方案

修改后的代码会将实例标签转换为易查询的字典结构,精准匹配目标标签,然后调用AWS SDK的重启接口执行操作:

def restart_lab_server(aws_client):
    response = aws_client.describe_instances()
    
    for reservation in response["Reservations"]:
        for instance in reservation["Instances"]:
            # 初始化标签字典,处理无标签的情况
            instance_tags = {}
            try:
                # 将标签列表转换为键值对字典,方便快速查询
                instance_tags = {tag['Key']: tag['Value'] for tag in instance["Tags"]}
            except KeyError:
                # 实例无标签时跳过
                continue
            
            # 检查是否符合NessusScanner标签条件
            if instance_tags.get('NessusScanner') == 'TRUE':
                instance_id = instance['InstanceId']
                print(f"重启Nessus扫描器实例: {instance_id}")
                # 调用AWS接口重启实例
                aws_client.reboot_instances(InstanceIds=[instance_id])
    
    return 0

关键逻辑说明

  • 标签转换:把AWS返回的标签列表[{"Key": "...", "Value": "..."}]转换成字典{"Key": "Value"},通过get()方法可以安全查询标签,避免KeyError。
  • 精准筛选:直接判断NessusScanner标签的值是否为TRUE,符合条件才执行后续操作。
  • 重启操作:使用reboot_instances接口,传入实例ID列表完成重启,这是AWS EC2官方支持的重启方式。
  • 异常优化:仅捕获KeyError(实例无标签的情况),其他错误会正常抛出,便于排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:31:17