[AWS Lambda] 21. Lambda

2020. 4. 14. 14:53AWS

반응형

ㅇ Lambda?

    > 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 서버리스 컴퓨팅 서비스

 

ㅇ Lambda의 특징

    1. 필요시에만 코드를 실행하고, 하루에 수천 개의 요청까지 자동 확장 가능

    2. 사용한 컴퓨팅 시간에 대해서만 요금을 지불

    3. 모든 애플리케이션이나 백엔드 서비스에 대한 코드를 별도 관리 없이 실행 가능

    4. 여러 AWS 서비스에서 코드를 자동으로 트리거하도록 설정

    5. 기본적으로 VPC 내에서 코드를 실행

 

ㅇ Inastance 준비

    > 인스턴스를 삭제하는 Lambda 함수를 수행할 것이기 때문에 현재 실행중인 인스턴스가 존재해야함

    > Lambda 함수를 제작할 때 코드에 인스턴스 ID가 필요

 

ㅇ Role 생성

    > Lambda 함수가 인스턴스에 접근할 수 있도록 권한을 주기 위해 Role 필요

    > [IAM 서비스] - [역할] - [역할 만들기] 선택

 

    > Lambda 선택

 

    > EC2에 대한 모든 권한을 가지고 있는 EC2 Full Access 선택

 

    > 역할 이름 기입

 

ㅇ Lambda 함수 생성

    > [Lambda 서비스] - [함수] - [함수 생성] 선택

 

    > AWS에서 제공하는 함수가 아닌 직접 제작하는 함수를 사용할 것이므로 "새로 작성"을 선택하고, 함수의 이름과 언어를 선택

 

 

    > 권한에는 앞서 생성한 Role을 부여

 

    > "함수 코드" 부분에 아래의 코드를 기입

        * 인스턴스 ID는 원하는 시간대에 지워지길 바라는 인스턴스의 ID를 기입

import boto3

# Enter the region your instances are in. Include only the region without specifying Availability Zone; e.g., 'us-east-1'

region = 'ap-northeast-2'

# Enter your instances here: ex. ['X-XXXXXXXX', 'X-XXXXXXXX']

instances = ['(Instance ID)']





def lambda_handler(event, context):

    ec2 = boto3.client('ec2', region_name=region)

    ec2.stop_instances(InstanceIds=instances)

 

ㅇ CloudWatch 규칙 생성

    > [CloudWatch 서비스] - [규칙] - [규칙 생성] 선택

 

    > Cron 표현식을 선택한 후 원하는 시간 설정 및 수행할 Lambda 함수 선택

        * 정지할 시간은 UTC 시간(국제 표준 시간)으로 지정해야함

         UTC 시간 = 한국 시간 - 9시간

            ex) 한국 오후 4시 = UTC 시간 약 오전 7시

 

        * Cron 표현식

> 유닉스 계열의 잡스케줄러 시스템으로 (분 시간 일 월 년)으로 구성됨

ex) 0 5 ? * * *

* : 모든 값

? : 특정 값이 없음

- : 범위 (ex. MON - WED: 월요일부터 수요일까지)

/ : 시작시간 (ex. 0/5: 0분부터 매 5분)

L : 마지막 요일

W : 가장 가까운 요일

 

    > 이름 및 설명 입력

 

    > 이후 정상적으로 test 규칙이 생성됨을 확인 가능

 

ㅇ 결과확인

    > 이후 오후 2시에 인스턴스가 자동으로 삭제됨을 확인 가능

반응형