amazon-web-services - 如何查找所有缺少特定标签和值的 ec2 实例
问题描述
在哪里可以找到有关 python boto3 库中的 .filter() 或 .all() 等函数的信息。我在以下代码中使用它,它正确显示了所有信息。
导入 boto3
def Diff(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' object has no attribute 'filter'
我正在寻找有关如何使用这些函数的文档,例如.all()
or`.filter() 或其他未记录的函数。为什么它适用于 ec2,快照但在尝试获取安全组时不起作用。
解决方案
boto3 EC2 snapshot.filter() 文档解释了可用的过滤器。
但是,与其尝试创建过滤器,我建议您获取完整的快照列表,然后使用 Python 将列表过滤为您想要的。这可以通过一些列表推导或简单for
循环来完成。另外,语法通常要容易得多!
推荐阅读
- python - 读取和写入 Networkx Graph 的有效方法
- c# - Windows 窗体在未插入时检测按键
- specflow - 并行运行时 SpecFlow+ 目标值不匹配
- intellij-idea - 将 IntelliJ 和 JavaFX 11 与 jdk 11 一起使用时出错
- flutter - NoSuchMethodError:在 null 上调用了方法“[]”尝试调用:[](“a”)
- haskell - 是否可以概括这个 lmap
- google-bigquery - 附加模式下的 BigQuery 加载数据因配置单元分区而失败
- android - Android 中 Button 上的进度指示器
- android - 布局中的多个文本视图以遵循渐变颜色 [Android]
- ios - 显示自定义窗口时导航栏框架错误