베하! 안녕하세요~
BTC_수신자표시제한 입니다 😊
오늘은 AWS Lambda로 EC2를 중지, 시작시켜보는 실습을 진행하도록 하겠습니다~!
우선 AWS Lambda에 대해 간단하게 설명 드리겠습니다.
AWS Lambda은 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다.
Lambda는 고가용성 컴퓨팅 인프라에서 코드를 실행하고 서버와 운영 체제 유지 관리, 용량 프로비저닝 및 자동 조정, 코드 및 보안 패치 배포, 로깅 등 모든 컴퓨팅 리소스 관리를 수행합니다. Lambda를 사용하면 Lambda가 지원하는 언어 런타임 중 하나로 코드를 제공하기만 하면 됩니다.
1. 정책과 역할 생성
먼저 정책을 생성해줍니다.
: AWS Console → 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": "*"
}
]
}
그 다음 역할을 생성한 후, 이전 단계에서 생성해두었던 정책을 연결시킵니다.
2. Lambda 함수 생성
※ 테스트를 진행할 EC2를 미리 생성해 두어야 합니다.
2-1. Stop 함수 생성
import boto3
region = 'ap-northeast-2' # 현재 인스턴스가 실행중인 region
instances = ['i-0e7dc26957b3276f4'] # Lambda 함수를 적용할 인스턴스 ID
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
ec2.stop_instances(InstanceIds=instances)
print('stopped your instances: ' + str(instances))
2-2.Start 함수 생성
import boto3
region = 'ap-northeast-2' # 현재 인스턴스가 실행중인 region
instances = ['i-0e7dc26957b3276f4'] # Lambda 함수를 적용할 인스턴스 ID
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
ec2.start_instances(InstanceIds=instances)
print('started your instances: ' + str(instances))
람다 함수 생성시, 역할 → 기존 역할 사용 → subeen-lambda-role을 선택해줍니다.
람다 함수가 생성된 것을 확인 할 수 있으며, 실행 시켰을 때 해당 EC2가 정상적으로 중지, 시작 됩니다.
이렇게 람다 함수 생성은 완료 되었지만, 항상 수동으로 함수를 실행시켜 주는 것은 굉장히 번거롭기 때문에,
AWS EventBridge를 활용하여 Lambda에 스케쥴을 걸어줄 수 있습니다.
3. EventBridge 생성
AWS Console → Event Bridge → Scheduler → 일정 → 일정생성
저는 일회성 테스트를 위해 ‘일회성 일정’을 선택하였지만,
필요에 따라 ‘반복 일정’을 선택하셔서 매일 같은 시간에 이벤트가 실행되도록 구성하셔도 됩니다.
AWS Lambda - Invoke를 선택한 후, 만들어뒀던 Lambda의 Stop, Start 함수들을 사용합니다.
- Stop
- Start
그 외 역할들은 기본으로 생성 되는 것 그대로 두었습니다.
일정을 생성하고 나면 이렇게 활성화 상태가 되어 있습니다.
4. 결과
- 14:49 정상적으로 EC2 Stop
- 14:04 정상적으로 EC2 Start
여기까지 AWS Lambda로 EC2를 중지, 시작시켜보는 실습을 진행해보았습니다~
도움이 되셨으면 좋겠습니다.😊
다음에 또 만나요 👋
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
AWS Redshift (0) | 2023.09.29 |
---|---|
[AWS] Lambda@Edge란? (0) | 2023.09.27 |
Transit Gateway를 활용한 멀티 리전 VPC 연결 (0) | 2023.09.26 |
AWS VPN의 서비스의 이해 (0) | 2023.09.26 |
[AWS] Transit Gateway 구성 옵션 (0) | 2023.09.22 |
댓글