brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Jul 21. 2019

139.Lambda를 알아보자

목 차

<1> 서버 리스 특징

<2> 람다 (lambda) 란 

<3> 람다 이벤트

<4> 람다 구성

<5> 람다  실습

<6> 튜닝, 데시보드 

<7> 람다 보안


 


<1> 서버 리스 특징


장점

서버 요청, 패치, 서버 작업을 신경 쓰지 않아도 된다.

개발자가 인프라가 아닌  개발에만 집중할 수 있게 해 준다.

비용이 저렴하다.

만능은 아니다. 필요한 경우에만 사용한다.


단점

시간적 제약이 있다.

최대 5분이상 수행할수 없다. 따라서 대규모 연산을 수행할수 없다.




<2> 람다 (lambda) 란?


이벤트를 처리하는 함수이다.

서버를 가지지 않는다.

MS의 Azure Function가 같다.

GCP의 Cloud Function 과 같다.




<3> 람다 이벤트


APIGW

S3

SNS 

CloudWatch Event

CloudWatch log

Kinesis 

DynamoDB 

AWS Iot

CodeCommit

Cognito Sync 

 




<4>  람다 구성


이벤트 발생 = 이벤트 트리거 = 이벤트 발생 소스

HTTP , APIGW , S3 등이 이벤트를 발생시킨다.




<5>  실습


아래와 같은 순서로  원하는 것을 만들면 됩니다.



# 순서


1)  우선, 원하는 서비스의 구성을 간단히 그린다.

2) 구성에 따라 필요한 서비스를 만든다.

3) 정책을 만들고 필요한 role을 만든다.

4) 이벤트를 발생시킨다

5) 확인한다.



1. 람다 함수 만들기

2. role을 준다.

3. Test event를 만든다.

4. 기본적으로 제공되는  test  lambda 코드를 확인과 수정.

5. Test 이벤트를 발생시킨다

6. 결과를 확인한다.




1. 람다 함수 만들기






람다 함수는 3가지로 만들 수 있다.


1) 새로 작성

2) 블루프 린프로 작성 - AWS 제공하는 템플릿으로 작성

3) AWS 파트너와 개발사에서 제공하는 람다 함수



1) 여기서는 새로 작성해 만들어 보겠다.



function name :  lambda-start 

node.js 10.x

[ Create function ]




2.   화면 아래쪽에서  실행 역할을 가져 온다.


1) 기존에 만들어진 role을 선택해 사용한다.



또는


1) AWS정책 템플릿에서 새 역할 생성

[Create a new role   from AWS  policy templates]로 해서 role을 새로 만든다. 


Role name : role-text라고 이름을 만든다.


Policy  templates :   Basic Lambda@Edge permisions (for CloudFront trigger용)을 적용한다.

기본  Lambda@Edgwe권한 (Cloudfront 트리거 용)


AWSLambdaBasicExecutionRole



Lambda를 VPC안에 넣을 경우 Role




<SAVE> 





2. Test event를 만든다.


 lambda는 이벤트를 처리하는 함수이다. 

이벤트가 있어야 한다.

실제 이벤트가 나올 때까지 기다릴 수 없다.

Test 할 수 있는 환경을 제공 하고 있다.





오른쪽 위에  TEST 클릭한다.


text를  보여주는  이벤트를 만든다.

Event name : startlambda로 한다.

테스트 :   "text " : "start lambda!!!"로 한다.





3. 기본적으로 제공되는  test  lambda 코드를 확인과 수정.


디폴트 코드를  확인한다.

Test 클릭해 실행한다.







4. 결과는 succeeded


내용은 

200

Hello from Lambda!


이벤트로 입력한 text를 

콘솔에 출력하는 것으로 수정한다.





5. Test 이벤트를 발생시킨다.



6.  결과를  확인한다.


Test 이벤트의  text가   결과로 나오도록 소스를 수정했다.  

event.text  출력

결과가  Test 입력 내용인  start lambda!!! 가 나오는지 확인한다.

입력 이벤트 :  text = "start lambda!!"

출력 : text 내용을 콘솔에 출력

start lambda!!



결과 보기





<6>  설정변경



1.  Lambda 생성후 기본 설정 편집하여 메모리 조정 

빠르게 동작해야 하면 기본 128 보다 1024로 조정한다.

디폴트 128M이다.

최대 3008M까지 제공한다.

사용될 최대 메모리를 지정하는 것이다.

이에 따라 CPU가 결정된다.



2. 제한 시간 : 타임 아웃.

처리 시간이 걸리는건은 10초 정도로 조정한다. 

기본 3초이다.

1초~300초(5분까지 가능)



3. X-ray

추척

X-Ray permission을 줘야 한다.

AWSXrayFullAccess



4. VPC 사용가능

Private에 놓는다.



5. DLQ Dead Letter Queue

 Lambda로 보내지 못한 Letter 이다.

전송실패시 비동기 방식으로 큐의 데이터를 최소 2회 재시도 한다.

SNS와 SQS로 보낸다.

SNS, SQS 를 설정해야하는 이유이다.

SNS : from-xxxx-xxxx 로 만든다.

SNS  Permission도 있어야 한다.



6.   KMS 암호화 가능

AWK KMS (Key Management Service)를 사용해 암호화 환다.





7.  동시성 1000개


Concurrency




8. 대시보드





9. 버저닝 


1)  Action  >  Publish new version  

2) 마지막 버전만 수정 가능하다.

Code and handler editing is only available for the $LATEST version. Go to $LATEST.




<7>  Lambda 보안설정


VPC 안에 Lambda를 넣자

Lambda가 VPC안에 있으면 Security Group으로 제어가 가능하다. 

VPC > Private Subnet에  lambda 생성하자.

NATGW가 있어야  외부로 나갈수 있다.


2

VPC안에 람다를 설정하면, 보안그룹에서 80 443 에 대해  0.0.0.0/0 에서 하용하자.


3

VPC Flow-log를 통해 모니터링 가능하다.  

https://brunch.co.kr/@topasvga/662




<8> 코드 입력 3가지


테스트 코드 입력

Zip 파일

S3에서 가져오기



감사합니다.






브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari