Aws лямбда-функция для фильтрации функции describe_images, содержащей только значения имени и тега

#python #amazon-web-services #image #aws-lambda #boto3

#питон #amazon-веб-сервисы #изображение #aws-лямбда #boto3

Вопрос:

Есть AMI на AWS с разными тегами, подобными этому

AMI 1 :

 key         value
modified_by mark
 

АМИ 2 :

 key         value
modified_by Tom
 

АМИ

Попробовал использовать этот фильтр для извлечения только значений name и modified_by .

     
    ec2_client = boto3.client('ec2', region_name='ap-east-1') 
    images = ec2_client.describe_images(Owners=['self'],Filters=[{'Name': 'modified_by', 'Values': ['Tom']}])
    
 

Получил эту ошибку

  "errorMessage": "An error occurred (InvalidParameterValue) when calling the DescribeImages operation: The filter 'modified_by' is invalid"
 

Как вызвать функцию filter describe_images() с использованием boto3 в aws lambda, чтобы получить только имя экземпляра и только modified_by

Ответ №1:

Ваши фильтры неверны.

Из документов boto3.

тег: ключ — комбинация ключ / значение тега, присвоенного ресурсу. Используйте ключ тега в имени фильтра и значение тега в качестве значения фильтра. Например, чтобы найти все ресурсы, у которых есть тег с владельцем ключа и значением TeamA , укажите tag:Owner для имени фильтра и TeamA для значения фильтра.

tag-key — ключ тега, присвоенный ресурсу. Используйте этот фильтр, чтобы найти все ресурсы, которым присвоен тег с определенным ключом, независимо от значения тега.

Так, например:

 images = ec2_client.describe_images(Owners=['self'],Filters=[{'Name': 'tag-key', 'Values': ['Tom']}])
 

Будет перечислен список всех экземпляров, у которых есть тег со значением «Tom», независимо от их ключа тега.

и

 images = ec2_client.describe_images(Owners=['self'],Filters=[{'Name': 'tag:modified-by', 'Values': ['Tom']}])
 

будут перечислены все изображения, которые имеют тег «modified-by» со значением «Tom»