首页 > 解决方案 > AWS SSM describe_instance_information 使用旧数据?

问题描述

我有一个正在运行的 lambda 函数:

ssm = boto3.client('ssm')
print(ssm.describe_instance_information())

它返回 6 个实例。5 是已终止的旧实例,不再出现在我的控制台中。一个例子是正确的。我创建了该实例的 AMI 映像,并尝试在同一安全组和子网下启动多个实例。这些实例都不是从 describe_instance_information 返回的。是否报告旧数据?9

我的最终目标是让 lambda 函数使用 AMI 启动实例并向其发送命令。如果我使用现有实例,一切正常。我试图让它与从 AMI 创建的一个一起工作。

编辑:过了一会儿,实例确实出现了,我想这需要一段时间。我不明白为什么终止的实例仍然出现。我可以轮询 describe_instance_information,直到我想要的 instance_id 出现,但是否有更简洁的内置函数,例如 wait_for_xxxxx()?

标签: amazon-ec2aws-ssm

解决方案


您可以将过滤器参数与 PingStatus 一起使用,以确定 SSM 代理的连接状态。

 response = client.describe_instance_information(
    Filters=[
    {
        'Key': 'PingStatus',
        'Values': [
            'Online'
        ]
    },
   ]
)

推荐阅读