cloudfront custom origin(S3) 사용

aws에서 cloudfront(CF)와 s3를 사용하여 cdn을 구성하는 방법은 구글링을 해보면 많이 나와 있다.
s3콘솔에서 버킷을 생성하고 CF콘솔에서 배포를 만들면서 생성한 s3버킷을 연결해주고 기다리면 끝이다.
아래 링크를 참고하면 어렵지 않게 구성이 가능하다.
s3 버킷 생성 및 구성하기
Amazon S3에서 Cloudfront 사용하기

위 링크에 소개된 내용은 CF와 s3연동의 경우 동일한 계정내에 s3와 CF를 이용한 웹 배포를 만드는 방법이다.
동일한 계정내에 CF와 s3 스토리지가 존재 하기 때문에 CF콘솔에서 “Origin Domain Name”을 클릭하면 연동할 수 있는 s3 버킷 리스트가 보이기 때문에 마우스로 선택해서 만들면 끝이다!

그럼 Origin으로 사용할 s3버킷이 CF를 만들 계정이 아닌 다른 계정에 위치할 경우 어떻게 해야 할까?
해답은 의외로 간단하다.

A계정에 CF를 만들고 B계정에 s3가 있다고 가정한다.

step#1. B계정에 s3콘솔에서 연동하려는 s3버킷을 “정적 웹 사이트 호스팅”으로 변경 후 호스팅 endpoint를 메모해 놓는다.

step#2. A계정에서 CF를 생성할때 “Origin Domain Name”에 위에서 메모해 놓은 endpoint 주소를 넣는다.
예) cftestbucket11.s3-website.ap-northeast-2.amazonaws.com 도메인 자체를 넣는다.

step#3. 이후 일반적인 CF설정과 동일한 방법으로 진행한다.

이렇게 셋팅을 하면 문제 없이 CF가 만들어질 것이다.

그러나 한가지 문제가 있다.

s3를 “정적 웹 사이트 호스팅”으로 설정해 놓았고 s3버킷 정책에 익명사용자(*)에게 GetObject 권한을 주었을 것이다.
한마디로 http://cftestbucket11.s3-website.ap-northeast-2.amazonaws.com/1.jpg 와 같은 s3 웹호스팅 endpoint url로도 접속이 가능하다는 뜻이기도 하다.
CF를 통해서만 서비스를 하고 싶은데 s3 주소를 알게 되면 s3쪽에서도 트레픽이 발생할 소지가 있고 이는 과금과도 연관이 된다.
또한 s3에 필요없는 접근을 통해 보안 문제와도 연결될 수 있다.

이를 막는 방법은 다음 글에서 다루도록 하겠다.

댓글 남기기