[AWS] Amazon CloudFront로 CDN 구성

2024. 11. 25. 22:29·Security/Cloud

Amazon Route 53을 통한 도메인 등록 방식을 이해하고, 오리진 서버와 직접 통신하는 방식과 Amazon CloudFront를 이용하여 통신하는 방식의 차이를 확인하기

 

실습 단계

  1. Amazon Route 53을 통해 도메인 등록
  2. 실습을 위한 기본 인프라를 CloudFormation으로 배포
  3. Amazon Route 53을 설정하고 기본 인프라 환경의 검증을 수행
  4. Amazon CloudFront Distribution을 생성
  5. Amazon Route 53을 설정하고 Amazon CloudFront 환경의 검증을 수행
  6. 생성된 자원 모두 삭제

*CloudFormation: AWS 리소스(서버, 네트워크 등)를 코드로 자동 생성하고 관리해 주는 IaC(Infrastructure as Code) 도구


1. Amazon Route 53을 통한 도메인 등록

  • 서비스 > Route 53 에 진입 후 등록된 도메인 > 도메인 등록을 선택

  • TLD 별 비용 확인 및 설정
    • 가장 저렴한 .click - $ 3.00으로 선택
  • 원하는 도메인 이름 입력(저는 msjwa.click으로 진행했습니다)
  • 도메인 이름의 상태가 ‘사용 가능’ 인지 확인 후 장바구니에 추가

  • 개인 정보 영문으로 입력 후 계속 선택
  • 도메인 자동 갱신은 비활성화 선택

  • ‘AWS 도메인 이름 등록 약관’ 체크
  • 주문 완료 후 등록을 진행. 도메인 생성까지 시간이 조금 걸립니다.


1-2. Amazon Route 53 도메인의 호스팅 영역 진입

  • 서비스 > Route 53 서비스에서 호스팅 영역 선택

  • 생성된 도메인의 호스팅 영역에서 가지고 있는 레코드 확인 후 레코드 생성

  • 테스트용 레코드를 다음과 같이 설정
    1. 레코드 이름:test (서브 도메인)
    2. 레코드 유형: A 레코드 유형
    3. A 레코드의 IPv4 값: 8.8.8.8
    4. 라우팅 정책: 단순 라우팅
  • 레코드 생성

  • 현재 test.각자_도메인_이름 이라는 도메인은 A 레코드 유형으로 IPv4 주소를 8.8.8.8로 매핑함
  • 터미널에서 아래 명령어를 수행하여 테스트 진행
# [test.각자_도메인_이름]으로 nslookup 테스트
nslookup test.각자_도메인_이름

# [test.각자_도메인_이름]으로 ping 테스트
ping test.각자_도메인_이름

  • 테스트 후에는 생성한 레코드 삭제를 진행합니다.

2. CloudFormation을 통한 기본 인프라 배포

  • 본 실습은 오리진 (Origin) 서버의 지연 시간을 높이고자 ‘상파울루 리전’에서 실습을 진행
  • 남아메리카 (상파울루) sa-east-1 리전을 선택 후 CloudFormation 메뉴에서 스택 생성을 클릭

  • Amazon S3 URL 에 다음 URL을 입력 후 다음 선택
    https://cloudneta-aws-book.s3.ap-northeast-2.amazonaws.com/chapter7/cflab.yaml

  • 스택 세부 정보 지정에서 스택 이름으로 ‘CF-LAB’ 입력 후 별도의 변경 없이 옵션 구성과 검토까지
    다음 > 다음 > 전송을 선택
  • 일정 시간이 지나 스택 상태가 ‘CREATE_COMPLETE’가 되면 CloudFormation 페이지의 출력
    탭에서 EC2 인스턴스의 퍼블릭 IP 주소를 복사


3. Amazon Route 53 설정과 기본 인프라 검증

  • Amazon Route53 > 호스팅 영역 에서 위에 생성한 도메인 이름 클릭

  • 아래 정보로 레코드 생성
    1. 레코드 이름: 빈칸 유지
    2. 레코드 유형: A 레코드 유형
    3. 값: 인스턴스의 퍼블릭 IP 주소
    4. 라우팅 정책: 단순 라우팅
  • 레코드 생성

  • 신규 레코드를 통해 각자의 도메인에 각자 생성한 인스턴스의 퍼블릭 IP 주소가 연결됨
  • 계속해서 사용자 PC에서 상파울루 리전에 생성된 EC2 인스턴스로 웹에 접근해 보겠습니다. 해당 인스턴스는 대용량의 이미지 파일이 추가되어 있습니다.

  • 구글 크롬 브라우저를 통한 지연 시간 체크
    • 구글 크롬 브라우저에서 개발자도구를 실행 후 Network 탭을 클릭
    • Amazon Route 53에서 정의한 도메인 주소로 접근
    • 10MB의 대용량 이미지를 출력하기 때문에 약간의 지연 시간이 발생하며, 구글 크롬 브라우저의
    캐시 비우기 및 강력 새로고침 (shift+command/control+r) 을 통해 지연시간을 반복 측정합니다.


4. Amazon CloudFront Distribution 생성

4-1. AWS Certificate Manager를 통한 도메인 인증서 등록

  • 본 작업을 위해서는 도메인 인증서를 등록하는 과정이 선결되어야 하며, 이를 위해 미국 동부
    (버지니아 북부) us-east-1 리전을 선택 후 AWS Certificate Manager 서비스에 접속
  • 인증서 요청 선택 후 퍼블릭 인증서 요청 선택

  • 완전히 정규화된 도메인 이름에 *. 각자_도메인_이름 을 입력
  • 검증 방법은 DNS 검증을 선택하여 요청

  • 새로고침을 클릭 후 인증서 ID 값을 선택하여 Route53 에서 레코드 생성 > 레코드 생성 클릭
  • 약 5분 내외로 인증서가 발급됩니다.

