Я разрабатываю скрипт на Python для удаления старых AMI и их снимков. В целях тестирования я пытался создать и сразу после удаления AMI. Мой код для создания экземпляра следующий (включая добавление тегов в конце):
import boto3
from datetime import datetime, timedelta
import time
today = datetime.utcnow().strftime('%Y%m%d')
remove_on = (datetime.utcnow() + timedelta(days=3)).strftime('%Y%m%d')
session = boto3.session.Session(region_name='eu-west-1')
client = session.client('ec2')
ec2 = session.resource('ec2')
instance_info = client.describe_instances(Filters=[{'Name': 'tag:Name',
'Values': ['Airflow']}]) #This filter DOES work
instance_id = instance_info['Reservations'][0]['Instances'][0]['InstanceId']
instance = ec2.Instance(instance_id)
image = instance.create_image(InstanceId=instance_id, Name=f"Airflow_{today}")
time.sleep(2)
image.create_tags(Tags=[{'Key': 'RemoveOn', 'Value': remove_on},
{'Key': 'BackupOf', 'Value': 'Airflow'}])
Однако, когда я пытаюсь получить информацию о недавно созданном AMI, я не получаю данных:
instances_to_delete = client.describe_instances(Filters=[{'Name': 'tag:RemoveOn',
'Values':[remove_on]}])
Я пытался явно указать строку в значениях, но она тоже не работает. Кроме того, хотя это и не имело особого смысла (поскольку ранее у меня уже работал один фильтр), я также указал регион в клиенте (из-за этих ответов Boto3 ec2 description_instances всегда возвращает пустое значение ), и это нене работает Тег есть, как мы видим на следующем скриншоте