상세 컨텐츠

본문 제목

[aws lambda] 개념정리

AWS

by 정혜리 2021. 4. 6. 23:49

본문

~17p

 

Serverless (서버리스)

: 서버 없이 관리형 서비스만을 이용해 코드를 배포하고 사용할 수 있게 해주는 서비스

 

이를 구현하기 위해 AWS에서는 Lambda라는 서비스를 제공하고 있다

서버의 관리나 운영 없이 람다함수라는 코드만 업로드하고, 이벤트가 발생했을 때만 함수가 실행하면서

실행시간에만 과금한다

 

AWS Lambda 

각 함수는 컨테이너에서 실행

각 컨테이너는 운영체제의 커널이 격리된 환경을 구현하는 서버 가상화 방식

물리적 서버의 가상 컨테이너 내에서 코드가 실행되지만 그 인프라를 관리할 필요는 없다(=서버리스)

 

람다 함수 만들기

1. 함수 이름 지정

2. 프로그램 코드 작성

3. 실행 환경 구성 지정

    - memory (함수 실행에 필요한 최대 메모리 크기)

    - timeout (함수가 완료되지 않아도 종료시킬 제한 시간)

    - role (AWS IAM을 통해 함수가 접근 할 수 있는 AWS 자원 및 권한에 대한 역할)

* 함수 실행에 필요한 메모리 양을 선택하면 이에 비례하여 CPU 성능을 자동 할당한다

 

AWS Lambda 비용 계산

- 총 호출 수

- 밀리세컨드 단위의 실행 시간

   * 실행시간의 비용은 할당 메모리와 함께 선형으로 증가

     ex) 메모리 할당량을 두배로 늘리고 실행시간은 유지하면 비용은 두배가 된다

 

이벤트, 콘텍스트

AWS Lambda로 함수 호출 시 이벤트(event), 콘텍스트(context)를 입력해야 한다

- 이벤트 : 함수에 대한 입력 매개변수를 보내는 방법 (JSON 문법 사용)

- 콘텍스트 : 서비스에서 실행 환경과 이벤트 수신 및 처리 방법

 

RequestResponse 호출 = 동기적 호출

로직

-> RequsetResponse 호출

-> 람다 api 호출(이벤트와 콘텍스트 입력)

->  AWS Lambda 함수 호출

-> 결과 반환

 

예시) 

숫자 두개의 합을 구하는 간단한 동기 함수 (자바스크립트)

 

exports.handler = (event, context, callback) => {
	var result = event.value1 + event.value2;
    callback(null, result);
};

 

이벤트 호출 = 비동기적 호출

(함수가 호출 되어도 결과는 즉시 반환하지 않는다)

로직

-> 이벤트 함수 호출

-> 비동기적으로 AWS Lambda 함수 호출

-> 리소스 생성/업데이트/삭제 (이메일 전송/모바일 푸시 알림 등 다른 동작 처리 가능)

-> 결과 (옵션)

 

예시)

AWS Lambda 로깅 기능을 사용해 Node.js로 간단한 로깅 기능 구현

exports.handler = function(event, context) {
	console.log(event.message);
    context.done();
}

 

'AWS' 카테고리의 다른 글

[AWS] Cloud Practitioner 공부_2  (0) 2022.12.05
[AWS] Cloud Practitioner 공부_1  (0) 2022.11.15
[aws lambda] 개념정리 -2  (0) 2021.04.07

관련글 더보기