

# CloudFront Functions와 Lambda@Edge 간 차이점
<a name="edge-functions-choosing"></a>

CloudFront 함수와 Lambda@Edge 모두 CloudFront 이벤트에 대한 응답으로 코드를 실행할 수 있는 방법을 제공합니다.

CloudFront Functions는 다음과 같은 사용 사례의 단기 실행 경량 함수에 적합합니다.
+ **캐시 키 정규화** – HTTP 요청 속성(헤더, 쿼리 문자열, 쿠키 및 URL 경로)을 변환하여 캐시 적중률을 개선할 수 있도록 최적의 [캐시 키](understanding-the-cache-key.md)를 생성합니다.
+ **헤더 조작** – 요청 또는 응답에서 HTTP 헤더를 삽입, 수정 또는 삭제합니다. 예를 들어 모든 요청에 `True-Client-IP` 헤더를 추가할 수 있습니다.
+ **URL 리디렉션 또는 다시 쓰기** – 요청 정보에 따라 뷰어를 다른 페이지로 리디렉션하거나 한 경로에서 다른 경로로 모든 요청을 다시 씁니다.
+ **요청 권한 부여** – 권한 부여 헤더 또는 다른 요청 메타데이터를 검사하여 JSON 웹 토큰(JWT)과 같은 해시된 권한 부여 토큰을 검증합니다.

CloudFront 함수를 시작하려면 [CloudFront Functions를 사용하여 엣지에서 사용자 지정](cloudfront-functions.md) 단원을 참조하세요.

Lambda@Edge는 다음과 같은 사용 사례에 적합합니다.
+ 완료하는 데 몇 밀리초 이상이 걸리는 함수
+ 조정 가능한 CPU 또는 메모리가 필요한 함수
+ 서드 파티 라이브러리(다른 AWS 서비스와의 통합을 위한 AWS SDK 포함)에 의존하는 함수
+ 처리에 외부 서비스를 사용하기 위해 네트워크 액세스가 필요한 함수
+ 파일 시스템 액세스 또는 HTTP 요청 본문에 대한 액세스가 필요한 함수

Lambda@Edge를 시작하려면 [Lambda@Edge를 사용하여 엣지에서 사용자 지정](lambda-at-the-edge.md) 단원을 참조세요.

사용 사례에 맞는 옵션을 적절히 선택할 수 있도록 다음 표를 통해 CloudFront Functions와 Lambda@Edge 간의 차이점을 파악하세요. 오리진 수정 헬퍼 메서드에 적용되는 차이점에 대한 자세한 내용은 [CloudFront Functions과 Lambda@Edge 중에서 선택](helper-functions-origin-modification.md#origin-modification-considerations) 섹션을 참조하세요.


|  | CloudFront 함수 | Lambda@Edge | 
| --- | --- | --- | 
| 프로그래밍 언어 | JavaScript(ECMAScript 5.1 호환) | Node.js 및 Python | 
| 이벤트 소스 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/edge-functions-choosing.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/edge-functions-choosing.html)  | 
|  [Amazon CloudFront KeyValueStore](kvs-with-functions.md) 지원  |  예 CloudFront KeyValueStore는 [JavaScript 런타임 2.0](functions-javascript-runtime-20.md)만 지원합니다.  |  아니요  | 
| 규모 조정 | 초당 최대 수백만 개의 요청 | 리전별 초당 최대 10,000건의 요청 | 
| 함수 지속 시간 | 서브밀리초 |  최대 30초(최종 사용자 요청 및 최종 사용자 응답) 최대 30초(오리진 요청 및 오리진 응답)  | 
|  최대 함수 메모리 크기  | 2MB |  128MB(최종 사용자 요청 및 최종 사용자 응답) 10,240MB(10GB)(오리진 요청 및 오리진 응답) 자세한 내용은 [Lambda@Edge에 대한 할당량](cloudfront-limits.md#limits-lambda-at-edge) 섹션을 참조하세요.  | 
| 함수 코드 및 포함된 라이브러리의 최대 크기 | 10KB |  50MB(뷰어 요청 및 뷰어 응답) 50MB(오리진 요청 및 오리진 응답)  | 
| 네트워크 액세스 | 아니요 | 예 | 
| 파일 시스템 액세스 | 아니요 | 예 | 
| 요청 본문에 대한 액세스 | 아니요 | 예 | 
| 위치 정보 및 장치 데이터에 대한 액세스 | 예 |  No(최종 사용자 요청 및 최종 사용자 응답) Yes(오리진 요청 및 오리진 응답)  | 
| CloudFront 내에서 완전히 빌드 및 테스트 가능 | 예 | 아니요 | 
| 함수 로깅 및 지표 | 예 | 예 | 