S3 Ridrection 기능을 사용하여 주소 리다이렉션 처리

S3는 AWS의 매우 강력하고 안정적인 파일 저장 서비스이다. S3의 여러 멋진 기능중의 하나는 정적 호스팅 기능인데, 동적인 컨텐츠가 아닌 정적인 컨텐츠를 호스팅 해주는 기능으로 PHP,JSP등의 동적인 웹사이트가 아닌 HTML/Javascript 기반의 웹페이지 처럼 정적인 웹사이트를 엄청나게 저렴한 비용으로 호스팅해준다.

이전 웹사이트들은 정적인 웹사이트였기 때문에 S3에서 호스팅하였고, 그에 따라 각 도메인에 대응하는 버킷이 이미 호스팅 설정이 된 상태로 존재하였다.

(참고로 Route53에서 S3호스팅 주소로 연결하기 위해서는 도메인과 버킷명이 같아야한다. 즉 example.net을 S3에서 호스팅하려면 버킷명도 example.net이어야 한다.)

그럼 S3의 정적 호스팅기능을 통해 도메인 리다이렉션을 처리해보자.

S3 버킷을 선택후 속성 탭으로 가면 정적 웹 사이트 호스팅이 있다.

S3버킷에서 리다이렉션을 처리는 두 가지 방법이 있다.

  • 웹 사이트를 호스팅하고 리다이렉션 규칙을 적용하기
  • 요청 리다이렉션 사용하기

리다이렉션 규칙 사용

웹사이트를 호스팅하고 리다이렉션 규칙을 적용하는것은 일반적으로 웹 사이트는 호스팅하고 있으나 특정 주소나 상황에 한해서 리다이렉션 규칙을 적용하기를 원할 때 사용한다.

"이 버킷을 사용하여 웹 사이트를 호스팅합니다." 를 클릭하면 리다이렉션 규칙을 사용할 수 있다.

자세히 보기

Route53으로 새 도메인을 CloudFront로 연결하기

Route53를 Alias 레코드로 CloudFront로 연결하기


CloudFront를 Route53를 사용하여 도메인 연결을 하기 위해서는 먼저 두 가지를 알아야 한다.

  • CloudFront는 고정된 IP를 사용하지 않는다 :CloudFront를 포함한 AWS의 많은 서비스들(ELB,CloudFront,RDS 등)은 고정된 IP를 사용하지 않는데 인스턴스 사이즈가 수시로 바뀌면서 IP가 매번 바뀌거나 특정 DR(Disaster Recovery) 상황에선 IP주소가 다른 주소로 바뀌기 때문이다. 예외적으로 CloudFront의 경우 SNI 지원등의 문제로 고정 IP를 부여할 수는 있으나 한달에 $600을 받는다.
  • Apex Domain은 CNAME을 사용할 수 없다. : CNAME 레코드란 한 도메인을 다른 도메인으로 포워딩 해주는 레코드 타입인데, Apex Domain(순수 도메인, 즉 www.example.com, test.example.com처럼 맨 앞에 무엇인가가 붙은게 아닌 순수한 example.com)은 CNAME을 사용할 수 없다. (표준에 관련한 문제다. 자세한 사항은 나중에 기회가 되면 포스팅하도록 하겠다.)

APEX 도메인에 CNAME을 적용하려 하면 Route53에서도 에러를 뿜어준다.

해결 방법은 몇 가지가 있다.

  • WWW.회사명.ai사용: www.회사명.ai 같이 www를 뒤에 붙여 cloudfront를 붙인다.
  • AWS의 Alias 레코드를 사용

첫번째 방법은 그닥 우아한 방법이 아니다. 도메인에 군더더기가 붙은 듯한 느낌도 들고 원래 요청사항에도 어긋난다. 조금더 우아한 방법은 바로 Alias 레코드를 사용하는 것이다.

자세히 보기