检查EC2卷的多个条件

时间:2019-06-03 15:18:02

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

我需要检查EC2卷上的多个条件。

在第2行上,它先前读取为'if vol.state =='available':',并且此方法有效。现在,我需要排除所有带有“名称”标签且其值以“ CloudEndure”开头的卷。我添加了代码,因此第2行现在显示为'if vol.state =='available',而不是[{'Name':'tag:Name','Values':['CloudEndure *']}]:',并且失败出现语法错误。

    for vol in ec2.volumes.all():
        if vol.state == 'available' and not [{'Name':'tag:Name', 'Values':['CloudEndure*']}]:
            vid=vol.id
            v=ec2.Volume(vol.id)
            response = table.query(
            KeyConditionExpression=Key('volID').eq(vid),
            )
            if response['Count'] == 0: #volume not being tracked in table
                try:
                    response = table.put_item(
                        Item={
                            'volID': vid,
                            'ebsDaysToExpire': 7,
                            'snapshotStatus': 'incomplete',
                            'snapshotDate': 'incomplete',
                            'lifecycleStatus': 'start_7',
                            'snapshotID': 'incomplete',
                            'snapshotDaysToExpire': '30'
                        },
                        ConditionExpression='attribute_not_exists(volID)'
                        )

1 个答案:

答案 0 :(得分:0)

我在一位同事的帮助下自己弄清楚了这一点,不得不熟悉正则表达式,并且发现^代表“ not”。我还需要在函数顶部附近添加“ import re”,以导入regualr表达式。新代码如下。这不包括名称以“ CloudEndure”开头的卷,这就是我的名字。

    for vol in ec2.volumes.all():
        cloudendure=False
        for tag in vol.tags:
            if tag['Key'] == 'Name' and re.search("^CloudEndure.*",tag['Value']):
               cloudendure=True
               #print(tag)
        if vol.state == 'available' and cloudendure==False:
            vid=vol.id
            v=ec2.Volume(vol.id)
            response = table.query(
            KeyConditionExpression=Key('volID').eq(vid),
            )
            if response['Count'] == 0: #volume not being tracked in table
                try:
                    response = table.put_item(
                        Item={
                            'volID': vid,
                            'ebsDaysToExpire': 7,
                            'snapshotStatus': 'incomplete',
                            'snapshotDate': 'incomplete',
                            'lifecycleStatus': 'start_7',
                            'snapshotID': 'incomplete',
                            'snapshotDaysToExpire': '30'
                        },
                        ConditionExpression='attribute_not_exists(volID)'
                        )