[AWS] 05-1. Router53 & S3 & TLS(HTTPS) & Cloudfront
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) 등록


- 호스트명 끝에 '.'이 붙으면 등록이 되지 않음

- 네임서버를 등록시키면, 가비아가 상위 네임서버에 이 정보를 등록하는데 시간이 걸릴 수 있음
➡️ 등록 여부 확인 방법

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 인증서
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 실습
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 접속 확인
