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

Lambda Python函数匹配Cortex XDR版本时通配符使用报错求助

问题原因与解决方法

为什么会触发KeyError?

你用line['Cortex*']直接访问字典键,但CSV文件的列名里根本没有Cortex*这个键——CSV的列是具体的软件全名(比如Cortex XDR 7.8、Cortex XDR 8.0),字典的键必须和列名完全匹配。通配符*不能直接用在字典键的索引上,Python会把Cortex*当成一个精确的键名去查找,找不到自然就报KeyError了。你导入了re模块但没真正用正则来匹配键名。

解决方法

遍历CSV行的所有键,用正则匹配符合Cortex XDR开头(或包含该字符串)的列名,提取对应的值。

代码修改示例

把Windows实例处理部分的xdr=line['Cortex*']替换成以下逻辑:

# 匹配Cortex XDR相关的列(根据实际列名调整正则)
xdr_value = ""
# 正则模式:匹配以"Cortex XDR"开头的列名,适配带版本号的情况
cortex_pattern = re.compile(r'^Cortex XDR')
for key in line.keys():
    if cortex_pattern.match(key):
        xdr_value = line[key]
        break  # 每个实例通常只有一个XDR版本,找到第一个匹配项就停止

item = dict(id=line['instance-id'],
            name=line['instance-name'],
            ip=line['ip-address'],
            ssm=line['Amazon SSM Agent'],
            cw=line['Amazon CloudWatch Agent'],
            ch=line['CloudHealth Agent'],
            mav=line['McAfee VirusScan Enterprise'],
            trx=line['Trellix Agent'],
            xdr=xdr_value)

正则调整说明

  • 如果CSV列名是Cortex XDR v1.2这种格式,用r'^Cortex XDR'就能匹配所有开头是该字符串的列。
  • 如果列名里Cortex不是开头(比如Palo Alto Cortex XDR 9.1),把正则改成re.compile(r'Cortex XDR')即可匹配包含该字符串的列。

这样修改后,不管实例安装的是哪个版本的Cortex XDR,都能正确提取到对应的版本值;如果实例没安装,xdr_value会是空字符串,会被not all(item.values())判定为不达标,符合你的统计需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:02:54