집에 좀 가자 퇴근하고 싶은 개발자

AWS S3로 정적 웹 호스팅


AWS에서 도메인을 구입했으므로 들인 돈이 아까워서라도 github pages를 사용하던 블로그를 AWS로 옮겨야 한다. Jekyll을 이용하여 정적 웹 호스팅 중이었으므로 AWS에서 EC2 인스턴스를 이용하지 않고 저렴한 S3를 이용하기로 한다.


1. 버킷 생성

일단 AWS에 로그인해서 S3 콘솔에 들어간 후 시작하자.

초기 화면


버킷을 2개 만든다. 이전에 hankyul.io라는 도메인을 구입했으므로, 블로그 도메인은 blog.hankyul.io로 하고 www가 붙은 버전을 만들어서 리디렉션 하도록 할 예정이다. blog.hankyul.io와 www.blog.hankyul.io 라는 이름으로 버킷을 생성한다. 생성 방법은 두가지 모두 동일하다. 빠르게 다음, 다음을 눌러가며 두개 모두 생성한다.

다음다음


다음으로 버킷에 들어오는 GET 요청에 대하여 권한을 준다. 두 버킷 모두 아래의 내용을 붙여 넣어 권한을 부여한다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::blog.hankyul.io/*"
        }
    ]
}

권한


blog.hankyul.io 의 속성은 “이 버킷을 사용하여 웹 사이트를 호스팅합니다” 를 선택해주고, www.blog.hankyul.io 는 “요청 리디렉션” 선택 후 대상을 blog.hankyul.io 를 설정해준다. 필요에 따라서 blog.hankyul.io 속성에서 index 페이지와 404 페이지에 대해서 같이 설정해준다.

속성


속성


2. 정적 웹 사이트 업로드

호스팅에 사용할 버킷을 다 만들었으니, 이제 블로그만 올리면 외부에서 나의 블로그를 볼 수 있게 된다. ruby의 gem 중에서 s3_website 라는 것이 있어서 aws와 연동해서 바로 올리는 것이 있다고 하지만, 일단 수동으로 올리고 나중에 github과 aws codebuild 를 연동해서 진행할 예정이니 일단 수동으로 올린다.

올리기 위해서 블로그를 build 해야 한다. 블로그 프로젝트에서 jekyll build 명령어로 정적 웹 사이트를 만든다.

jekyll build –destination <destination>

빌드된 정적 웹 사이트를 blog.hankyul.io 버킷에 넣어준다. 콘솔에서 드래그 앤 드랍으로 쉽게 넣을 수 있다.

S3_upload


3. 도메인 연결

AWS Route53 콘솔에 들어가 Host Zones를 선택하고, 구매한 도메인 네임을 선택한다.

S3_upload

Create Record Set을 클릭하면 오른편에 화면이 활성화 된다. Name에 도메인의 prefix인 blog를 기입하고 Type은 ‘A - IPv4 address’를 선택한다. Alias를 선택하고 Target에 blog.hankyul.io 버킷을 선택한 후 Create를 누르면 완성된다. www.blog Name로 www.blog.hankyul.io 버킷도 연결해준다.

S3_upload

이제, blog.hankyul.io 또는 www.blog.hankyul.io에 접속하면 블로그를 확인 할 수 있다.

S3_upload




참고

  1. AWS S3 개발자 안내서 - Amazon S3 정적 웹 사이트 호스팅 : https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/WebsiteHosting.html
  2. jekyll 기본 사용법 : http://jekyllrb-ko.github.io/docs/usage