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