CS/AWS

[AWS] 05-1. Router53 & S3 & TLS(HTTPS) & Cloudfront

나의 개발자 2025. 2. 21. 18:34

Router53

  • AWS가 제공하는 DNS 서비스로, DNS의 포트가 53이기 때문에 Router53
  • DNS 기능은 물론, AWS 내에 존재하는 다양한 서버나 엔드포인트들(ALB, Cloudfront, S3 등...)로의 라우팅도 제공
  • 가비아에서 구매한 도메인 = public Domain, AWS에서 제공하는 엔드포인트 = private Domain

 

Router53 구성 과정

더보기

1. AWS 호스팅 영역 설정

  • 호스팅 영역 = 가비아 도메인
  • AWS의 서비스와 Global한 도메인 매칭 필요
  • 도메인 이름 : 가비아에서 구매한 Global한 Domain 입력
  • 유형 : 모두에게 제공하는 영역 선택

 

  • 값/트래픽 라우팅 대상 : 내 영역에 대한 정보를 알고 있는 네임서버들
  • 실제 도메인을 소유한 대상은 가비아고, 내 영역에 대한 정보를 알고 있는 대상은 네임서버들이기 때문에
    ➡️ 가비아에 네임서버를 등록해야 함

 

2. Gabia 네임서버(NS) 등록

  • 호스트명 끝에 '.'이 붙으면 등록이 되지 않음
  • 네임서버를 등록시키면, 가비아가 상위 네임서버에 이 정보를 등록하는데 시간이 걸릴 수 있음
    ➡️ 등록 여부 확인 방법
NS 서버 등록 전

 

3. web 인스턴스 생성

  • public subnet에 두는 이유
    • Router53이 로드밸런싱 같은 역할을 하는 것이 아니기 때문에 private subnet에 두면 네임서버로 접속해도 web 서버에 접속 불가능

 

4. web 인스턴스 설정

# root 권한 부여
ubuntu@ip-10-10-1-54:~$ sudo -i

# nginx 패키지 설치
root@ip-10-10-1-54:~# apt-get install -y nginx

# 재부팅 시, nginx 유지
root@ip-10-10-1-54:~# systemctl enable --now nginx
Synchronizing state of nginx.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable nginx

# nginx 제공 페이지 생성
root@ip-10-10-1-54:~# echo record test > /var/www/html/index.html

# 웹 접속 확인
root@ip-10-10-1-54:~# curl localhost
record test

 

5. 레코드 생성

  • DNS의 zone 파일 설정과 비슷
    • www.bboaws.shop으로 접속하면 web 인스턴스의 퍼블릭 주소로 연결

 

6. 도메인 - web 인스턴스 연결 확인

 


S3(Simple Storage Service)

  • AWS의 S3 서비스를 통한 정적 웹사이트 호스팅
  • S3에 간단한 웹 페이지를 올려두면 마치 웹 서버처럼 페이지 배포가 가능
    ➡️가장 널리 사용되는 방식

 

S3 구성 과정

더보기

1. S3 버킷 생성

  • 버킷 = Global하게 유효한 내 스토리지, 트리구조
  • 버킷 이름은 Global하기 때문에 중복되면 안됨
  • 버킷의 퍼블릭 액세스 차단 해제
    • 외부에서 S3 내에 있는 폴더 및 파일에 접근 가능하도록 모든 퍼블릭 액세스 차단 해제
  • AWS에서 제공하는 KMS 서비스를 제공받지 않겠다는 의미

 

2. S3에서 제공하는 index.html 파일 생성 & S3 업로드

2-1. S3에서 제공하는 index.html 파일 생성

 

2-2. S3 버킷에 index.html 업로드

 

2-3. S3 정적 웹 호스팅 설정

  • S3의 웹 서비스 제공을 위한 설정 ➡️ 엔드포인트 생성됨
  • 버킷 웹 사이트 엔드포인트 생성됨 ➡️ 접근 불가능
  • 접근 권한 없음 ➡️ 접근 권한 정책 설정 필요❗

 

