首页 > 解决方案 > 基于多个标签过滤实例

问题描述

您好我无法根据多个标签过滤实例。当我在过滤器中提供两个标签时,它可以为一个过滤器条件做一个空值。我认为它在过滤器中被视为“AND”。有什么方法可以在过滤条件中判断为 OR。我们在环境和环境中都有标签键,这将有助于获取两个详细信息,而不是分别使用两个过滤条件。

#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)

标签: pythonamazon-web-servicesamazon-ec2boto3

解决方案


AFAIU,过滤器列表中的每个项目都被视为一个交集VALUES,过滤器项目列表中的项目被视为一个并集。

要过滤标签键,其中实例的标签键为Environmentenvironment不关心标签键的值,您可以写成custom_filter

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

推荐阅读