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

如何从AWS SSM合规查询结果中提取Status为COMPLIANT的字段?

问题原因

你当前代码仅访问了合规项列表的第一个元素L1[0],因此只能拿到第一个合规项的状态。需要遍历整个合规项列表,同时增加条件判断筛选出Status为COMPLIANT的条目即可。

修正后代码

import boto3

client = boto3.client('ec2')
ssm_client = boto3.client('ssm')
reservations = client.describe_instances().get("Reservations", [])
instances = []
INSTANCE_ID_KEY = "InstanceId"

# 提取所有实例信息
for reservation in reservations:
    instances.extend(reservation.get("Instances", []))

# 存储所有状态为COMPLIANT的合规项
compliant_items = []

for instance in instances:
    instance_id = instance[INSTANCE_ID_KEY]
    ssm_resp = ssm_client.list_compliance_items(
        ResourceIds=[instance_id],
        ResourceTypes=['ManagedInstance']
    )
    all_items = ssm_resp.get('ComplianceItems', [])
    
    # 遍历筛选合规项
    for item in all_items:
        if item.get('Status') == 'COMPLIANT':
            compliant_items.append(item)
            # 按需打印需要的字段,示例如下
            print(f"实例ID: {instance_id}, 合规类型: {item['ComplianceType']}, 条目ID: {item['Id']}, 状态: {item['Status']}")

# 可后续对compliant_items做其他处理
print(f"\n共查询到 {len(compliant_items)} 条状态为COMPLIANT的合规条目")

补充说明

  • 代码增加了空列表兜底逻辑,避免接口返回为空时触发索引报错
  • 如果合规项数量较多需要分页,可判断接口返回的NextToken参数,循环调用接口拉取全量数据后再筛选
  • 所有符合要求的合规条目都存储在compliant_items列表中,可直接遍历提取你需要的具体字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:39:03