def del_sgs()

in functions/source/CleanupLoadBalancers/lambda_function.py [0:0]


def del_sgs(tag_key, cluster_name):
    ec2 = boto3.client('ec2')
    filters = [
        [
            {'Name': 'tag:%s' % tag_key, 'Values': ['owned']},
            {'Name': 'resource-type', 'Values': ['security-group']}
        ],
        [
            {'Name': 'tag:elbv2.k8s.aws/cluster', 'Values': [cluster_name]},
            {'Name': 'resource-type', 'Values': ['security-group']}
        ]
    ]

    for f in filters:
        response = ec2.describe_tags(Filters=f)
        for t in [r['ResourceId'] for r in response['Tags']]:
            clean = False
            retries = 10
            while not clean and retries > 0:
                try:
                    ec2.delete_security_group(GroupId=t)
                    clean = True
                except ec2.exceptions.ClientError as e:
                    if 'DependencyViolation' in str(e):
                        retries -= 1
                        print("Dependency error on %s" % t)
                        sleep(5)
                        delete_dependencies(t, ec2)
                    else:
                        clean = True  # we don't know why it can't delete, so we're just logging it and moving on
                        print(e)