Я использую теги для отслеживания своих экземпляров EC2, таких как (Project, Environment). Я использую случай, когда мне нужно отфильтровать только те экземпляры, которые относятся к определенному проекту и конкретной среде.
Когда я использую фильтр с boto и передаю эти два значения, я получаю результат, который делает OR, а не AND фильтров, и поэтому я получаю список экземпляров, относящихся к разным проектам, но в той же среде.
Теперь я могу использовать два списка, а затем сравнить экземпляры в каждом и получить желаемый набор экземпляров, но есть ли лучший способ сделать это?
Вот что я делаю:
conn = ec2.EC2Connection('us-east-1',aws_access_key_id='XXX',aws_secret_access_key='YYY')
reservations = conn.get_all_instances(filters={"tag-key":"project","tag-value":<project-name>,"tag-key":"env","tag-value":<env-name>})
instances = [i for r in reservations for i in r.instances]
Теперь список экземпляров, который я получаю, дает все экземпляры из указанного проекта независимо от среды и всех экземпляров из указанной среды независимо от проекта.