AWS
AWS EC2 종료 Lambda with EventBridge
yechan93
2023. 11. 28. 20:57
개요
AWS EC2 를 사용 하다보면 비용을 줄이고자 미사용 시간에 정지를 해야할 필요가 있다
이를 Lambda 와 EventBridge 로 구성하면 모든 EC2 에 대하여 자동으로 관리가 가능하다
작업내용
Lambda 코드 작성
EventBridge 설정
상세 작업
1. Lambda 코드
- boto3 ec2 client 를 사용한다
- ec2.describe_instances() 를 사용하여 현재 생성된 전체 EC2의 Instance_id 를 추출한다
- ec2 client 의 ec2.stop_instances 를 사용하여 추출한 Instance_id 의 EC2를 종료 한다
import boto3
def lambda_handler(event,context):
# Get the EC2 client
ec2 = boto3.client('ec2')
# Get the list of all instances
describe_instance_assets = ec2.describe_instances()
ec2_instance_list =[]
for reservation in describe_instance_assets['Reservations']:
for instance in reservation['Instances']:
instance_id = instance['InstanceId']
ec2_instance_list.append(instance_id)
ec2.stop_instances(InstanceIds=[instance_id])
# print(ec2_instance_list)
※주의사항
Lambda의 정상적인 실행을 위해서는 Lambda 권한에 EC2 제어 권한이 필요하다
2. EventBridge 설정
- EventBridge - 일정 부분에 스케줄을 생성 한다
- 일정 패턴 편집
- 원하는 시간대로 설정
- 시간대를 Asia/Seoul 로 설정하면 현지 시간으로 지정이 가능하다
- 대상으로 람다 지정
- 추가 설정 확인(불필요함으로 미지정)
- 위와같이 생성하면 Eventbidge 에서 자동으로 Lambda 를 실행할 권한을 생성하게 된다
- 설정한 시간대에 EventBridge 가 실행 되고, Lambda 를 호출하여 모든 EC2를 종료 하게 된다