Skip to main content

17C. Route 53와 S3 연동하기

About 2 minAWScrashcoursepyrasisawsamazon-web-services

17C. Route 53와 S3 연동하기 관련

목차

아마존 웹 서비스를 다루는 기술

17장 - 3. Route 53와 S3 연동하기

아마존 웹 서비스를 다루는 기술

S3은 정적 웹사이트 호스팅 기능이 있습니다. 정적 웹사이트 호스팅 기능을 사용하는 S3 버킷을 Route 53을 통해 도메인과 연결할 수 있습니다.

Route 53와 연동하기 위해서는 S3 버킷을 두 개를 생성해야 합니다.

S3 메인 페이지로 이동하고, 위쪽 <FontIcon icon="iconfont icon-selecgt"/> 버튼을 클릭합니다.
S3 메인 페이지로 이동하고, 위쪽 [Create Bucket] 버튼을 클릭합니다.

Route 53와 연동할 첫 번째 S3 버킷을 생성합니다.

  • Bucket Name: Route 53와 연동할 때에는 버킷 이름을 도메인 이름으로 설정해야 합니다여기서 www 서브도메인을 제외한 루트도메인을 입력합니다. 저는 gaas.io를 사용하겠습니다. 각자 구입한 도메인 이름을 입력합니다.
  • Region: 리전을 설정합니다. 우리나라에서 가장 가까운 Tokyo 리전을 선택합니다.
설정이 완료되었으면 <FontIcon icon="iconfont icon-select"/> 버튼을 클릭합니다.
설정이 완료되었으면 [Create] 버튼을 클릭합니다.
S3 버킷 목록에서 방금 생성한 S3 버킷을 선택하고 위쪽의 <FontIcon icon="iconfont icon-select"/> 버튼을 클릭합니다. 그리고 Permissions 탭을 클릭한 뒤 <FontIcon icon="iconfont icon-select"/> 버튼을 클릭합니다.
S3 버킷 목록에서 방금 생성한 S3 버킷을 선택하고 위쪽의 [Properties] 버튼을 클릭합니다. 그리고 Permissions 탭을 클릭한 뒤 [Add bucket policy] 버튼을 클릭합니다.

버킷 정책 편집기 화면이 나옵니다. 이곳에 아래 JSON 텍스트를 입력합니다. 인터넷에 버킷의 모든 파일을 공개하는 정책은 AWS Policy Generator에서 생성할 수 있습니다. AWS Policy Generator에 관련된 것은 '11.3.2 S3 버킷 권한 관리하기'를 참조하기 바랍니다.

