AWS CloudFront에서 default root object 모든 Path 적용 이슈 우회 방법



- 작업 개요

Cloud Front의 경우 Default Root Object 설정이 최상위 Directory 에서 밖에 적용이 되지 않는다.

S3에서 웹사이트 호스팅(Static website hosting)을 할때 S3에서 [Index document] 를 index.html로 설정한다면 

아래 표와 같기 Redirect를 해준다.

접속 URL 

Redirect URL 

 www.example.com/

 www.example.com/index.html

 www.example.com/test/ 

 www.example.com/test/index.html


그러나 Cloud Front 에서는 아무리  Default Root Object를 설정해도 최상위 Path를 제외하고는 오류가 발생한다.

접속 URL 

Redirect URL 

 www.example.com/

 www.example.com/index.html

 www.example.com/test/ 

ERROR(403)


따라서 Cloud Front를 적용 할 떄 최상위 path를 제외하고는 url을 전체 다 입력 해줘야한다.

해당 이슈에대한 우회 방법으로 Path와 같은 파일 명으로 html 파일을 생성고,

그 파일 S3에 업로드 할때 Header에  Content-Type을 text/html로 설정하면 해당 파일을 html로인식해서 

www.example.co.kr/test/ 로 입력해도 CloudFont 서비스가 가능해진다.



- 작업 절차

웹 서비스를 할 S3에 html 파일을 업로드하고, html 파일 명을 확장자를 제외한 Path 명으로 변경한다.

그런 다음 html 파일의 Meta data에서 Content-Type을 text/html로 변경한다. 

그리고 Cloud Front의 캐시를 초기화 시킨다.



1. S3에서 파일을 선택한다음 [Properties]-[Metadata]에서 

[Content-Type]을 [text/html]로 변경해준다.


2. 그런 다음 파일 명에서 확장자를 지운다.

3. CloudFont 에서 Invalidations 탭에 아래와 같이 edge location에 cache를 초기화 시킨다.

(이미 edge Location에 올라가있는 파일은 Metadata 값이 TTL 시간이 지나더라도 초기화 되지 않으므로 꼭 이 작업을 해주어야한다.)



해당 작업을 완료하면 CloudFont와 S3를 사용해 https 서비스를 사용하면서 모든 Root에 index 파일을 설정한것 처럼

millionairedeveloper.example.co.kr/test/

test 가 html이기 때문에 서비스가 가능해진다.




그럼 오늘도 행복한 하루 되세요.

'AWS > S3' 카테고리의 다른 글

AWS S3를 EC2 인스턴스에 s3fs를 이용한 mount 예제  (2) 2019.01.28

+ Recent posts