Проверка нескольких условий для томов EC2 - PullRequest
0 голосов
/ 03 июня 2019

Мне нужно проверить наличие нескольких условий на томе 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 голосов
/ 05 июня 2019

Я понял это самостоятельно с помощью сотрудника, мне пришлось познакомиться с регулярными выражениями, и я обнаружил, что ^ представляет «не». Мне также нужно было добавить '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)'
                        )
...