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"])