Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lambda Python代码中基于多个标记的过滤器实例_Python_Amazon Web Services_Amazon Ec2_Aws Lambda - Fatal编程技术网

Lambda Python代码中基于多个标记的过滤器实例

Lambda Python代码中基于多个标记的过滤器实例,python,amazon-web-services,amazon-ec2,aws-lambda,Python,Amazon Web Services,Amazon Ec2,Aws Lambda,我想检查某个实例上是否有标记列表。我感兴趣的标签是Environment、Env和Environment。它们的价值是生产、产品和生产。我正在使用lambda函数进行检查,到目前为止,我有: response = ec2.describe_tags( Filters=[ { 'Name': 'tag:Environment|Env|environment', 'Values': [ 'Production|production|Pr

我想检查某个实例上是否有标记列表。我感兴趣的标签是Environment、Env和Environment。它们的价值是生产、产品和生产。我正在使用lambda函数进行检查,到目前为止,我有:

response = ec2.describe_tags(
Filters=[
    {
        'Name': 'tag:Environment|Env|environment',
        'Values': [
            'Production|production|Prod',
        ]
    },
    {
        'Name': 'resource-id',
        'Values': [
            instance_id,
        ],
    }
])
print(response)

但这并不能捕获实例上的正确标记。我认为问题在于我试图捕获“Key1 | Key2 | Key3”格式的多个标记。任何人都可以建议通过多个标签过滤的正确方法吗?谢谢

我想你必须打三个独立的电话。至少这是我从几次灭鼠行动中得出的结论

我使用的示例如下:

import boto3

from pprint import pprint

ec2 = boto3.client('ec2')

tag_values = ['production', 'Prod', 'Production']
tag_names = ['Env', 'Environment', 'environment']

results = []

for tag_name in tag_names:

    r=ec2.describe_tags(
            Filters=[{
                    'Name':'tag:' + tag_name,
                    'Values': tag_values
          }])

    pprint(r)

    results.append(r)


pprint(results)

似乎您正试图使用lambda基于EC2事件工作,那么您最好在EC2事件中可用的实例ID上获取实例库,获取标记并执行进一步的操作

ec2 = boto3.client('ec2')
specificinstance = ec2.describe_instances(Filters=[
{
    'Name': 'instance-id',
    'Vdataalues': [
        event["detail"]["EC2InstanceId"]
        ],
}])
TAGS=specificinstance["Reservations"][0]["Instances"][0]["Tags"]
pprint(TAGS) 
或者我没有找到一种方法根据不同的
标记键来筛选实例,但下面的示例可能会有所帮助,它根据不同的值进行筛选

import boto3  
client = boto3.client('ec2') 
filters = [{  
    'Name': "tag:environment",
    'Values': ['prod','production','Production']
    }]
response = client.describe_instances(Filters=filters)
print response
如果it容器
环境
产品、生产、生产

使用实例IP或保留ID进行筛选

import boto3  
client = boto3.client('ec2') 
filters = [{  
    'Name': "tag:environment",
    'Values': ['prod,production,Production']
    },
    {
    'Name': 'instance-id',
    'Values': [
        'i-123456789',
        ],
}]
response = client.describe_instances(Filters=filters)
print response