def delete_handler()

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


def delete_handler(event, _):
    tag_key = "kubernetes.io/cluster/%s" % event["ResourceProperties"]["ClusterName"]
    lb_types = [
        ["elb", "LoadBalancerName", "LoadBalancerNames", "LoadBalancerDescriptions", "LoadBalancerName"],
        ["elbv2", "LoadBalancerArn", "ResourceArns", "LoadBalancers", "ResourceArn"]
    ]
    for lt in lb_types:
        elb = boto3.client(lt[0])
        lbs = []
        response = elb.describe_load_balancers()
        while True:
            lbs += [l[lt[1]] for l in response[lt[3]]]
            if "NextMarker" in response.keys():
                response = elb.describe_load_balancers(Marker=response["NextMarker"])
            else:
                break
        lbs_to_remove = []
        if lbs:
            #Split LB list into groups of 'size' items.
            size = 20
            lb_groups = (lbs[pos:pos + size] for pos in range(0, len(lbs), size))
            for lb_group in lb_groups:
                lb_group = elb.describe_tags(**{lt[2]: lb_group})["TagDescriptions"]
                for tags in lb_group:
                    for tag in tags['Tags']:
                        if tag["Key"] == tag_key and tag['Value'] == "owned":
                            lbs_to_remove.append(tags[lt[4]])
                        if tag["Key"] == 'elbv2.k8s.aws/cluster' and tag['Value'] == event["ResourceProperties"]["ClusterName"]:
                            lbs_to_remove.append(tags[lt[4]])
        if lbs_to_remove:
            for lb in lbs_to_remove:
                print("removing elb %s" % lb)
                elb.delete_load_balancer(**{lt[1]: lb})
    del_sgs(tag_key, event["ResourceProperties"]["ClusterName"])