Search

Lambda@Edge와 CloudFront Function 차이점

Lambda@Edge와 CloudFront Function 차이점
특징
CloudFront Function
Lambda@Edge
지원 언어
Javascript
Node.js, Python
실행 속도
빠름
상대적으로 느림
용도
간단한 요청 및 응답 처리
복잡한 로직 처리 및 비동기 작업

Lambda@Edge

Lambda@Edge는 Lambda를 통해 CloudFront의 Edge Location(엣지 로케이션)에서 코드를 실행할 수 있도록 지원하는 서비스이다.
전 세계에 분산된 CloudFront Edge Server에서 Lambda 함수를 실행하여 더 낮은 대기 시간로 콘텐츠를 전달한다.
Lambda@Edge 특징
현재 Node.jsPython으로만 작성할 수 있다. 다른 언어(예: Java, Go, .NET 등)는 지원하지 않는다.
Lambda@Edge는us-east-1 region에서만 작성 가능하다. (다른 리전에서 작성할려하면 에러가 띈다)
최대 메모리 사이즈(max) : 128 MB, Timeout : 5초
Lambda@Edge가 실행되는 이벤트
CloudFront distribution에서 다음과 같은 CloudFront event(이벤트)가 발생할 경우, Lambda@Edge를 trigger(트리거)하여 실행시킬 수 있다.
1.
Viewer Request  ...사용자가 CloudFront에 요청을 보낼 때 실행
2.
Origin Request ...CloudFront가 Origin 서버로 요청을 전달하기 전에 실행
3.
Origin Response ...Origin 서버에서 응답을 받은 후 CloudFront가 응답을 사용자에게 전달하기 전에 실행
4.
Viewer Response  ...CloudFront가 사용자에게 응답을 보내기 전에 실행

CloudFront Function

CloudFront Function도 Lambda@Edge와 비슷하다
전 세계적으로 분산된 엣지 로케이션에서 코드를 실행시킬 수 있다.
CloudFront Function 특징
단순한 작업에 최적화되어 있다. 빠르고 짧은 실행 시간이 특징이다
현재 JavaScript 만 지원하고 있다.
CloudFront Function가 실행되는 이벤트
Lambda@Edge와 달리 다음과같은 이벤트에서만 작동한다.
Viewer Request
Viewer Response
CloudFront Function 사용 예시
Viewer Request(CloudFront가 클라이언트의 요청을 받을 때)에서 요청 헤더에 X-Custom-Header라는 값을 추가하기
// CloudFront Function for Viewer Request function handler(event) { var request = event.request; // 요청 헤더에 X-Custom-Header 추가 request.headers['x-custom-header'] = [{ key: 'X-Custom-Header', value: 'CustomHeaderValue' }]; // 요청 객체 반환 return request; }
JavaScript
복사