在哪里可以找到python boto3库中有关.filter()或.all()之类的函数的信息。我在以下代码中使用它,它正确显示了所有信息。
导入boto3
def Diff(li1,li2): return(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:“函数”对象没有属性“过滤器”
我正在寻找有关如何使用这些功能的文档,例如.all()
或`.filter()或其他未记录的功能。
为什么它可以在ec2,快照上运行,但在尝试获取安全组时却无法运行。
答案 0 :(得分:0)
boto3 EC2 snapshot.filter() documentation说明了可用的过滤器。
但是,我建议您获取快照的完整列表,而不是尝试创建过滤器,然后使用Python将列表过滤到所需的内容。这可以通过一些列表理解或简单的for
循环来完成。另外,语法通常要容易得多!