개요
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를 종료 하게 된다
'AWS' 카테고리의 다른 글
RDS 이벤트 구독을 통한 RDS 관리 (1) | 2024.01.07 |
---|---|
EKS fargate 생성을 위한 설정 (0) | 2023.12.18 |
AWS EKS LB Controller Install (0) | 2023.09.29 |
AWS EC2/RDS Instance 정보 조회 Lambda 코드 (0) | 2023.09.24 |
Route53 라우팅 정책 (0) | 2023.08.05 |