boto3 instance.filter 数组

Posted

技术标签:

【中文标题】boto3 instance.filter 数组【英文标题】:boto3 instances.filter array 【发布时间】:2022-01-23 21:03:36 【问题描述】:

我正在尝试打印状态检查失败的 EC2 实例列表

当我像这样进行实例过滤时

instances = conn.instances.filter(
    Filters=[
        'Name': 'instance-id', 'Values': ['i-017357c1c4a1a96f8', 'i-07e399b452c7100c3']
        ]
)


for instance in instances:
    instance_name = get_tag(instance.tags)        
    print (instance_name, instance.id, instance.instance_type)

我能够打印出实例。

但是当我在数组中进行过滤时,即使 failed_instances() 数组包含以下内容,它也不起作用:['i-017357c1c4a1a96f8', 'i-07e399b452c7100c3']

instances = conn.instances.filter(
    Filters=[
        'Name': 'instance-id', 'Values': [failed_instances]
        ]
)

print(failed_instances)

['i-017357c1c4a1a96f8', 'i-07e399b452c7100c3']

有什么想法吗?


OK 做了一些修改,但我无法将其填充到数组中。任何想法?可能是instanceID错了?

instances = conn.instances.filter(
    InstanceIds = failed_instances
)

#print(failed_instances)
tag_names = []
for instance in instances:
    instance_name = get_tag(instance.tags) 
 #   print (instance_name, instance.id, instance.instance_type)
    tag_names.append(i["instance_name"])
print(tag_names)

【问题讨论】:

代码是特定的。您应该具体提出有关它的问题。 “failed_instances() 数组”是什么意思? failed_instances 是返回数组的函数吗? () 表示函数调用。您说“不起作用”- 没有要包含的错误? failed_instances 是我从另一个循环中得到的数组 print(failed_instances) 显示 ['i-017357c1c4a1a96f8', 'i-07e399b452c7100c3'] 好的,现在可以使用 tag_names.append(instance_name) 【参考方案1】:

从您的代码中并不完全清楚,但听起来failed_instances 已经是一个数组。然后当你说[failed_instances]时,你把它放到另一个数组中。

相反,你应该写:

instances = conn.instances.filter(
    Filters=[
        'Name': 'instance-id', 'Values': failed_instances
        ]
)

【讨论】:

以上是关于boto3 instance.filter 数组的主要内容,如果未能解决你的问题,请参考以下文章

boto3:Spot 实例创建

Boto3 CloudFormation 状态

AWS 成本浏览器 boto3

使用 Boto3 基于 AMI 创建 EMR 集群

使用 Python 和 Boto3 获取列表集群 Amazon Redshift

Boto3 从 S3 存储桶下载所有文件