фильтровать экземпляры на основе нескольких тегов

#python #amazon-web-services #amazon-ec2 #boto3

#python #amazon-веб-сервисы #amazon-ec2 #boto3

Вопрос:

Привет, я не могу фильтровать экземпляры на основе нескольких тегов. Это может выполняться для одного условия фильтра, когда я указываю два тега в фильтре, он выдает значение null. Я думаю, что он принимает значение «И» в фильтре. Есть ли какой-либо способ указать как ИЛИ в условии фильтра. У нас есть ключи тегов как для среды, так и для environment, было бы полезно получить обе детали, а не использовать два условия фильтрации по отдельности.

 #define the connection region ec2 = boto3.client('ec2', region_name="us-east-1") s3 = boto3.client('s3')

custom_filter = [
    {
        'Name':'tag:Enviroment', 
        'Values': ['*']
    },   
    {
        'Name':'tag:environment',
        'Values': ['*']
    } 
]
     def lambda_handler(event,context):
    response = ec2.describe_instances(Filters=custom_filter)
    Reservation_details = response["Reservations"]
    for instance_details in Reservation_details:
        instances = instance_details.get("Instances")
        print(instances)
  

Ответ №1:

В конце концов, каждый элемент в списке фильтров рассматривается как пересечение, а элементы в VALUES списке элементов фильтра — как объединение.

Для фильтрации по ключу тега, где экземпляры имеют ключ тега, равный Environment или environment не заботящийся о значении ключа тега, вы можете написать custom_filter , чтобы быть:

 custom_filter = [
    {
        'Name':'tag-key', 
        'Values': ['Environment', 'environment']
    }
]