AWS에 정적 사이트 올리기

가상 서버 호스팅 속에 살던 블로그를 AWS의 구름 위로 띄웠다. 인터넷 검색해도 많이 나오는 내용이지만 나중에 다시 찾아보기 쉽도록 과정을 간략히 정리했다.

1. S3 버킷 생성

  • 아마존의 S3는 Simple Storage Service의 줄임말로, 실제 데이터를 저장할 곳이다.
  • 버킷 이름: 사이트 도메인과 동일하게 한다.
    • HTTPS를 위해서는 버킷 이름을 도메인과 다르게 해야 한다는 을 봤는데, 이번에 해보니 똑같아도 된다.
  • 권한 설정: 방금 만든 버킷을 아무나 읽을 수 있도록 한다. [권한] - [버킷 정책]에 아래 내용을 추가한다.
    {
      "Version": "2012-10-17",
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": "*",
              "Action": "s3:GetObject",
              "Resource": "arn:aws:s3:::[BUCKET_NAME]/*"
          }
      ]
    }
    
  • 사이트 호스팅: [속성] - [정적 웹 사이트 호스팅] 메뉴에서 [이 버킷을 사용하여 웹 사이트를 호스팅합니다]를 선택하고, [인덱스 문서]에 index.html 입력한다.
  • 엔드포인트를 기억해둔다. 이제부터는 누구나 이 주소로 사이트에 접속할 수 있다.

2. HTTPS를 위한 인증서 발급

  • DNS를 AWS의 Route 53을 쓰고 있다면 간단하게 발급된다.
  • 3번 과정 중간에 만들 수 있다.

3. CloudFront 설정

  • 클라우드프론트(CloudFront)는 CDN 서비스로, 사용자가 전세계 어디에 있든 빠르게 접속할 수 있게 도와준다. 사실 그런 이유보다는 HTTPS를 설정하기 위해 사용했다.
  • SSL Certificate를 Custom SSL Certificate로 선택하고, 위에서 발급한 인증서를 선택한다. 없으면 Request or Import a Certificate with ACM을 클릭해서 발급하면 된다.
  • Origin Domain Name에 1번 과정에서 만든 엔드포인트를 입력한다.
  • (Default Root Object를 index.html로 설정한다. 그런데 안 해도 되는 것 같다.)
  • [Behaviors] - [Viewer Protocol Policy]에서 원하는 방식을 선택한다. e.g. “Redirect HTTP to HTTPS”

4. Route 53 네임서버 설정

  • Route 53은 아마존에서 제공하는 DNS 서비스이다.
  • [레코드 세트 생성] 클릭, 유형을 “A - IPv4 주소” 선택, 별칭(Alias)을 “예” 선택한다.
  • 별칭 대상을 선택하면 후보가 드롭다운 메뉴로 뜨는데, CloudFront에서 선택해야 한다. S3가 아니라.

참고자료

blog built using the cayman-theme by Jason Long. LICENSE