이미지 by 다락원
0. 배경
aws 결제 대시보드에 갔더니 이용 요금이 생각보다 많이 나와있었다.
테스트용 인스턴스 종료하는 것을 깜박했나보다..
사용한만큼 과금되는거는 괜찮은데 이렇게 안썼는데 돈 나가는건 너무 아깝다ㅜㅜ
다음 소를 잃지않기 위해 외양간을 고쳐본다.
1. 설정하기
1) Policy 생성
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:StartInstances",
"ec2:DescribeTags",
"logs:*",
"ec2:DescribeInstanceTypes",
"ec2:StopInstances",
"ec2:DescribeInstanceStatus"
],
"Resource": "*"
}
]
}
2) Role 생성
target은 Lambda, 1) 에서 생성한 policy로 Role을 생성한다
3) Lambda 생성
runtime : python
실행 역할 : 기존 역할 선택 -> 2) 에서 만든 Role 선택
import boto3
region = 'ap-northeast-2'
ec2 = boto3.resource('ec2', region_name=region)
def lambda_handler(event, context):
# Get running instance list with tag AutoStop=True
# instance-state-name : ( pending | running | shutting-down | terminated | stopping | stopped )
instances = ec2.instances.filter(Filters=[
{
'Name': 'instance-state-name',
'Values': ['running']
}
,{
'Name': 'tag:AutoStop',
'Values':['True']
}
])
# Stop instance
for instance in instances:
id=instance.id
# ec2.instances.filter(InstanceIds=[id]).start()
ec2.instances.filter(InstanceIds=[id]).stop()
print('Instance ID is stopped :- '+instance.id)
return 'success'
4) EventBridge 설정
규칙 세부 정보 정의
EventBridge 규칙 생성 -> 규칙일정 -> 일정 선택
일정 정의
cron 패턴 정의 표시 시간이 UTC인지 현지시간인지 확인
대상 선택
3) 에서 만든 Lambda 생선택
EventBrige 시간을 바꿔서 테스트해봤다.
EC2 대시보드에서 확인하니 종료되었고
CloudWatch Log 확인해보면 test 로그와 동일하게 남겨져있다.
테스트했으니 시간 다시 01시로 맞춰놓기!
외양간 고치기 끝 🐮🐮🐮
참고 자료
Lambda를 사용하여 Amazon EC2 인스턴스를 정기적으로 중지하고 시작하려면 어떻게 해야 하나요?(권한 안맞음)
'Cloud' 카테고리의 다른 글
[DVE-C02] 07. AWS Fundmentals : ELB + ASG (0) | 2024.10.20 |
---|---|
Udemy 강의 - Ultimate AWS Certified Developer Associate 2024 NEW DVA-C02 (0) | 2024.10.17 |
[AWS] AWS Cloud Practitioner(CLF-01) 합격 후기 + 팁 (0) | 2022.11.16 |
[AWS] AWS 서버리스로 서버 없이 간단한 웹 애플리케이션 만들기 (0) | 2022.09.18 |
[AWS] Ubuntu GUI 설치 및 실행 (0) | 2022.08.15 |