AWS Lambda 는 AWS 플랫폼에서 함수를 실행하여 데이터를 간편하게 처리할 수 있게 해주는 서비스이다.
Lambda 를 사용한다면 시스템 자원을 프로비저닝할 필요 없이 Serveless로 코드를 실행시킬 수 있다.
AWS Lambda 를 통해 필요할 때만 코드를 실행시킬 수 있다. 코드가 실행될 때에만 비용이 부과됨으로 인해 코드 실행되지 않는 상황에서의 비용을 감소시킬 수 있다.
만약 동시다발적으로 여러 이벤트가 발생할 경우, 람다는 함수를 복사하여 병행적으로 실행시킨다.
람다 함수의 크기는 workload의 사이즈와 일치한다.
FaaS : Function as a Service
Lambda는 서버리스 FaaS 에 해당하는 타입이다.
보통 Lambda 는 함수를 호출하기 위해 다른 AWS 서비스와 통합되어 사용된다.
람다와 통합되는 서비스는 함수(JSON 형식)에 Data 를 Event로 전송시킨다.
람다는 전달해야 하는 이벤트를 객체로 변환시킨 후 함수로 전달한다.
람다와 함께 사용되는 아마존의 서비스는 아래와 같다.
- A
- Alexa
- API Gateway
- C
- CloudTrail
- CloudWatch
- CloudFormation
- CloudFront
- CodeCommit
- CodePipeline
- Cognito
- D
- DynamoDB
- E
- EC2
- ElastiCache
- Elastic Load Balancing
- EFS
- I
- IoT
- K
- Kinesis
- L
- Lex
- R
- RDS
- S
- S3
- SES
- SNS
- SQS
- Step Functions
- X
- X-Ray
위의 서비스들을 네 가지 타입으로 grouping 할 수 있다.
-
이벤트를 읽는 서비스
Lambda 함수를 동기적으로 호출하는 서비스- Amazon Kinesis
- Amazon DynamoDB
- Amazon Simple Queue Service
-
동기 호출
Lambda 함수를 동기적으로 호출하는 서비스- Elastic Load Balancing
- Amazon Cognito
- Amazon Lex
- Amazon Alexa
- Amazon API Gateway
- Amazon CloudFront
- Amazon Kinesis Data Firehose
- AWS Step Functions
- Amazon Simple Storage Service 배치
-
비동기 호출
Lambda 함수를 비동기적으로 호출하는 서비스- Amazon Simple Storage Service
- Amazon Simple Notification Service
- Amazon Simple Email Service
- AWS CloudFormation
- Amazon CloudWatch Logs
- Amazon CloudWatch Events
- AWS CodeCommit
- AWS Config
- AWS IoT
- AWS IoT Events
- AWS CodePipeline
-
통합 서비스
다른 방식으로 Lambda와 통합되는 서비스- Amazon Elastic File System
- AWS X-Ray
Invocation Type 을 통해 람다를 동기 또는 비동기로 설정할 수 있다.
Invocation Type 이 가질수 있는 값은 총 세가지다.
- RequestReponse
동기적으로 다루고 싶을 때 - Event
비동기적으로 다루고 싶을 때 - DryRun
Invocation 패턴은 총 두개로 나뉜다.
- Push Model
다른 AWS 서비스에서 특정 이벤트가 발생시 람다 함수를 호출 하는 모델.- 예) 'S3 버켓에 새 객체가 추가된 경우'를 이벤트 발생이라 볼 수 있다.
- Pull Model
Data Source에 새 Record가 도달 했을 때 람다 함수를 호출하는 모델.- 예) Amazon Kinesis에 생긴 New Record
- 여기서 Record 는 스트림에 저장되는 Data 단위를 말한다.
- 예) Amazon Kinesis에 생긴 New Record
- Amazon S3
- Invocation Type : Event
- Amazon Gateway
- Invocation Type : Event 또는 RequestResponse