...
S3를 이용한 정적 웹 사이트 호스팅 방법
S3는 정적 콘텐츠를 제공하는 웹 호스팅 기능도 제공한다.
뭐 새로운 기능인가? 싶지만 조금만 생각해보면 당연한 기능이다.
예를들어, 스토리지에 html파일을 올리고, 브라우저에서 버킷url로 파일에 접근하면 html이 띄워질텐데, 결국 그게 홈페이지고 호스팅이다.
다만 데이터베이스와 연계하는 즉, 동적 호스팅은 불가능하다. (ajax로 lambda를 호출해서 하는 식으로 가능은 하다 → 서버리스 구성의 기초)
따라서 정적 콘텐츠 배포는 일반적인 S3 사용과 마찬가지로 S3 버킷에 저장하기만 하면 된다.
물론 EC2에 html파일을 넣어 서버를 실행하면 똑같이 웹 사이트를 구현할 수 있다.
하지만 동적인 데이터베이스 엑세스가 없는 정적인 웹 html일 경우, S3에 넣어 호스팅하는것이 훨씬 저렴하게 먹힌다.
또한 수천, 수만명 사람들에게 한꺼번에 서비스 되어도 상관 없을 정도로 견고하기 때문에 따로 오토스케일링이나 로드밸런서 작업이 필요없다.
예를들어, 이벤트 페이지나 사전등록 페이지 처럼 사람들이 한꺼번에 몰렸다가 빠지는 페이지를 웹서버로 호스팅 하면 그것에 대비하여 미리 서버를 사두거나 오토스케일링으로 EC2를 늘려야 하지만 S3로 호스팅 했을 경우에는 필요없다.
추가로 S3의 정적 웹 사이트에는 S3의 자체적인 도메인이 할당되는데, Route53 등의 도메인 이름 서비스(DNS)를 사용해서 다른 도메인을 부여할 수 있다.
다만, 호스팅하는 버킷 이름과 도메인 이름을 맞춰줘야 한다.
S3 정적 호스팅 설정
본 강의는 아래의 S3 버킷 생성하기 포스팅에서, 버킷을 생성하고 정책 설정 까지 모두 마친 독자들을 위한 강좌다.
만일 버킷을 생성하는 법을 잘 모른다면 먼저 정독하고 돌아오기를 권한다.
S3 버킷 생성하기 ↓
지난 시간에 S3 버킷을 생성했지만, 버킷을 정적 웹 사이트 호스팅용으로 만들려면 추가적인 설정이 필요하다.
정적 웹사이트 설정 하기에 앞서, 우선 웹 사이트 index.html 파일을 버킷에 넣자.
그리고 버킷의 속성 탭에서 하단으로 내려가면 정적 웹 사이트 호스팅을 설정할 수 있는 패널을 확인할 수 있다.
편집 버튼을 누른다.
설정을 완료하면 버킷 엔드포인트 url을 제공하는데, 브라우저에 url을 쳐보면, 앞서 올린 index.html이 호스팅 되는걸 확인 할 수 있다.
S3 정적 웹 사이트에 도메인(Route 53) 연동
S3 정적 웹사이트에 도메인을 적용하려면 AWS의 Route 53 서비스를 이용하면 된다.
Amazon Route 53는 높은 가용성과 확장성이 뛰어난 클라우드 Domain Name System (DNS) 웹 서비스이다.
무료 도메인을 구입해서 Route 53에 등록하는 방법에 대해서는 다음 포스팅에서 상세히 소개하니 도메인이 준비되지 않은 독자들을 읽어보길 권한다.
도메인을 Route 53에 등록하였으면, 호스팅 영역에 들어가서 도메인 이름을 클릭한다.
Route53에서 호스팅 영역을 생성하고, 레코드 구성 메뉴에서 레코드 정의 시에, 값/트래픽 라우팅 대상에서 "S3 웹 사이트 엔드포인트에 대한 별칭"을 선택하고 리젼을 선택하면 S3 버킷 선택이 가능한데, 이때 사용중인 S3 버킷이 존재함에도 불구하고, S3 리소스를 찾을 수 없습니다 와 같은 메시지가 뜨는 경우가 있다.
이때 놓친 점은 바로 호스팅 영역으로 생성해준 도메인 네임과 S3 버킷 이름이 일치해야 한다는 부분이다.
위에서 생성한 버킷명은 tistory-test-bucket-01 이고 도메인 명은 route53-test1332.tk 이니 불일치 되어 S3 버킷이 선택이 안되는 것이다.
S3 정적 호스팅용 버킷 생성
버킷을 하나 생성하자.
지금까지 위에서 무리없이 따라왔으면 복습하는셈 치고 빠르게 척척 만들것이다.
버킷이름을 정할때, 미리 서브 도메인(www, blog ..등)을 정해줄수도 있다.
이 강좌에선 www.도메인명 으로 S3 정적 웹에 접속할 예정이다.
버킷을 생성하고 정적 웹 호스팅을 활성화하고, 정책도 설정하여 버킷을 퍼블릭으로 만들어준다.
준비가 되었으면 다시 route53으로 돌아와서 레코드 설정을 다음과 같이 해준다.
이제 www.route53-test1332.tk 에 접속하면 S3 정적 웹 페이지가 잘 나오는 걸 확인 할 수 있다.
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.