AWS - создание AMI с использованием тегов экземпляра EC2 для присвоения имени AMI
Я пытаюсь сделать что-то, что я считаю очень простым, но я не эксперт по Python, поэтому мне нужна ваша помощь в этом, позвольте мне показать вам, что я пытаюсь сделать:
У меня есть эта часть кода, которую я нашел и работает очень хорошо, но я пытаюсь немного ее изменить:
AMIid = ec.create_image(InstanceId=instance['InstanceId'], Name="BKP - " + **instance['InstanceId']** + " from " + create_fmt, Description="Lambda created AMI of instance " + instance['InstanceId'] + " from " + create_fmt, NoReboot=True, DryRun=False)
Я пытаюсь добавить TAG "Имя" из моих экземпляров EC2 в поле "Имя" нового AMI, который создается, что-то вроде этого:
AMIid = ec.create_image(InstanceId=instance['InstanceId'], Name="BKP - " + **Tags=[Key:"Name",'Value']** + " from " + create_fmt, Description="Lambda created AMI of instance " + instance['InstanceId'] + " from " + create_fmt, NoReboot=True, DryRun=False)
Есть идеи, как это сделать?
Редактирование: Я нашел решение для этого, возможно, это не лучший способ, но сработало, следуйте тому, что я сделал до сих пор:
Создана переменная для получения имени тега EC2:
nameTag = "".join([str(t.get('Value')) for t in instance['Tags'] if t['Key'] == 'Name'])
Затем включил переменную nameTag в код:
AMIid = ec.create_image(InstanceId=instance['InstanceId'], Name="BKP - " + **nameTag** + " from " + create_fmt, Description="Lambda created AMI of instance " + instance['InstanceId'] + " from " + create_fmt, NoReboot=True, DryRun=False)
Надеюсь, что это может помочь большему количеству людей, которым нужно что-то подобное!
Спасибо!
0 ответов
Не уверен, что это будет полезно, так как это сообщение уже двухлетней давности, но тем не менее
details = ec.describe_instances(InstanceIds=[instance['InstanceId']])
for tags in details['Reservations'][0]['Instances'][0]['Tags']:
if tags['Key'] == "Name":
instance['Name'] = tags['Value']
print("Instance Name:" + instance['Name'])
Приведенный выше скрипт даст вам имя экземпляра