Cloud Front의 아쉬움
오랫동안 CDN 서비스를 지원하였던 경험으로 Amazon CloudFront는 CDN으로써 아쉬움이 여기 저기 보이는 솔루션이다.
특히 모든 필요한 기능들을 Lambda에 의존하는 특성이 가장 대표적인 아쉬움이었다.
하지만, CloudFront의 Functions를 활용한다면 프로그래밍을 모르는 사용자들도 Lambda와 같은 별도의 서비스를 몰라도 필요한 기능들을 충분히 사용할 수 있게 되었다.
과거에서 S3를 Origin으로 HSTS보안 헤더를 적용하는 사례로 Lambda를 사용하는 안내가 이미 되어 있었지만, Functions를 사용하면 별도의 Lambda 작성없이도 HSTS 보안 헤더를 설정할 수 있다.
다음은 Function을 작성하는 순서이다.
- CloudFront 콘솔 접속
- 왼쪽 메뉴창의 Functions 선택
- Create Function – Function Name 설정하기
- Build – Development에 function 설정하기
- Test – Event type, Stage, Sample test events 선택 – Input 값 설정하고 [Test]
- Publish
- Associate – Distribution 선택, Event Type 선택, Cache behavior 선택 – 추가하기
위와 같이 Function에서 이미 만들었던 CloudFront Distribute에 Associate할 수도 있으며, Function을 Build만하고, CloudFront Distribute에서 Assign할 수도 있다.
다음은 HSTS Header를 추가하는 function handler 예제(add_HSTS)이다.
function handler(event) {
var response = event.response;
var headers = response.headers;
// Set HTTP security headers
// Since JavaScript doesn’t allow for hyphens in variable names, we use the dict[“key”] notation
headers[‘strict-transport-security’] = { value: ‘max-age=31536000; includeSubDomains; preload’};
// Return the response to viewers
return response;
}
아래 이미지는 위 해당 Function을 CloudFront Behavior에 연동한 내역이다.