Как найти все экземпляры ec2, в которых отсутствуют определенные теги и значения - PullRequest
0 голосов
/ 16 мая 2019

Где я могу найти информацию о таких функциях, как .filter () или .all () в библиотеке python boto3. Я использую в следующем коде, и он отображает всю информацию правильно.

импорт boto3

def Diff (li1, li2): возврат (список (набор (li1) ^ набор (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 (Фильтры = Custom_filters_all) AttributeError: у объекта 'function' нет атрибута 'filter'

Я ищу документацию о том, как использовать эти функции, такие как .all() или `.filter () или другие функции, которые не документированы. Почему это работает на ec2, снимок, но не при попытке получить группу безопасности.

1 Ответ

0 голосов
/ 16 мая 2019

Документация boto3 EC2 snapshot.filter () объясняет, какие фильтры доступны.

Однако вместо того, чтобы пытаться создать фильтр, я бы порекомендовал вам получить полный список снимков, а затем использовать Python для фильтрации списка по вашему желанию. Это может быть сделано с некоторыми списками или простыми циклами for. Кроме того, синтаксис часто намного проще!

...