4-2. Amazon CloudFront Distribution 생성

  • EC2 > 인스턴스 에서 생성한 인스턴스를 체크하고 퍼블릭 DNS 주소를 복사. 리전은 다시 상파울루로 변경해야 됩니다!

  • Amazon CloudFront 의 CloudFront 배포 생성 을 선택 후 다음과 같이 설정
    1. 원본 도메인: EC2의 퍼블릭 DNS 주소
    2. 프로토콜: HTTP만 해당
    3. 자동으로 객체 압출: No
    4. 뷰어 프로토콜 정책: HTTP and HTTPS
    5. 캐시 키 및 원본 요청: Legacy cache settings
    6. 웹 어플리케이션 방화벽: 보안 보호 비활성화
    7. 가격 분류: 모든 엣지 로케이션에서 사용
    8. 대체 도메인 이름: 항목 추가 > cdn.각자_도메인_이름
    9. 사용자 정의 SSL 인증서: 발급받은 ACM 인증서
    10. 기본값 루트 객체: /index.php
    11. IPv6: 끄기

  • 배포 생성 클릭

  • cdn.각자_도메인 으로 접속해서 이전과 동일하게 구글 크롬 브라우저를 통해 지연 시간 체크 가능.

5. Amazon Route 53 설정과 CloudFront 환경 검증

  • Amazon CloudFront 에서 Distribution 도메인 이름 복사

  • Amazon Route53 > 호스팅 영역 에서 위에 생성한 도메인 이름 클릭
  • 아래 정보로 레코드 생성
    1. 레코드 이름: cdn
    2. 레코드 유형: A 레코드 유형
    3. 별칭 선택 > CloudFront 배포에 대한 별칭 선택 > Distribution 도메인 이름 선택
    4. 라우팅 정책: 단순 라우팅

  • 레코드 생성

  • 신규 레코드를 통해 각자의 cdn 레코드가 Amazon CloudFront의 Distribution에 연결

  • 이전과 동일하게 구글 크롬 브라우저를 통해 지연 시간을 체크 해봅니다.


6. 자원 삭제(실습 종료)

  • CloudFront > 배포 에서 생성한 Distribution 을 선택한 후 비활성화 를 선택
  • 비활성화 작업은 5분 내외로 소요됩니다.

  • CloudFront > 배포 에서 비활성화된 Distribution 을 선택한 후 삭제 를 선택

  • 버지니아 북부 리전의 Amazon Certificate Manager 에서 인증서 나열 선택 후 생성한 인증서의
    삭제 를 선택

  • Amazon Route 53 > 호스팅 영역 에서 생성한 레코드를 체크 후 삭제 를 선택

  • (위 CloudFront 삭제가 완료되었는지 확인 후) 상파울루 리전의 CloudFormation > 스택 에서 CF-
    LAB 을 체크 후 삭제 를 선택

  • 삭제 되었는지 꼭 확인하기


참고 자료

  • 길벗출판사, AWS 교과서
    이 게시글은 해당 교재를 기반으로 하여 진행되었으며, 구체적인 설명은 교재를 참고하실 수 있습니다.

'Security > Cloud' 카테고리의 다른 글

[AWS] AWS CLI 설치 및 명령어 사용  (0) 2025.02.27
[AWS] 워드프레스 단일/복합 환경 구성  (0) 2024.11.27
[AWS] Amazon VPC로 퍼블릭/프라이빗 서브넷 구성하기  (1) 2024.11.24
[AWS] AWS EC2 인스턴스 배포 및 접근(for mac)  (1) 2024.11.23
로드밸런싱(Load Balancing)  (1) 2024.11.20
'Security/Cloud' 카테고리의 다른 글
  • [AWS] AWS CLI 설치 및 명령어 사용
  • [AWS] 워드프레스 단일/복합 환경 구성
  • [AWS] Amazon VPC로 퍼블릭/프라이빗 서브넷 구성하기
  • [AWS] AWS EC2 인스턴스 배포 및 접근(for mac)
min8282
min8282
  • min8282
    min8282
    min8282
  • 전체
    오늘
    어제
    • 분류 전체보기 (110)
      • Security (33)
        • System & Network (2)
        • Application (5)
        • Cloud (20)
      • Dev (18)
        • Node.js (12)
        • Hadoop (3)
        • BOJ (2)
      • Web3 & Blockchain (2)
        • Web3 (2)
      • K-Shield.Jr (15)
      • Web Security Academy (3)
      • Wargame (13)
        • Dreamhack (3)
        • Bandit (10)
      • NS (16)
        • CTF (6)
  • 블로그 메뉴

    • 홈
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    amazon s3 트리거
    정처기필기
    ESC1
    AWS CLI
    스마트컨트랙트
    aws lambda
    AWS SSM
    metacode
    Path Traversal
    오블완
    web3
    정처기
    정보처리기사
    Session Manager
    systems manager
    메타코드
    prepared statement
    ELB
    티스토리챌린지
    aws 트리거
    web security academy
    정처기 필기
    splunk db connect
    web3 보안
    metacodem
    스마트 컨트랙트
    File Upload
    보안 그룹
    메타코드M
    탈중앙화
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
min8282
[AWS] Amazon CloudFront로 CDN 구성
상단으로

티스토리툴바