아마존 웹 서비스를 다루는 기술 17장 - 3. Route 53와 S3 연동하기

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

AWS 리소스와 연동 가능한 DNS 서비스 Route 53

이재홍 http://www.pyrasis.com 2014.03.24 ~ 2014.06.30

Route 53와 S3 연동하기

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

Route 53와 연동하기 위해서는 S3 버킷을 두 개를 생성해야 합니다. S3 메인 페이지로 이동하고, 위쪽 Create Bucket 버튼을 클릭합니다.

그림 17-18 S3 버킷 생성

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

  • Bucket Name: Route 53와 연동할 때에는 버킷 이름을 도메인 이름으로 설정해야 합니다여기서 www 서브도메인을 제외한 루트도메인을 입력합니다. 저는 gaas.io를 사용하겠습니다. 각자 구입한 도메인 이름을 입력합니다.
  • Region: 리전을 설정합니다. 우리나라에서 가장 가까운 Tokyo 리전을 선택합니다.

설정이 완료되었으면 Create 버튼을 클릭합니다.

그림 17-19 Route 53과 연동할 S3 버킷 생성

S3 버킷 목록에서 방금 생성한 S3 버킷을 선택하고 위쪽의 Properties 버튼을 클릭합니다. 그리고 Permissions 탭을 클릭한 뒤 Add bucket policy 버튼을 클릭합니다.

그림 17-20 S3 버킷 권한 설정

버킷 정책 편집기 화면이 나옵니다. 이곳에 아래 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/*"
        }
    ]
}

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

버킷 정책 JSON 텍스트 입력이 끝났으면 Save 버튼을 클릭합니다.

그림 17-21 Bucket Policy Editor

같은 S3 버킷에서 Static Website Hosting 탭을 클릭한 뒤 Enable website hosting을 선택합니다. 그리고 Index Document 부분에 index.html을 입력하고 Save 버튼을 클릭합니다.

그림 17-22 S3 정적 웹사이트 호스팅 설정

이제 간단한 웹 페이지를 작성합니다. 메모장이나 기타 텍스트 편집기를 열고 아래와 같이 작성한 뒤 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 버킷에만 올립니다.

그림 17-23 S3 버킷 생성

Route 53와 연동할 두 번째 S3 버킷을 생성합니다(그림 17-24).

  • Bucket Name: www 서브 도메인에 연결할 S3 버킷을 생성합니다. 저는 gaas.io를 사용하겠습니다. 각자 구입한 도메인 이름 앞에 www.를 붙여서 입력합니다.
  • Region: 리전을 설정합니다. 우리나라에서 가장 가까운 Tokyo 리전을 선택합니다.

설정이 완료되었으면 Create 버튼을 클릭합니다.

그림 17-24 S3 버킷 생성

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

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

설정이 완료되었으면 Save 버튼을 클릭합니다.

그림 17-25 S3 정적 웹사이트 호스팅 설정

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

Route 53 메인 페이지로 이동합니다. 도메인을 선택하고 위쪽 Go to Record Sets 버튼을 클릭합니다.

그림 17-26 Route 53 레코드 목록으로 이동

도메인의 레코드 목록이 표시됩니다. 위쪽 Create Record Set 버튼을 클릭합니다.

그림 17-27 Route 53 레코드 목록

루트 도메인 A 레코드를 생성합니다(그림 17-28).

  • 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)를 사용할지 설정합니다. 기본값 그대로 사용합니다.

설정이 완료되었으면 Create 버튼을 클릭합니다.

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

그림 17-28 Route 53 A 레코드 생성

도메인의 레코드 목록에 A 레코드가 추가되었습니다. 다시 Create Record Set 버튼을 클릭하여 www 서브도메인에 대한 CNAME 레코드를 생성하겠습니다.

그림 17-29 Route 53 A 레코드 생성 완료

www 서브 도메인에 대한 CNAME 레코드를 생성합니다(그림 17-30).

  • 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 기능을 사용합니다.

설정이 완료되었으면 Create 버튼을 클릭합니다.

그림 17-30 Route 53 CNAME 레코드 생성

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

그림 17-31 Route 53 CNAME 레코드 생성 완료

웹 브라우저에서 A 레코드로 설정한 도메인(gaas.io)과 CNAME으로 생성한 www 서브 도메인(www.gaas.io)에 접속합니다.

그림 17-32 S3와 연동한 도메인에 접속

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


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.