
Lab. Create an AWS Lambda Stopinator Function
워크 플로우
1. 정책 생성
2. 역할 생성 및 정책 연결
3. Lambda 함수 생성 및 역할 지정
4. Lambda 함수에 트리거(규칙) 추가
5. 인스턴스 생성
6. 인스턴스 - Lambda 함수 연결
7. 로그 확인
1.1. 권한 지정 - JSON
권한1. AWS cloud watch에 로그 기록 권한
권한2. EC2 stop 권한
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*",
"Effect": "Allow"
},
{
"Action": [
"ec2:Stop*"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
1.2. 정책 이름 : AllowStopEc2
설명 : AllowStopEc2
태그 추가 : Name - AllowStopEc2
2.1. 엔터티 유형 - AWS서비스
2.2. 엔터티 선택 - Lambda
2.3. 정책 선택 : AllowStopEc2, AWSLambdaBasicExecutionRole, AWSLambdaVPCAccessExecutionRole
2.4. 역할 이름 : myStopinatorRole
3.1. 함수 이름 : myStopinatorRoleFunc
3.2. 언어 - python 3.12
3.3. 아키텍쳐 - x86_64
3.4. 권한 - 기존 역할 사용 (myStopinatorRole)
4.1. 트리거 구성 - EventBridge
4.2. 규칙 - 새 규칙 생성
4.3. 규칙 이름 : everyMinute
4.4. 규칙 유형 - 예약 표현식 : rate(1 minute)
6.1. Lambda 코드 > 수정
import boto3
region = 'region'
instances = ['인스턴스 id']
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
ec2.stop_instances(InstanceIds=instances)
print('Stopped your instances:' + str(instances))
# AWS cloud watch의 로그에 print됨
6.2. 코드 적용 > Deploy
7.1. CloudWatch > 로그 그룹 > 로그 스트림 > 로그 이벤트