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)