Лучший способ написать пользовательские фильтры | Python - AWS - Boto3 - PullRequest
1 голос
/ 13 июня 2019

Мое требование - фильтровать на основе 2 условий:

  1. Остановленные экземпляры
  2. Экземпляры с определенным тегом

Я могу добиться этого, написав 2отдельные пользовательские фильтры, но я хочу знать, смогу ли я добиться того же в одном фильтре.

Мой код:

    stopped_filter = Filters=[{'Name': 'instance-state-name', 'Values': ['stopped']}]
    stopped_instances = ec2.instances.filter(Filters=stopped_filter)

    tag_filter = Filters=[{'Name':'tag-key', 'Values':['doaf']}]
    tagged_instances = ec2.instances.filter(Filters=tag_filter)

Что я пробовал:

    filter = Filters=[{'Name': 'instance-state-name', 'Values': ['stopped']}, {'Name':'tag-key', 'Values':['doaf']}]
    stopped_and_tagged_instances = ec2.instances.filter(Filters=filter)

1 Ответ

2 голосов
/ 14 июня 2019

Эта строка:

filter = Filters=[{'Name': 'instance-state-name', 'Values': ['stopped']}, {'Name':'tag-key', 'Values':['doaf']}]

Должно быть:

filter = [{'Name': 'instance-state-name', 'Values': ['stopped']}, {'Name':'tag-key', 'Values':['doaf']}]

Полный пример:

import boto3

ec2 = boto3.resource('ec2', region_name='ap-southeast-2')
filter = [{'Name': 'instance-state-name', 'Values': ['stopped']}, {'Name':'tag-key', 'Values':['Foo']}]
stopped_and_tagged_instances = ec2.instances.filter(Filters=filter)
print([i.id for i in stopped_and_tagged_instances])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...