함수의 용도 결정 - Amazon CloudFront

함수의 용도 결정

함수 코드를 작성하기 전에 함수의 용도를 결정합니다. CloudFront 함수의 대부분의 함수는 다음 용도 중 하나를 가지고 있습니다.

함수의 용도에 관계없이 handler은(는) 모든 함수의 진입점입니다. CloudFront에 의해 함수에 전달되는 event(이)라고 하는 단일 인수가 필요합니다. event은(는) HTTP 요청(그리고 함수가 HTTP 응답을 수정하는 경우 응답)의 표현을 포함하는 JSON 객체입니다.

뷰어 요청 이벤트 유형의 HTTP 요청 수정

함수는 CloudFront가 최종 사용자(클라이언트)로부터 수신하는 HTTP 요청을 수정하고 수정된 요청을 CloudFront로 반환하여 처리를 계속할 수 있습니다. 예를 들어 함수 코드가 캐시 키를 정규화하거나 요청 헤더를 수정할 수 있습니다.

HTTP 요청을 수정하는 함수를 만들 때는 최종 사용자 요청 이벤트 유형을 선택해야 합니다. 즉, 요청된 객체가 CloudFront 캐시에 있는지 여부를 확인하기 위해 점검하기 전에 CloudFront가 최종 사용자의 요청을 수신할 때마다 함수가 실행됩니다.

다음 유사 코드는 HTTP 요청을 수정하는 함수의 구조를 보여줍니다.

function handler(event) { var request = event.request; // Modify the request object here. return request; }

이 함수는 수정된 request 객체를 CloudFront로 반환합니다. CloudFront는 CloudFront 캐시에서 캐시 적중률을 확인하고 필요한 경우 오리진에 요청을 전송하여 반환된 요청을 계속 처리합니다.

뷰어 요청 이벤트 유형에 HTTP 응답 생성

함수는 CloudFront에서 캐시된 응답이나 추가 처리를 확인하지 않고 엣지에서 HTTP 응답을 생성하여 최종 사용자(클라이언트)에게 직접 반환할 수 있습니다. 예를 들어 함수 코드는 요청을 새 URL로 리디렉션하거나 권한 부여를 확인하고 권한 없는 요청에 401 또는 403 응답을 반환할 수 있습니다.

HTTP 응답을 생성하는 함수를 생성할 때는 최종 사용자 요청 이벤트 유형을 선택해야 합니다. 즉, CloudFront가 추가 요청을 처리하기 전에 CloudFront가 최종 사용자의 요청을 수신할 때마다 함수가 실행됩니다.

다음 유사 코드는 HTTP 응답을 생성하는 함수의 구조를 보여줍니다.

function handler(event) { var request = event.request; var response = ...; // Create the response object here, // using the request properties if needed. return response; }

이 함수는 CloudFront에 response 객체를 반환하며, CloudFront는 CloudFront 캐시를 확인하거나 오리진에 요청을 보내지 않고 즉시 최종 사용자에게 반환합니다.

뷰어 응답 이벤트 유형의 HTTP 응답 수정

CloudFront가 HTTP 응답을 최종 사용자(클라이언트)에게 전송하기 전에 함수는 HTTP 응답을 수정할 수 있습니다. 응답이 CloudFront 캐시에서 왔는지 오리진에서 왔는지는 관계없습니다. 예를 들어 함수 코드에서 응답 헤더, 상태 코드 및 본문 콘텐츠를 추가하거나 수정할 수 있습니다.

HTTP 응답을 수정하는 함수를 생성할 때는 최종 사용자 응답 이벤트 유형을 선택해야 합니다. 즉, 응답이 CloudFront 캐시에서 왔는지 오리진에서 왔는지 관계없이 CloudFront가 최종 사용자에게 응답을 반환하기 전에 함수가 실행됩니다.

다음 유사 코드는 HTTP 응답을 수정하는 함수의 구조를 보여줍니다.

function handler(event) { var request = event.request; var response = event.response; // Modify the response object here, // using the request properties if needed. return response; }

이 함수는 수정된 response 객체를 CloudFront로 반환하며 CloudFront는 즉시 최종 사용자에게 반환합니다.

CloudFront Functions 작업에 대한 자세한 내용은 다음 주제를 참조하세요.