728x90
[AWS] Lambda
1. AWS Lambda?
서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스
고가용성 컴퓨팅 인프라에서 코드를 실행한다.
Lamba는 서버와 운영 체제 유지 관리, 용량 프로비저닝 및 자동 조정, 코드 및 보안 패치 배포, 로깅 등의 모든 컴퓨터 리소스를 관리를 수행한다.
Lambda는 사용한 컴퓨팅 시간 만큼만 비용을 지불, 코드가 실행되지 않을 때는 요금이 부과되지 않는다.
2. Lambda 특징
- 이벤트 기반 실행 ex) S3, DynamoDB, API Gateway
- 서버리스 아키텍처
- 다양한 프로그래밍 언어 지원 ex) Python, Node.js, Java, Go
- 자동 확장
- 간단한 배포 및 관리
- AWS 서비스 간 통합
3. Lambda 사용
Lambda를 사용해서 인스턴스를 1분마다 Start하게 구성을 한 후
CloudWatch에서 확인해보자.
3-1. 정책 생성
AllowStartEC2 정책을 생성한다.
IAM -> 정책(Policy) -> 정책 생성 -> JSON
EC2를 시작하는 권한과, CloudWatch에 Log를 작성할 수 있는 권한이 필요함
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*",
"Effect": "Allow"
},
{
"Action": [
"ec2:Start*"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
3-2. 역할 생성
StartEc2Role 역할을 생성한다.
위에서 생성한 정책(AllowStartEC2)과 Lambda 정책을 추가
- AWSLambdaVPCAccessExecytionRole
- AWSLambdaBasicExecutionRole
- AllowStartEC2
3-3. 람다 생성
런타임 -> Python 3.9
권한 -> 기본 실행 역할 변경 -> 기존 역할 사용 -> StartEc2Role
3-4. 람다 트리거 구성
트리거 추가 -> EventBridge (CloudWatch Events) -> 새 규칙 생성
예약 표현식 -> rate(1 mintue)
3-5. 코드 넣기
lambda 콘솔에서 코드탭 선택 후 아래 코드 삽입 후 Deploy
import boto3
region = 'ap-northeast-2'
instance = '[instance ID]'
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
ec2.start_instances(InstanceIds=instances)
print('Started yout instance: ' + str(instances))
3-6. 로그 확인
Cloudwatch 콘솔 -> 로그
실행 로그 확인
반응형
'💻 CSP > AWS' 카테고리의 다른 글
[AWS] S3 Gracier restore(복원) 상태 확인하기 (0) | 2023.09.17 |
---|---|
[AWS] S3 이벤트 알림이 추가/수정이 되지 않는 경우 (0) | 2023.08.25 |
[AWS] EKS(Elastic Kubenetes Service) (0) | 2023.08.12 |
[AWS] EFS(Elastic File System) (0) | 2023.08.04 |
[AWS] IAM(Identity and Access Management) (0) | 2023.07.31 |