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

AWS SSM DescribeInstanceInformation接口ResourceType过滤器单值限制问题问询

问题解答

1. 绕过过滤限制的最优方案

该限制的最优绕过方案就是分两次分别查询ManagedInstance和EC2Instance两类资源,再合并结果集即可。你原有方案的分页不生效不是paginator的问题,是后续处理结果的逻辑错误:你将所有分页响应存入列表后,仅读取了第一页(item[0])的数据,导致只返回单页的10条结果。
修正后的可正常分页、合并查询的代码如下:

import boto3

ssm_client = boto3.client('ssm')
online_instances = []
resource_types = ['ManagedInstance', 'EC2Instance']

for rtype in resource_types:
    paginator = ssm_client.get_paginator('describe_instance_information')
    # 分页查询对应类型的实例
    for page in paginator.paginate(
        Filters=[
            {
                'Key': 'ResourceType',
                'Values': [rtype]
            }
        ]
    ):
        # 筛选当前页的在线实例
        for instance in page['InstanceInformationList']:
            if instance.get('PingStatus') == 'Online':
                online_instances.append({
                    'instance_name': instance.get('ComputerName'),
                    'instance_id': instance.get('InstanceId'),
                    'resource_type': rtype
                    # 按需补充其他需要的字段
                })

# 后续直接使用合并后的在线实例列表即可
for ins in online_instances:
    print(ins['instance_name'])

如果不需要保留完整实例对象,也可以在遍历分页的时候直接处理业务逻辑,无需额外存储全部结果,进一步降低内存占用。

2. 限制的来源

该限制是AWS SSM服务端原生API的设计限制,和boto3 SDK无关。从报错信息An error occurred (InvalidInstanceInformationFilterValue) when calling the DescribeInstanceInformation operation: ResourceType filter may contain only one value也可以看出,错误是SSM服务端返回的,并非SDK本地校验抛出的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:18:04