IAM 정책 생성
AWS Lambda 서비스를 사용하기 위해서 다음과 같이 정책을 설정한다.
- 검색 창에 IAM을 입력하고 정책을 클릭한다.
- 정책 생성하기 버튼을 클릭한다.
- Json 버튼을 클릭한 후 다음과 같은 코드를 작성한다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"ec2:Start*",
"ec2:Stop*"
],
"Resource": "*"
}
]
}
- 이름을 작성하고 정책 생성 버튼을 클릭한다.
정책을 생성한 뒤, 역할을 설정한다.
- 역할 버튼을 클릭한 후, 역할 만들기 버튼을 클릭한다.
- Lambda를 선택한 후, 다음 버튼을 클릭한다.
- 이후, 이전에 생성한 정책을 연결한다.
- 역할 이름을 설정한 후, 역할을 생성한다.
AWS Lambda 사용하기
- 검색 창에 Lambda를 입력하고 이동한 후, 함수 생성 버튼을 클릭한다.
인스턴스 종료, 실행 함수를 생성한다.
- 함수 이름을 설정한다.
- 런타임을 Python으로 설정한다.
- 기본 상태 역할 변경을 클릭한 후, 기존 역할 사용 -> 이전에 생성한 역할을 연결한다.
- 만들어진 함수에 다음과 같은 코드를 입력한다.
- instances에는 ec2 인스턴스 ID를 입력한다.
- region에는 ec2 Region ID를 입력한다.
// 인스턴스 종료 코드
import boto3
region = 'us-west-1'
instances = ['i-12345cb6de4f78g9h', 'i-08ce9b2d7eccf6d26']
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
ec2.stop_instances(InstanceIds=instances)
print('stopped your instances: ' + str(instances))
// 인스턴스 실행 코드
import boto3
region = 'us-west-1'
instances = ['i-12345cb6de4f78g9h', 'i-08ce9b2d7eccf6d26']
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
ec2.start_instances(InstanceIds=instances)
print('started your instances: ' + str(instances))
AWS CloudWatch 사용하기
- 검색 창에 CloudWatch를 입력 후, 이벤트 - 규칙 버튼을 클릭한다.
- 규칙 생성을 클릭한다.
- 이름, 설명, 이벤트 버스, 일정을 설정한 후, 다음 버튼을 클릭한다.
- 함수를 실행시킬 cron 식을 입력한다. UTC를 사용하므로 -9 시간을 해주어야 한다.
- 위에 적힌 cron 식은 매일 19시를 의미한다.
- AWS 서비스 - Lambda 함수 - ec2-turn-off 선택 후, 다음 버튼을 클릭한다.
- 이후, 쭉 다음 버튼을 클릭한 뒤, 규칙 생성 버튼을 클릭한다.
해당 방법으로 ec2-생성/종료 함수를 등록하면 된다.
'AWS' 카테고리의 다른 글
[AWS Chatbot] CodeDeploy 배포 결과 Slack 알림 연동 (0) | 2023.01.13 |
---|---|
CloudWatch Logs 사용한 로그 중앙 집중화 (0) | 2022.12.19 |