2-4. 권한 정책 편집

  • JSON 형식으로 구성되어 있어서, 직접 생성 ❌
    • key : value 형태(yaml) ➡️ 예) cpu : 1
  • ARN : Amazon Resource Name
    • 자원을 식별하기 위한 이름
    • AWS 내에서는 Global함
  • 정책 생성기
  • 정책 생성기에서 복사한 내용에 ARN 명 뒤에 /*를 추가

 

3. S3 index.html 접속 성공 확인

 

S3 삭제

더보기
  • 버킷을 삭제하려면 객체 삭제 후, 삭제해야 함

1. S3의 객체 삭제

 

2. S3 버킷 삭제

 

실습 - 1

문제

위에서 만든 S3 정적 웹 사이트를 Route53을 통해 레코드를 만들어줄 예정
이런 경우, 반드시 S3의 버킷명과 레코드가 일치해야 함
➡️ www.bboaws.shop라는 영문주소를 내 버킷으로 연결하고자 한다면, 버킷이름을 www.bboaws.shop로 만들어야 함
👉 이렇게 버킷명과 도메인을 일치시키지 않으면 연결 ❌ 

www.bboaws.shop으로 버킷을 만든 후, 프리 템플릿을 배포해 보세요.

 

풀이

더보기

1.free-template 다운로드

 

2. S3 설정

2-1. 버킷 생성

 

2-2. template 객체에 업로드

  • 폴더 안에 있는 파일 및 폴더를 업로드

 

2-3. 권한 부여

  • 정책 생성기
  • 정책 편집

 

3. S3 index.html 접근 확인

 

4. 레코드 생성

 

5. www.bboaws.shop  접속 확인

 

실습 - 2

문제

ELB도 레코드 구성이 가능하다.
간단한 웹 페이지를 배포하는 서버에 ALB를 붙여서 lb.bboaws.shop으로 접속되도록 만들어보세요. 

 

풀이

더보기

1. web 인스턴스

1-1. web 인스턴스 생성

 

1-2. 세팅

# 관리자 권한
ubuntu@ip-10-10-1-102:~$ sudo -i

# 웹 패키지 다운로드
root@ip-10-10-1-102:~# apt install -y nginx

# 웹 제공 페이지 생성
root@ip-10-10-1-102:~# echo 'lb.bboaws.shop success!' > /var/www/html/index.html

# 웹 기능 확인
root@ip-10-10-1-102:~# curl localhost
lb.bboaws.shop success!

 

2. ALB & Target Group 생성

2-1. ALB 생성


2-2. 대상그룹 생성


 

2-3. alb 생성 확인

 

3. 레코드 추가

 

4. lb.bboaws.shop 접속 확인

  • AWS의 다양한 서비스들은 보통 vpc 외부에 존재
    ➡️ 때에 따라서는 외부와 통신(outbound)이 되어야 aws의 서비스를 제공받을 수 있음

TLS 인증서

  • ACM : AWS 내에 존재하는 리소스에 대한 인증서 발급 서비스
  • ACM에서 TLS 인증서 발급 = AWS 내에서만 사용가

 

HTTPS 접속 - TLS 인증서

HTTPS 접속 실습

더보기

1. 인증서 요청

  • 모든 하위 도메인에 대해 전부

 

2. Router 53 레코드 생성

  • Router53에서 레코드 확인 가능

 

3. 보안그룹 수정 - web-allow

  • 443 인바운드 규칙 수정

 

4. Application Load Balancer 생성

4-1. ALB 생성


4-2. 대상그룹 생성

  • 내부 서버의 포트는 80 Port
    • 외부에서 443 Port로 들어와도 내부에서는 80 Port로 받기 위함
  • 선택한 인스턴스를 위한 포트 = 80 Port
    • 443 Port ❌

  • 발급받은 TLS 인증서 선택

 

5. ALB 접근 확인

  • 로드밸러서의 DNS 주소를 통해 HTTPS로 접근하면 접근 불가능
    • 우리가 인증서를 붙여줄 도메인은 *.bboaws.shop이기 때문에 DNS 이름으로 접근하면 접근 불가능함

 

6. Router53 레코드 생성

  • acm.bboaws.shop 같은 도메인을 통해 접근할 수 있도록 레코드 생성

 

7. DNS 도메인 접속  확인

  • https로는 인바운드 규칙을 설정하뒀기 때문에 ➡️ 접속 ⭕
  • http로는 인바운드 규칙을 설정하지 않았기 때문에 ➡️ http://acm.bboaws.shop으로 접속 ❌ 

 

8. ALB에 HTTP 리스너 추가

  • 리스너 추가 확인

 

9. 리다이렉션 확인 가능

  • ACM 인증서는 같은 리전 내에서만 유효
    ➡️ 모든 리전에서 사용가능한 인증서를 만들고 싶다면 제일 첫 번째 리전(=버지니아 북부, us-east-1)에서 만들면 됨
    (👉 Cloudfront를 사용하고 싶은 경우)


Cloudfront

  • CDN(Contents Delivery Network)
  • 캐싱
  • Edge Location이라고 부르는 캐싱 서버를 통해 미리 메인리전의 콘텐츠들을 복사해 두고, 멀리 떨어진 사용자에게 빠른 서비스를 제공
    ➕ Cloudfront를 위해서 TLS 인증서를 발급받을 텐데, 🌟반드시 제일 첫 번째 리전(=버지니아 북부, us-east-1)에서 만들어야 함

 

Cloudfront 실습

Cloudfront 실습 흐름

더보기

1. TLS 인증서 발급 - 버지니아 북부 리전

 

  • 레코드 자동 생성됨

 

 2. ALB & Target Group 생성

2-1. ALB 생성


2-2. 대상그룹 생성 

 


 

 

3. Cloudfront 생성

  • 뷰어 = Cloudfront Listen
    • https://cf.bboaws.shop = 대체도메인 주소 = 앞으로 만들 레코드 이름

 

 

4. Cloudfront 접속 확인

 

5. Router53 레코드 생성

 

6. Cloudfront 접속 확인