클라우드(AWS)

[AWS] Lambda@Edge와 CloudFront Function란? 차이점까지 쉽게 정리

찌르비 2024. 11. 23. 14:18
반응형

◇  공부 기록용으로 작성하였으니 틀린점, 피드백 주시면 감사하겠습니다 

 

 

TL;DR

특징 CloudFront Function Lambda@Edge
지원 언어 JavaScript Node.js, Python
실행 속도 빠름 (단기, 단순 작업에 최적화) 상대적으로 느림 (복잡한 작업에 적합)
용도 간단한 요청 및 응답 처리 복잡한 로직 처리 및 비동기 작업

 

 

Lambda@Edge = "Lambda" + "CloudFront"

Lambda@Edge

Lambda@Edge는 Lambda를 통해 CloudFront의 Edge Location(엣지 로케이션)에서 코드를 실행할 수 있도록 지원하는 서비스이다.

전 세계에 분산된 CloudFront Edge Server에서 Lambda 함수를 실행하여 더 낮은 대기 시간로 콘텐츠를 전달한다.

(사실 좀더 구체적으로는 Cloudfront regional edge cache라는 곳에서 실행된다고 한다)

AWS Edge Locations (엣지 로케이션)

 

Lambda@Edge 특징

  • 현재 Node.jsPython으로만 작성할 수 있다. 다른 언어(예: Java, Go, .NET 등)는 지원하지 않는다
  • Lambda@Edge는us-east-1 region에서만 작성 가능하다. (다른 리전에서 작성할려하면 에러가 띈다)
  • – 최대 메모리 사이즈(max):128 MB, Timeout : 5초
  • Lambda@Edge 만드는 법
    1. Lambda 함수 생성 > Lambda 코드 작성
    2. CloudFront와 연동: Lambda 함수에서 "Action" > "Deploy to Lambda@Edge" 선택

 

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가 사용자에게 응답을 보내기 전에 실행

https://aws.amazon.com/ko/blogs/korea/lambdaedge-design-best-practices/

자세한 설명 (AWS 공식 문서):
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-cloudfront-trigger-events.html

 

CloudFront events that can trigger a Lambda@Edge function - Amazon CloudFront

CloudFront events that can trigger a Lambda@Edge function For each cache behavior in a Amazon CloudFront distribution, you can add up to four triggers (associations) that cause a Lambda function to execute when specific CloudFront events occur. CloudFront

docs.aws.amazon.com


 

 

CloudFront Function

CloudFront Function도 Lambda@Edge와 비슷하다

전 세계적으로 분산된 엣지 로케이션에서 코드를 실행시킬 수 있다.

 

CloudFront Function 특징

  • 단순한 작업에 최적화되어 있다. 빠르고 짧은 실행 시간이 특징이다
  • 현재 JavaScript 만 지원하고 있다.

CloudFront Function가 실행되는 이벤트

Lambda@Edge와 달리 다음과같은 이벤트에서만 작동한다.

  • Viewer Request
  • Viewer Response

[CloudFront Function 만드는 법]

 

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;
}
728x90
반응형