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.js와 Python으로만 작성할 수 있다. 다른 언어(예: 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
복사


