Lambda@Edge 함수를 트리거할 수 있는 CloudFront 이벤트
특정한 CloudFront 이벤트가 발생하면 Lambda 함수가 실행되도록 하는 트리거(연결)를 Amazon CloudFront 배포의 각 캐시 동작에 대해 4개까지 추가할 수 있습니다. CloudFront 트리거는 아래 그림의 네 가지 CloudFront 이벤트 중 하나를 토대로 합니다.
Lambda@Edge 함수를 트리거하는 데 사용할 수 있는 CloudFront 이벤트는 다음과 같습니다.
- 뷰어 요청
-
이 함수는 CloudFront가 최종 사용자로부터 요청을 수신하면 실행되며, 요청된 객체가 CloudFront 캐시에 있는지를 확인합니다.
다음과 같은 경우에는 함수가 실행되지 않습니다.
-
사용자 지정 오류 페이지를 가져오는 경우.
-
CloudFront가 자동으로 HTTP 요청을 HTTPS로 리디렉션하는 경우(뷰어 프로토콜 정책 값이 Redirect HTTP to HTTPS일 경우).
-
- 원본 요청
-
이 함수는 CloudFront가 오리진으로 요청을 전달할 경우에만 실행됩니다. 요청된 객체가 CloudFront 캐시에 저장되어 있으면 함수는 실행되지 않습니다.
- 원본 응답
-
이 함수는 CloudFront가 오리진으로부터 응답을 수신한 후 실행되어 응답의 객체를 캐싱합니다. 오리진에서 오류가 반환되는 경우에도 함수는 실행됩니다.
다음과 같은 경우에는 함수가 실행되지 않습니다.
-
요청된 파일이 CloudFront 캐시에 있고 만료되지 않은 경우.
-
오리진 요청 이벤트가 트리거한 함수로부터 응답이 생성되는 경우.
-
- 뷰어 응답
-
요청된 파일을 최종 사용자에게 반환하기 전에 함수가 실행됩니다. 이때 함수는 해당 파일이 이미 CloudFront 캐시에 있는지 여부와 상관없이 실행됩니다.
다음과 같은 경우에는 함수가 실행되지 않습니다.
-
오리진이 400 이상의 HTTP 상태 코드 반환하는 경우
-
사용자 지정 오류 페이지가 반환될 때.
-
최종 사용자 요청 이벤트가 트리거한 함수로부터 응답이 생성되는 경우.
-
CloudFront가 자동으로 HTTP 요청을 HTTPS로 리디렉션하는 경우(뷰어 프로토콜 정책 값이 Redirect HTTP to HTTPS일 경우).
-
한 캐시 동작에 여러 트리거를 추가하는 경우, 이를 사용하여 동일한 함수를 실행하거나 트리거마다 다른 함수를 실행할 수 있습니다. 또한 복수의 배포에 동일한 함수를 연결할 수도 있습니다.
참고
CloudFront 이벤트가 Lambda 함수의 실행을 트리거하면 CloudFront가 계속되기 전에 함수가 완료되어야 합니다.
예를 들어, CloudFront 최종 사용자 요청 이벤트에 따라 Lambda 함수가 트리거되면 CloudFront는 Lambda 함수 실행이 완료될 때까지 최종 사용자에게 응답을 반환하거나 오리진에 요청을 전달하지 않습니다.
다시 말해, Lambda 함수를 트리거하는 각 요청은 요청 지연 시간을 증가시키므로 최대한 빨리 함수가 실행되도록 해야 합니다.