【发布时间】:2019-10-03 10:16:34
【问题描述】:
在哪里可以找到有关 python boto3 库中的 .filter() 或 .all() 等函数的信息。我在以下代码中使用,它正确显示了所有信息。
导入boto3
定义差异(li1,li2): 返回 (list(set(li1)^set(li2)))
def my_handler(事件,上下文):
Custom_filters_ec2=[{'Name': 'tag:Project','Values': ['Himanshu']},{'Name': 'tag:Email','Values': ['hima']},{'Name':'instance-state-name','Values':['running','stopped']}
]
Custom_filters_all=[{'Name': 'tag:Project','Values': ['Himanshu']},{'Name': 'tag:Email','Values': ['hima']},]
ec2=boto3.resource('ec2',region_name='us-east-1')
ec=boto3.client('ec2',region_name='us-east-1')
#Terminate Instances
valid_instance=ec2.instances.filter(Filters=Custom_filters_ec2)
all_instance=iec2.instances.all()
Untagged_Instances=[]
Untagged_Instances=Diff(valid_instance,all_instance)
for i in Untagged_Instances:
i.terminate()
#Terminate Snapshot
valid_snapshots = ec2.snapshots.filter(Filters=Custom_filters_all).filter(OwnerIds=["XXXXXXXXXXXX"]).all()
all_snapshots = ec2.snapshots.filter(OwnerIds=["XXXXXXXXXXXX"]).all()
Untagged_snapshots=Diff(valid_snapshots,all_snapshots)
for i in Untagged_snapshots:
i.delete()
但是当我这样做时:
ec2.SecurityGroup.all() 或 ec2.SecurityGroup.filter(Filters=Custom_filters_all) 我收到以下错误:
sg=ec2.SecurityGroup.filter(Filters=Custom_filters_all) AttributeError: 'function' 对象没有属性 'filter'
我正在寻找有关如何使用这些函数的文档,例如 .all() 或`.filter() 或其他未记录的函数。
为什么它适用于 ec2,快照,但在尝试获取安全组时不起作用。
【问题讨论】:
-
你的代码不清楚,
Custom_filters_all里面是什么?为什么在all_instance=instances=ec2.instances.all()下有一个额外的=instance?另外.all()是常识。 -
你到底想做什么?
-
我正在尝试查找缺少 2 个标签的资源并将其删除。
标签: amazon-web-services amazon-ec2 automation aws-lambda boto3