[AWS] Lambda 함수 생성

sunnyjjang·2024년 9월 25일

AWS

목록 보기
6/21
post-thumbnail

Lab. Create an AWS Lambda Stopinator Function

워크 플로우
1. 정책 생성
2. 역할 생성 및 정책 연결
3. Lambda 함수 생성 및 역할 지정
4. Lambda 함수에 트리거(규칙) 추가
5. 인스턴스 생성
6. 인스턴스 - Lambda 함수 연결
7. 로그 확인

1. 정책 생성

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. 역할 생성 및 정책 연결

2.1. 엔터티 유형 - AWS서비스
2.2. 엔터티 선택 - Lambda
2.3. 정책 선택 : AllowStopEc2, AWSLambdaBasicExecutionRole, AWSLambdaVPCAccessExecutionRole
2.4. 역할 이름 : myStopinatorRole

3. Lambda 함수 생성 및 역할 지정

3.1. 함수 이름 : myStopinatorRoleFunc
3.2. 언어 - python 3.12
3.3. 아키텍쳐 - x86_64
3.4. 권한 - 기존 역할 사용 (myStopinatorRole)

4. Lambda 함수에 트리거(규칙) 추가

4.1. 트리거 구성 - EventBridge
4.2. 규칙 - 새 규칙 생성
4.3. 규칙 이름 : everyMinute
4.4. 규칙 유형 - 예약 표현식 : rate(1 minute)

5. 인스턴스 생성

6. 인스턴스 - Lambda 함수 연결

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. 로그 확인

7.1. CloudWatch > 로그 그룹 > 로그 스트림 > 로그 이벤트

profile
지금 이 순간이 다시 넘겨볼 수 있는 한 페이지가 될 수 있게

0개의 댓글