获取特定于AWS EC2的标签/值组合+实例ID

时间:2019-04-18 18:24:03

标签: python python-3.x aws-lambda boto3

我是Python和编程的新手。我需要使用Python 3.7创建一个Lambda函数,该函数将查找特定的标记/值组合并返回标记值以及实例id。我可以用当前的代码同时获得两者,但是我很难弄清楚如何将它们结合起来。 boto3.resource给我标签值,而boto3.client给我实例ID。

我有EC2实例(1000个),我们需要监视标签“ expenddate”的标签值并将其值(mm / dd / yy)与当前日期(mm / dd / yy)进行比较,并在出现“ 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']))

我想以实例ID和标记值的组合或两个以后可以组合的变量结束。

1 个答案:

答案 0 :(得分:0)

更改

print ("Tag has expired!!!!!!!!!!!")

# initialise array 
expiredInstances=[]
.
.
.
.
.
print ("%s has expired" % instance.id)
expiredInstances.append({'instanceId':instance.id,'tag-value':tag['Value']})

这将为您提供带有标签值的instanceId数组