AWS S3로 정적 웹 호스팅
02 Feb 2018AWS에서 도메인을 구입했으므로 들인 돈이 아까워서라도 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 버킷에 넣어준다. 콘솔에서 드래그 앤 드랍으로 쉽게 넣을 수 있다.
3. 도메인 연결
AWS Route53 콘솔에 들어가 Host Zones를 선택하고, 구매한 도메인 네임을 선택한다.
Create Record Set을 클릭하면 오른편에 화면이 활성화 된다. Name에 도메인의 prefix인 blog를 기입하고 Type은 ‘A - IPv4 address’를 선택한다. Alias를 선택하고 Target에 blog.hankyul.io 버킷을 선택한 후 Create를 누르면 완성된다. www.blog Name로 www.blog.hankyul.io 버킷도 연결해준다.
이제, blog.hankyul.io 또는 www.blog.hankyul.io에 접속하면 블로그를 확인 할 수 있다.
참고
- AWS S3 개발자 안내서 - Amazon S3 정적 웹 사이트 호스팅 : https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/WebsiteHosting.html
- jekyll 기본 사용법 : http://jekyllrb-ko.github.io/docs/usage