cloudwithbass

[AWS] Route53 + S3로 사용자 지정 도메인 호스팅 실습하기 본문

AWS

[AWS] Route53 + S3로 사용자 지정 도메인 호스팅 실습하기

여영클 2024. 7. 14. 13:37

 

1단계: Route 53에 사용자 지정 도메인 등록

아래 사진과 같이 도메인을 등록했습니다.

 

또한 도메인을 외부 사이트인 가비아에서 구매했으므로 가비아의 네임 서버도 NS 레코드의 라우팅 대상과 똑같이 설정하겠습니다.

맨 마지막의 '.'은 빼야 합니다.


2단계: 두 개의 버킷 생성

실습을 위해 루트 도메인과 하위 도메인 버킷을 생성합니다.

저는 제가 구매한 도메인으로 진행했으나, example.com으로 블로그에 작성하겠습니다.

  • 루트 도메인 버킷 - example.com
  • 하위 도메인 버킷 -www.example.com

 

추후 ACM의 SSL 인증서 사용을 위해 버지니아 북부 리전에 생성했습니다.


3단계: 웹 사이트 호스팅용 루트 도메인 버킷 구성

루트 도메인 버킷에서 아래 사진과 같이 정적 웹 사이트 호스팅을 구성합니다. 

 


4단계: 웹 사이트 리디렉션용 하위 도메인 버킷 구성

 


5단계 인덱스 및 웹 사이트 콘텐츠 업로드

 

루트 도메인 버킷에 테스트용으로 다음 내용의 index.html을 업로드합니다.

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>My Website Home Page</title>
</head>
<body>
  <h1>Welcome to my website</h1>
  <p>Now hosted on Amazon S3!</p>
</body>
</html>

 

 

 

documentation에는 기계 번역 오류가 있는데 정적 웹 사이트 호스팅 대화 상자에 index.html을 입력한 경우 버킷에 업로드할 이름은 Index.html이 아닌 index.html이 맞습니다.

documentation의 잘못된 내용

 

같은 방식으로 errror.html도 업로드합니다.

아래는 챗 GPT가 짠 코드입니다.

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>404 - 페이지를 찾을 수 없습니다</title>
</head>
<body>
    <h1>404</h1>
    <p>죄송합니다. 페이지를 찾을 수 없습니다.</p>
    <p><a href="/">홈으로 돌아가기</a></p>
</body>
</html>

6단계 퍼블릭 접근 허용

루트 도메인 버킷의 권한에 들어가 퍼블릭 접속 차단을 비활성화합니다.

 

또 권한의 버킷 정책을 다음과 같이 편집합니다.

Statement.Resource의 Bucket-Name을 자신의 버킷 이름과 같도록 변경해야 합니다.

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

 

이제 루트 도메인 버킷의 정적 웹호스팅 엔드포인트에 접속하면 다음과 같이 html 문서를 확인할 수 있습니다.


7단계 루트 도메인 별칭 레코드 추가

Route 53에 들어가 1단계에서 생성한 호스팅 영역에 다음과 같이 S3 별칭 레코드를 생성합니다.

대상 평가 토글을 눌러 아니오를 선택합니다.

이제 example.com에 접속하면 S3 버킷으로 라우팅되고, 따라서 S3 버킷의 엔드포인트인 index.html을 확인할 수 있습니다.


8단계 하위 도메인 별칭 레코드 추가

이제 www.example.com에 접속하면 www.example.com 버킷으로 라우팅되고,  그 버킷은 example.com 버킷으로 리디렉션되어 index.html을 확인할 수 있습니다.