Amazon CloudFront 배포를 사용하여 정적 웹 사이트 제공
이 시작하기 자습서는 다음 작업의 수행 방법을 보여준다.
-
example.com 등의 도메인 이름 등록
-
도메인에 대한 인증서를 생성한다.
-
2개의 Amazon S3 버킷을 만들고 하나는 웹 사이트를 호스팅하고 다른 하나는 하위 도메인으로 리디렉션하도록 구성한다.
-
샘플 웹 사이트를 만들고 S3 버킷에 해당 파일을 저장한다.
-
두 S3 버킷 모두에 대해 CloudFront 배포를 생성한다.
-
Amazon Route 53가 CloudFront 배포로 트래픽을 라우팅하도록 구성한다.
완료되면 브라우저를 열고 도메인 이름을 입력하여 안전하게 웹 사이트를 볼 수 있다.
1. 도메인 등록
example.com과 같은 도메인 이름을 사용하려면 사용되고 있지 않은 도메인 이름을 찾아 등록해야 한다. 도메인 이름을 등록하면 일반적으로 1년 동안 인터넷 어디서나 도메인 이름을 독점적으로 사용할 수 있다. 기본적으로 매년 말에 도메인 이름이 자동으로 갱신되지만 자동 갱신은 꺼둘 수 있다.
Amazon Route 53를 사용하여 새 도메인 이름을 등록하려면
-
AWS Management Console에 로그인한 후 https://console.aws.amazon.com/route53/에서 Route 53 콘솔을 연다.
-
Route 53을 처음 사용하는 경우 시작하기를 선택한다.
이미 Route 53를 사용하고 있는 경우에는 탐색 창에서 등록된 도메인을 선택한다.
-
[Register Domain]을 선택한다.
-
등록하고자 하는 도메인 이름을 입력하고, [Check]를 선택하여 그 도메인 이름이 사용 가능한지 알아본다.
a~z, 0~9, -(하이픈) 이외의 문자를 지정하는 방법과 국제 도메인 이름을 지정하는 방법은 DNS 도메인 이름 형식 섹션을 참조한다.
-
도메인이 사용 가능하다면 [Add to cart]를 선택한다. 장바구니에 도메인 이름이 표시된다.
관련 도메인 제안 목록은 맨 처음 선택한 도메인(사용할 수 없는 경우) 대신에 또는 처음 선택한 도메인 외에 추가로 등록할 수 있는 다른 도메인들을 보여준다. 등록하고자 하는 각 추가 도메인(최대 5개)마다 [Add to cart]를 선택한다.
도메인 이름을 사용할 수 없고 추천 도메인 이름 중에 원하는 이름이 없는 경우, 마음에 들고 사용 가능한 도메인 이름을 찾을 때까지 4단계를 반복한다.
Note
사용자들이 www.example.com 같은 www.your-domain-name을 사용하여 샘플 웹사이트에 액세스할 수 있도록 하려면 두 번째 도메인을 등록할 필요가 없다. 이번 주제 후반부에서는 www.your-domain-name 트래픽을 웹사이트로 라우팅하는 방법을 설명한다.
-
장바구니에서 도메인을 등록할 연 수를 선택한다.
-
도메인을 더 등록하려면 4~6단계를 반복한다.
-
계속을 선택한다.
-
[Contact Details for Your n Domains] 페이지에서 도메인 등록자, 관리자, 기술 담당자의 연락처 정보를 입력한다.
기본값으로 세 사람의 연락처에 대해 같은 정보를 사용한다. 하나 이상의 연락처에 대해 서로 다른 정보를 입력하고 싶다면, [My Registrant, Administrative, and Technical Contacts are all the same]의 값을 [No]로 변경한다.
1개 이상의 도메인을 등록하는 경우에, 저희는 모든 도메인에 대해 같은 연락처 정보를 사용한다.
자세한 내용은 도메인을 등록하거나 이전할 때 지정하는 값 섹션을 참조한다.
-
일부 최상위 도메인(TLD)의 경우에 저희는 추가 정보를 수집할 의무가 있다. 이러한 TLD의 경우에는 [Postal/Zip Code] 필드 뒤에 해당 값을 입력한다.
-
WHOIS 쿼리로부터 연락처 정보를 숨길지 여부를 선택한다. 자세한 내용은 다음 주제를 참조한다.
-
계속을 선택한다.
-
입력한 정보를 검토하고, 서비스 계약 조건을 읽은 다음, 확인란을 선택하여 서비스 계약 조건을 읽었음을 확인한다.
-
[Complete Purchase]를 선택한다.
저희는 도메인 등록자에게 이메일을 보내 귀하가 지정한 이메일을 통해 등록자에게 연락할 수 있다는 것을 확인하도록 한다. (이것은 ICANN 요건이다). 이메일은 다음 이메일 주소 중 하나에서 발송한다.
-
noreply@registrar.amazon.com - Amazon Registrar에서 등록한 TLD의 경우.
-
noreply@domainnameverification.net - 등록 기관 협력사 Gandi에서 등록한 TLD의 경우.
TLD의 등록 기관을 확인하려면 등록 기관 찾기을 참조한다.
Warning
등록자 연락처는 이메일의 지시 사항에 따라 이메일을 받았다는 사실을 확인해야 한다. 그렇지 않으면 ICANN에서 요구할 경우 도메인 이름이 일시 중지해야 한다. 도메인이 일시 중지되면 인터넷에서 접속할 수 없다.
도메인 등록이 승인되면 또 다른 이메일을 수신한다. 귀하의 요청이 현재 어떤 처리 상태에 있는지 확인하시려면, 다음(도메인 등록 상태 보기)을 참조한다.
-
기본적으로 1년 동안 하나의 도메인을 등록할 수 있다. 도메인을 유지하고 싶지 않을 경우, 자동 갱신을 비활성화하여 연말에 도메인이 만료되도록 할 수 있다.
(선택 사항) 도메인 자동 갱신을 끄려면
-
탐색 창에서 등록된 도메인을 선택한다.
-
도메인 목록에서 연결된 도메인 이름을 선택한다.
-
자동 갱신 필드의 값이 활성화됨(비활성화)이면 비활성화를 선택하여 자동 갱신을 끈다. 변경 사항이 즉시 적용된다.
필드의 값이 [Disabled (enable)]라면 설정을 변경하면 안 된다.
2. 공인 인증서 요청
뷰어가 HTTPS를 사용할 것을 요청하도록 CloudFront를 구성하려면 Amazon CloudFront 배포에서 공인 인증서를 요구하므로 CloudFront가 뷰어와 통신할 때 연결이 암호화된다.
AWS Certificate Manager(ACM) 공인 인증서(콘솔)를 요청하려면
-
AWS 관리 콘솔에 로그인하여 https://console.aws.amazon.com/acm/home에서 ACM 콘솔을 연다.
Note
미국 동부(버지니아 북부) 리전에서 인증서를 생성하는지 확인한다 Amazon CloudFront에서 이 정보가 필요하다.
공인 인증서 요청을 선택한 다음 인증서 요청을 선택한다.
-
도메인 이름에 도메인(예:
example.com
)을 입력한다.이 인증서에 다른 이름 추가에 도메인 이름 앞에 별표를 입력하여 모든 하위 도메인(예:
*.example.com
)에 대한 와일드카드 인증서를 요청한다. -
다음(Next)을 선택한다.
-
검증 방법 선택 페이지에서 DNS 검증에 이어 다음을 선택한다.
-
태그 추가 페이지에서 선택적으로 인증서에 태그를 지정할 수 있다. 태그는 AWS 리소스를 식별하고 구성하기 위한 메타데이터 역할을 하는 키-값 페어이다.
태그 추가를 마치면 검토를 선택한다.
-
검토 페이지에서 입력한 정보가 올바른지 확인한 다음 확인 및 요청을 선택한다.
-
검증 페이지에서 두 도메인을 모두 확장하고 Route 53에서 레코드 만들기를 선택하여 도메인에 대한 CNAME 레코드를 자동으로 추가한 다음 생성을 선택한다.
두 도메인 모두에 대해 성공이라고 표시되면 페이지 하단에서 계속을 선택한다.
3. S3 버킷 생성하여 하위 도메인 호스팅
www.your-domain-name에 대한 S3 버킷을 생성하려면
Amazon S3를 사용하면 어디서든 인터넷에 데이터를 저장하고 조회할 수 있다. 이 단계에서는 S3 버킷을 생성하여 웹 사이트의 모든 파일을 저장한다.
-
https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 연다.
-
버킷 만들기를 선택한다.
-
다음 값을 입력한다.
-
Bucket name - www.
your-domain-name
을 입력한다. 예를 들어 도메인 이름 example.com을 등록한 경우, www.example.com을 입력한다. -
리전(Region) - 버킷에 대한 리전을 선택한다.
-
-
기본 설정을 적용하고 버킷을 생성하려면 버킷 생성을 선택한다.
S3 버킷 설정에 대한 자세한 내용은 Amazon S3 사용 설명서의 버킷 속성 보기 섹션을 참조한다.
4. 루트 도메인에 대한 다른 S3 버킷 생성
사용자들이 example.com 같은 your-domain-name
루트 도메인을 사용하여 샘플 웹 사이트에 액세스할 수 있도록 하려면 두 번째 S3 버킷을 생성한다. 그런 다음 첫 번째 버킷으로 트래픽을 라우팅하도록 두 번째 버킷을 구성한다.
your-domain-name에 대한 S3 버킷을 생성하려면
-
https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 연다.
-
버킷 만들기를 선택한다.
-
다음 값을 입력한다.
-
Bucket name -
your-domain-name
을 입력한다. 예를 들어 도메인 이름 example.com을 등록한 경우, example.com을 입력한다. -
리전(Region) - 첫 번째 버킷을 생성한 리전과 동일한 리전을 선택한다.
-
-
기본 설정을 적용하고 버킷을 생성하려면 버킷 생성을 선택한다.
5. 하위 도메인 버킷에 웹 사이트 파일 업로드
이제 S3 버킷이 생겼으므로 웹 사이트 파일을 업로드할 수 있다. 이 자습서에서는 페이지에 텍스트를 표시하는 간단한 index.html 파일을 업로드한다.
웹 사이트 호스팅에 대한 S3 버킷을 사용하려면
-
https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 연다.
-
버킷 목록에서 웹 사이트 파일(예:
www.example.com
)을 업로드하려는 버킷의 연결된 이름을 선택한다. -
한 페이지의 간단한 웹 사이트를 만드는 예제 텍스트를 복사하여 텍스트 편집기에 붙여넣은 다음 해당 텍스트를 index.html로 저장한다.
<html> <head> <title>Amazon Route 53 Getting Started</title> </head> <body> <h1>Routing Internet traffic to Cloudfront distributions for your website stored in an S3 bucket</h1> <p>For more information, see <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/getting-started.html">Getting Started with Amazon Route 53</a> in the <emphasis>Amazon Route 53 Developer Guide</emphasis>.</p> </body> </html>
-
객체(Objects) 탭에서 업로드(Upload)를 선택한다.
-
파일 및 폴더(Files and folders)에서 파일 추가(Add files)를 선택하고 웹 사이트 파일을 업로드한다. 이 자습서에서는 3단계에서 저장한 index.html 파일을 업로드한다.
6. 웹 사이트 호스팅에 대한 루트 도메인 버킷 설정
웹 사이트 호스팅에 대한 루트 도메인 버킷을 구성하면 모든 요청을 도메인으로 리디렉션하도록 하위 도메인 버킷을 선택적으로 구성할 수 있다. 예를 들어, example.com
이 www.example.com
으로 리디렉션되도록 모든 요청을 구성할 수 있다.
리디렉션을 구성하려면
-
Amazon S3 콘솔의 버킷(Buckets) 목록에서 버킷 이름(예:
example.com
)을 선택한다. -
[속성(Properties)]을 선택한다.
-
정적 웹 사이트 호스팅(Static website hosting)에서 편집(Edit)을 선택한다.
-
정적 웹 사이트 호스팅(Static website hosting)에서 활성화(Enable)를 선택한다.
-
객체에 대한 요청 리디렉션(Redirect requests for an object)을 선택한다.
-
호스트 이름(Host name) 상자에 하위 도메인(예:
www.example.com
)을 입력한다. -
프로토콜(Protocol)의 경우 HTTPS를 선택한다.
-
[Save changes]를 선택한다.
-
정적 웹 사이트 호스팅에서 엔드포인트를 기록한다.
엔드포인트는 버킷의 Amazon S3 웹 사이트 엔드포인트이다. 이 엔드포인트를 사용하여 Amazon CloudFront 배포를 설정한다.
7. 하위 도메인에 대한 Amazon CloudFront 배포 생성
이 단계에서는 사용자가 안전하게 볼 수 있도록 웹 사이트에서 HTTPS를 사용할 수 있도록 www.example.com과 같은 하위 도메인에 대한 CloudFront 배포를 생성한다.
CloudFront 배포 생성
-
https://console.aws.amazon.com/cloudfront/v3/home에서 CloudFront 콘솔을 연다
-
배포 생성(Create Distribution)을 선택한다.
-
오리진 설정(Origin Settings)에서 오리진 도메인 이름(Origin Domain Name)에 대해 이전에 생성한 Amazon S3 버킷을 선택한다.
S3 버킷 액세스(S3 bucket access)에서 예, OAI를 사용한다(버킷은 액세스를 CloudFront만으로 제한할 수 있음)(Yes, use OAI (bucket can restrict access to only CloudFront))를 선택한다. 오리진 액세스 ID(Origin access identity)의 경우 목록에서 선택하거나 새 OAI 생성(Create new OAI)을 선택할 수 있다(둘 다 작동함).
버킷 정책(Bucket policy)에서 예, 버킷 정책을 업데이트한다(Yes, update the bucket policy)를 선택한다.
-
기본 캐시 동작 설정(Default Cache Behavior Settings)의 경우 뷰어(Viewer)에서 뷰어 프로토콜 정책(Viewer protocol policy)을 HTTP에서 HTTPS로 리디렉션(Redirect HTTP to HTTPS)으로 설정하고 나머지에 대해서는 기본값을 수락한다.
캐시 동작 옵션에 대한 자세한 내용은 Amazon CloudFront 개발자 안내서의 캐시 동작 설정을 참조한다.
-
설정(Settings) 아래의 필드에서 다음을 수행한다.
-
대체 도메인 이름(CNAME) - 선택 사항에 대해 항목 추가(Add item)를 선택하고 하위 도메인(예:
www.example.com
)을 입력한다. -
사용자 정의 SSL 인증서(Custom SSL Certificate)에서 이전에 생성한 인증서를 선택한다.
-
기본 루트 객체(Default root object) 텍스트 상자에
index.html
을 입력한다. -
나머지에 대해서는 기본값을 수락한다. 배포 옵션에 대한 자세한 내용은 배포 설정을 참조한다.
-
-
페이지 맨 아래에서 배포 생성(Create Distribution)을 선택한다.
-
CloudFront에서 배포를 생성하면 배포의 상태(Status) 열 값이 진행 중에(In Progress)서 배포 완료(Deployed)로 변경된다. 이 작업은 일반적으로 몇 분 정도 걸린다.
CloudFront가 배포에 할당하는 도메인 이름을 기록한다. 이 도메인 이름은 배포 목록에 나타난다. 이 도메인 이름을 사용하여 배포를 테스트할 수 있다.
8. 루트 도메인에 대한 Amazon CloudFront 배포 생성
이 단계에서는 URL이 하위 도메인으로 리디렉션될 때 HTTPS를 사용할 수 있도록 루트 도메인에 대한 CloudFront 배포를 생성한다.
CloudFront 배포 생성
-
https://console.aws.amazon.com/cloudfront/v3/home에서 CloudFront 콘솔을 연다
-
배포 생성(Create Distribution)을 선택한다.
-
오리진 설정(Origin Settings)에서 오리진 도메인 이름(Origin Domain Name)에 버킷 웹 사이트 엔드포인트를 입력한다. 이전에 생성한 Amazon S3 버킷에 대한 속성(Properties)의 정적 웹 사이트 호스팅(Static website hosting) 섹션에서 이를 가져올 수 있다.
나머지에 대해서는 기본값을 수락한다.
-
기본 캐시 행동 설정(Default Cache Behavior Settings) 필드에서 다음을 수행한다.
-
뷰어(Viewer)에서 뷰어 프로토콜 정책(Viewer protocol policy)을 HTTP에서 HTTPS로 리디렉션(Redirect HTTP to HTTPS)으로 설정한다.
-
캐시 설정(Cache settings)을 CachingDisabled로 설정한다.
-
나머지에 대해서는 기본값을 수락한다.
캐시 동작 옵션에 대한 자세한 내용은 Amazon CloudFront 개발자 안내서의 캐시 동작 설정을 참조한다.
-
-
설정(Settings) 아래의 필드에서 다음을 수행한다.
-
대체 도메인 이름(CNAME) - 선택 사항에 대해 항목 추가를 선택하고 루트 도메인(예:
example.com
)을 입력한다. -
사용자 정의 SSL 인증서(Custom SSL Certificate)에서 이전에 생성한 인증서를 선택한다.
-
나머지에 대해서는 기본값을 수락한다. 배포 옵션에 대한 자세한 내용은 배포 설정을 참조한다.
-
페이지 맨 아래에서 배포 생성(Create Distribution)을 선택한다.
-
CloudFront에서 배포를 생성하면 배포의 상태(Status) 열 값이 진행 중에(In Progress)서 배포 완료(Deployed)로 변경된다. 이 작업은 일반적으로 몇 분 정도 걸린다.
CloudFront가 배포에 할당하는 도메인 이름을 기록한다. 이 도메인 이름은 배포 목록에 나타난다. 이 도메인 이름을 사용하여 배포를 테스트할 수 있다.
9. 도메인에 대한 DNS 트래픽을 CloudFront 배포로 라우팅
이제 S3 버킷에 CloudFront 배포를 사용하는 1페이지의 웹 사이트가 생겼다. 도메인의 인터넷 트래픽을 CloudFront 배포로 라우팅하려면 다음 절차를 수행한다.
트래픽을 CloudFront 배포로 라우팅하는 방법에 대한 자세한 내용은 도메인 이름을 사용하여 Amazon CloudFront 배포로 트래픽 라우팅 섹션을 참조한다.
트래픽을 웹 사이트로 라우팅하려면
-
https://console.aws.amazon.com/route53/에서 Route 53 콘솔을 연다.
-
탐색 창에서 호스팅 영역(Hosted zones)을 선택한다.
Note
도메인을 등록할 때 Amazon Route 53가 같은 이름의 호스팅 영역을 자동으로 생성했다. 호스팅 영역에는 Route 53로 도메인의 트래픽을 라우팅하는 방법에 관한 정보가 포함되어 있다.
-
호스팅 영역 목록에서 도메인의 이름을 선택한다.
-
Create Record Set(레코드 세트 생성)를 선택한다.
빠른 레코드 생성(Quick create record) 보기에 있는 경우 마법사로 전환(Switch to wizard)을 선택한다.
Note
각각의 레코드에는 하나의 도메인(예: example.com) 또는 그 하위 도메인(예: www.example.com)의 트래픽을 라우팅하려는 방법에 관한 정보가 포함되어 있다. 레코드는 도메인의 호스팅 영역에 저장된다.
-
단순 라우팅(Simple routing)을 선택하고 다음(Next)을 선택한다.
-
Define simple record(단순 레코드 정의)를 선택한다.
-
레코드 이름에 기본값(호스팅 영역과 도메인의 이름) 앞의
www
를 입력한다. -
레코드 유형(Record type)에서 A ‐ IPv4 주소 및 일부 AWS 리소스로 트래픽 라우팅(A ‐ Routes traffic to an IPv4 address and some AWS resources)을 선택한다.
-
값/트래픽 라우팅 대상(Value/Route traffic to)에서 CloudFront 배포에 대한 별칭(Alias to CloudFront distribution)을 선택한다.
-
배포를 선택한다.
배포 이름은 배포(Distributions) 목록의 도메인 이름(Domain name) 상자에 표시되는 이름과 일치해야 한다(예:
dddjjjkkk.cloudfront.net
). -
대상 상태 평가에서 아니요를 선택한다.
-
Define simple record(단순 레코드 정의)를 선택한다.
루트 도메인(example.com)에 대한 별칭 레코드 추가
루트 도메인에 대한 별칭 레코드도 추가하여 트래픽을 www.example.com
으로 리디렉션하는 S3 버킷을 가리킨다. 트래픽을 CloudFront 배포로 라우팅하는 방법에 대한 자세한 내용은 도메인 이름을 사용하여 Amazon CloudFront 배포로 트래픽 라우팅 섹션을 참조한다.
-
레코드 구성에서 단순 레코드 정의를 선택한다.
-
레코드 이름(Record name)에서 기본값을 수락한다.
-
레코드 유형(Record type)에서 A ‐ IPv4 주소 및 일부 AWS 리소스로 트래픽 라우팅(A ‐ Routes traffic to an IPv4 address and some AWS resources)을 선택한다.
-
값/트래픽 라우팅 대상(Value/Route traffic to)에서 CloudFront 배포에 대한 별칭(Alias to CloudFront distribution)을 선택한다.
-
배포를 선택한다.
배포 이름은 배포(Distributions) 목록의 도메인 이름(Domain name) 상자에 표시되는 이름과 일치해야 한다(예:
dddjjjkkk.cloudfront.net
). -
대상 상태 평가에서 아니요를 선택한다.
-
Define simple record(단순 레코드 정의)를 선택한다.
-
레코드 구성 페이지에서 레코드 생성을 선택한다.
10. 웹 사이트 테스트
웹 사이트가 올바로 작동하는지 확인하려면 웹 브라우저를 열어 다음 URL로 이동한다.
-
http://www.
your-domain-name
(예:www.example.com
) -your-domain-name
버킷의 인덱스 문서를 표시한다. -
http://
your-domain-name
(예:example.com
) - 요청을www.your-domain-name
버킷으로 리디렉션한다.
예상 동작을 확인하기 위해 캐시를 지워야 하는 경우도 있다.
인터넷 트래픽 라우팅에 대한 자세한 내용은 Amazon Route 53을 DNS 서비스로 구성 단원을 참조한다. AWS 리소스로 인터넷 트래픽을 라우팅하는 방법에 대한 자세한 내용은 AWS 리소스로 인터넷 트래픽 라우팅 섹션을 참조한다.