AWS ELB(Elastic Load Balancing)는 AWS 환경을 사용하면서 안 쓸수가 없을 정도로 필수적인 서비스입니다. 그만큼 많이 사용하고, 많이 생성하게 됩니다.
AWS ELB의 경우 사용하지 않더라도 삭제하지 않으면, 금액이 나오는 서비스입니다.
즉 생성한 후, 사용하지 않는다면 금액이 발생하게 됩니다.
그러므로 안 쓰는 AWS ELB는 주기적인 삭제가 필요합니다.
이 글에서는 안 쓰는 AWS ELB를 삭제하는 python 스크립트를 소개하고, 해당 스크립트를 활용하는 방법까지 소개해드립니다.
ALB, NLB, CLB를 서울리전에서 하나 설치했을 때 금액
import json
from unicodedata import name
import boto3
def lambda_handler(event, context):
client=boto3.client('elbv2')
response=client.describe_load_balancers(
)
for lb in response['LoadBalancers']:
tags=client.describe_tags(
ResourceArns=[
lb['LoadBalancerArn']
]
)
tgs=client.describe_target_groups(LoadBalancerArn=lb['LoadBalancerArn'])
TG_COUNT=0
Target_COUNT=0
Delete_TG=[]
for tg in tgs["TargetGroups"]:
TG_COUNT+=1
healths=client.describe_target_health(TargetGroupArn=tg["TargetGroupArn"])
if "TargetHealthDescriptions" in healths:
HEALTH_COUNT=0
COUNT=0
for health in healths['TargetHealthDescriptions']:
COUNT+=1
if health['TargetHealth']['State']=="healthy":
HEALTH_COUNT+=1
if HEALTH_COUNT==0 and COUNT ==0:
Delete_TG.append(tg)
else:
Target_COUNT+=1
#LB에 Listener로 Target Group 등록되어있고 Target도 존재하나 전부 Health x
if HEALTH_COUNT==0 and COUNT > 0:
print("Target exist but ALL UNHEALTH (",HEALTH_COUNT,"/",COUNT, ") TG: ",tg["TargetGroupName"], "ALB: ",lb['LoadBalancerName'])
print("========================================")
#LB에 Listener로 Target Group이 등록되어있지않음
if TG_COUNT==0:
print("Delete ALB (",lb['LoadBalancerName'],") - targetGroup 존재 x")
response = client.delete_load_balancer(
LoadBalancerArn=lb['LoadBalancerArn']
)
print("========================================")
#LB에 Listener로 Target Group이 등록되어있지만 Target 존재 x
elif Target_COUNT==0:
response = client.delete_load_balancer(
LoadBalancerArn=lb['LoadBalancerArn']
)
print("Delete ALB (",lb['LoadBalancerName'],") - target이 존재하는 targetGroup 존재 x")
for tg in Delete_TG:
print("Delete Target Group (", tg["TargetGroupName"], ") ALB(",lb['LoadBalancerName'],")")
response = client.delete_target_group(
TargetGroupArn=tg["TargetGroupArn"]
)
print("========================================")
AWS Lambda(python) + EventBridge(cron)로 주기적 실행
클라우드 환경에서 운영을 하다보면 생각보다 안쓰는 리소스들로 인한 금액이 많아지는 것 같습니다. 이런 리소스들을 사람이 일일히 확인하는 것은 힘들다고 생각합니다. 리소스 확인 및 삭제를 자동화 한다면, 조금 더 기존 리소스들을 운영하는데 신경을 쏟을 수 있다고 생각합니다.