{
  "Version": "2008-10-17",
  "Id": "Policy1397993518062",
  "Statement": [
    {
      "Sid": "Stmt1397993241249",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::gaas.io/*"
    }
  ]
}

Warning

버킷 정책의 내용 중에서 Resources의 arn:aws:s3:::gaas.io/*에서 gaas.io 부분은 여러분들이 생성한 버킷 이름(도메인 이름)으로 바꿔주어야 합니다. 책에 있는 그대로 입력하면 안됩니다.

버킷 정책 JSON 텍스트 입력이 끝났으면 <FontIcon icon="iconfont icon-select"/> 버튼을 클릭합니다.
버킷 정책 JSON 텍스트 입력이 끝났으면 [Save] 버튼을 클릭합니다.
같은 S3 버킷에서 Static Website Hosting 탭을 클릭한 뒤 <FontIcon icon="iconfont icon-select"/>을 선택합니다. 그리고 Index Document 부분에 을 입력하고 <FontIcon icon="iconfont icon-select"/> 버튼을 클릭합니다.
같은 S3 버킷에서 Static Website Hosting 탭을 클릭한 뒤 [Enable website hosting]을 선택합니다. 그리고 Index Document 부분에 index.html을 입력하고 [Save] 버튼을 클릭합니다.

이제 간단한 웹 페이지를 작성합니다. 메모장이나 기타 텍스트 편집기를 열고 아래와 같이 작성한 뒤 index.html로 저장합니다.

index.html
<html>
<head>
  <title>Example S3</title>
</head>
<body>
  <p>Hello S3 - Route 53</p>
</body>
</html>

index.html을 방금 생성한 S3 버킷에 올립니다. 파일을 올리는 방법은 '11.2 S3 버킷에 파일 올리기/받기'를 참조하기 바랍니다. 이후 데이터를 올릴 때에는 이 S3 버킷에만 올립니다.

S3 버킷 생성
S3 버킷 생성

Route 53와 연동할 두 번째 S3 버킷을 생성합니다.

  • Bucket Name: www 서브 도메인에 연결할 S3 버킷을 생성합니다. 저는 gaas.io를 사용하겠습니다. 각자 구입한 도메인 이름 앞에 www.를 붙여서 입력합니다.
  • Region: 리전을 설정합니다. 우리나라에서 가장 가까운 Tokyo 리전을 선택합니다.
설정이 완료되었으면 <FontIcon icon="iconfont icon-select"/> 버튼을 클릭합니다.
설정이 완료되었으면 [Create] 버튼을 클릭합니다.

S3 버킷 목록에서 www가 붙은 S3 버킷을 선택하고 위쪽의 [Properties] 버튼을 클릭합니다. 그리고 [Static Website Hosting] 탭을 클릭한 뒤 Redirect all request to에 여러분들이 구입한 도메인 이름을 입력합니다(www. 제외).

앞에서 도메인 이름으로 된 S3 버킷을 생성하고, www.가 붙은 S3 버킷을 잘 생성했다면 Redirect all request to에 도메인 이름이 이미 설정되어 있을 것입니다.

설정이 완료되었으면 <FontIcon icon="iconfont icon-select"/> 버튼을 클릭합니다.
설정이 완료되었으면 [Save] 버튼을 클릭합니다.

www.가 붙은 S3 버킷으로 접속하는 모든 트래픽은 루트 도메인으로 이동하도록 설정했습니다. 저는 www.gaas.io를 입력하면 gaas.io로 이동하게 설정했습니다. 여러분도 맞게 설정했다면 www.<도메인>으로 입력하면 <도메인>으로 이동하게 됩니다. 따라서 www.가 붙은 S3 버킷에는 데이터를 올리지 않아도 됩니다.

Route 53 메인 페이지로 이동합니다.

도메인을 선택하고 위쪽 <FontIcon icon="iconfont icon-select"/> 버튼을 클릭합니다.
도메인을 선택하고 위쪽 [Go to Record Sets] 버튼을 클릭합니다.

도메인의 레코드 목록이 표시됩니다.

위쪽 <FontIcon icon="iconfont icon-select"/> 버튼을 클릭합니다.
위쪽 [Create Record Set] 버튼을 클릭합니다.

루트 도메인 A 레코드를 생성합니다.

  • Name: 루트 도메인 A 레코드를 생성할 것이므로 아무것도 입력하지 않습니다.
  • Type: 레코드 종류를 설정합니다. 기본값 그대로 A - IPv4 address를 선택합니다.
  • Alias: Yes를 선택하여 IP 주소 대신 AWS 리소스를 설정합니다.
  • Alias Target: AWS 리소스의 주소를 설정합니다. Alias Target 입력 부분을 클릭하면 사용할 수 있는 AWS 리소스(S3, ELB, CloudFront)의 목록이 표시됩니다. S3 Website Endpoint의 <도메인> (s3-website-ap-northeast-1)을 선택합니다.
  • Alias Hosted Zone ID: Alias Target을 선택하면 자동으로 설정됩니다.
  • Routing Policy: 라우팅 정책을 설정합니다. 기본값 그대로 Simple을 선택합니다.
    • Simple: 아무런 부가 기능 없이 IP 주소만 알려줍니다.
    • Weighted: Weighted Round Robin 기능을 사용합니다.
    • Latency: Latency Based Routing 기능을 사용합니다.
    • Failover: DNS Failover 기능을 사용합니다.
  • Evaluate Target Health: 서버 동작 상태 체크(Health Check)를 사용할지 설정합니다. 기본값 그대로 사용합니다.

Zone Apex 지원

루트 도메인을 IP 주소가 아닌 S3 Endpoint와 같은 URL로 연결하는 것이 Zone Apex(최상위 도메인, TLD) 지원 기능입니다.

설정이 완료되었으면 <FontIcon icon="iconfont icon-select"/> 버튼을 클릭합니다.
설정이 완료되었으면 [Create] 버튼을 클릭합니다.

도메인의 레코드 목록에 A 레코드가 추가되었습니다.

다시 <FontIcon icon="iconfont icon-select"/> 버튼을 클릭하여  서브도메인에 대한 CNAME 레코드를 생성하겠습니다.
다시 [Create Record Set] 버튼을 클릭하여 www 서브도메인에 대한 CNAME 레코드를 생성하겠습니다.

www 서브 도메인에 대한 CNAME 레코드를 생성합니다.

  • Name: www 서브 도메인을 생성할 것이므로 www를 입력합니다.
  • Type: 레코드 종류를 설정합니다. CNAME - Canonical name을 선택합니다. CNAME은 IP 주소 대신 도메인을 연결하는 기능입니다.
  • Alias: A 레코드만 사용할 수 있는 기능이므로 기본값 그대로 No를 선택합니다.
  • TTL: Time To Live의 약자이며 A 레코드가 갱신되는 주기를 설정합니다. 초 단위로 설정합니다. 이후 CNAME 레코드의 도메인을 바꾸면 TTL에 설정한 시간이 지나야 적용됩니다.
  • Value: 연결할 도메인을 입력합니다. www.가 붙은 S3 버킷의 Endpoint를 입력합니다(http:// 제외, Endpoint는 www.가 붙은 S3 버킷의 Properties에서 Static Website Hosting 탭에 나와있습니다).
  • Routing Policy: 라우팅 정책을 설정합니다. 기본값 그대로 Simple을 선택합니다.
    • Simple: 아무런 부가 기능 없이 IP 주소만 알려줍니다.
    • Weighted: Weighted Round Robin 기능을 사용합니다.
    • Latency: Latency Based Routing 기능을 사용합니다.
    • Failover: DNS Failover 기능을 사용합니다.
설정이 완료되었으면 <FontIcon icon="iconfont icon-select"/> 버튼을 클릭합니다.
설정이 완료되었으면 [Create] 버튼을 클릭합니다.
도메인의 레코드 목록에 CNAME 레코드가 추가되었습니다.
도메인의 레코드 목록에 CNAME 레코드가 추가되었습니다.
웹 브라우저에서 A 레코드로 설정한 도메인()과 CNAME으로 생성한 www 서브 도메인()에 접속합니다.
웹 브라우저에서 A 레코드로 설정한 도메인(gaas.io)과 CNAME으로 생성한 www 서브 도메인(www.gaas.io)에 접속합니다.

Route 53을 사용하기 전에 루트 도메인과 www 서브 도메인의 A 레코드 TTL을 길게(예: 4시간) 설정하였다면 앞에서 설정한 내용이 바로 적용되지 않을 수 있습니다. TTL에 설정한 시간이 지난 후에 다시 확인해봅니다.


이찬희 (MarkiiimarK)
Never Stop Learning.