#python #python-3.x #aws-lambda #boto3
#python #python-3.x #aws-lambda #boto3
Вопрос:
Я новичок в Python и программировании. Мне нужно создать лямбда-функцию с использованием Python 3.7, которая будет искать определенную комбинацию тегов / значений и возвращать значение тега вместе с идентификатором экземпляра. Я могу получить оба с моим текущим кодом, но мне трудно понять, как их объединить. boto3.resource дает мне значение тега, а boto3.client дает мне идентификатор экземпляра.
У меня есть экземпляры EC2 (1000), где нам нужно отслеживать значение тега для тега ‘expenddate’ и сравнивать значение (мм / дд / гг) с текущей датой (мм / дд / гг) и предупреждать, когда значение ‘expenddate’ меньше текущей даты.
import boto3
import collections
import datetime
import time
import sys
from datetime import date as dt
def lambda_handler(event, context):
today = datetime.date.today()
mdy = today_string = today.strftime('%m/%d/%y')
ec2 = boto3.resource('ec2')
for instance in ec2.instances.all():
if instance.tags is None:
continue
for tag in instance.tags:
if tag['Key'] == 'expenddate':
if (tag['Value']) <= mdy:
print ("Tag has expired!!!!!!!!!!!")
else:
print ("goodby")
client = boto3.client('ec2')
resp = client.describe_instances(Filters=[{
'Name': 'tag:expenddate',
'Values': ['*']
}])
for reservation in resp['Reservations']:
for instance in reservation['Instances']:
print("InstanceId is {} ".format(instance['InstanceId']))
Я хочу получить комбинированный идентификатор экземпляра и значение тега или две переменные, которые я могу объединить позже.
Ответ №1:
изменить
print ("Tag has expired!!!!!!!!!!!")
Для
# initialise array
expiredInstances=[]
.
.
.
.
.
print ("%s has expired" % instance.id)
expiredInstances.append({'instanceId':instance.id,'tag-value':tag['Value']})
Это даст вам массив идентификаторов экземпляров со значениями тегов