AWS/PROJECT

AWS CloudFront, S3, ALB, Route53 몽땅 연동하기

2023. 2. 21. 18:03
728x90

이렇게 연동할 것이다

그리고 CloudFront 앞단에 WAF를 위치시킬 예정이다

 

S3 버킷

  • 다음과 같이 contents라는 폴더에 파일들을 집어넣었다

로드 밸런서
  • 오토 스케일링 그룹으로 EC2 인스턴스 2개를 생성했다. 인스턴스는 각각 다른 AZ의 private 서브넷에 존재한다
  • 그리고 ALB의 타겟 그룹에 다음과 같이 등록해둔 상태이다.

  • 그리고, 로드 밸런서는 application load balancer를 생성해 리스너 규칙을 다음과 같이 생성했다
  • HTTP:80으로 들어온 모든 요청은 타겟그룹으로 전달되도록 했다

Route 53
  • 기존에 사용하던 도메인을 Route 53의 호스팅 영역에 등록했다
  • 처음 등록하면 네임서버가 자동으로 생성되는데 그 네임서버를 기존 호스팅 업체인 가비아에 등록했다.

WAF

- AWS WAF - Web ACLs - Web ACL 생성하기

- 이름 : 알아서 지정

- Resource type : Amazon CloudFront distributions

- Associated AWS resources : [Add AWS resources] - 생성한 CloudFront 배포 선택

- Next

- 규칙은 [Add managed rule groups]를 선택해서 비용 안드는거 아무거나 활성화하기

- 다 다음다음해서 생성완료 하기

CloudFront
  • CloudFront 배포를 생성해보자.
  • 하나의 배포에 두 가지 원본을 생성할 것이다.

[원본]

  • 원본 도메인 : 생성한 S3 버킷 선택
  • S3 버킷 액세스 : 원본 액세스 제어 설정(권장)
    • Origin access control
    • [제어 설정 생성] 선택
      • 기본값 그대로 두고 생성하기
      • 이름은 변경해도 된다
    • 생성한 OAC(Origin access control) 선택하기
      • 이걸 하면 S3 URL로 접근하려고 했을 때 access denied가 나도록 할 수 있다

[기본 캐시 동작]

  • 뷰어 프로토콜 정책 : Redirect HTTP to HTTPS

그럼 CloudFront 배포가 생성된다

 

그리고 생성된 CloudFront 배포로 들어가서 원본 탭 - [원본 생성]

[원본]

  • 원본 도메인 : ALB 선택
  • 프로토콜 : HTTPS만 해당

그리고 동작 탭 - [동작 생성]

[설정]

  • 뷰어 프로토콜 정책 : Redirect HTTP to HTTPS
  • 허용된 HTTP 방법 : GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
    • 웹/와스에서 이미지를 업로드하는 경우도 있을테니 POST도 되도록..
  • 캐시 키 및 원본 요청
    • 캐시 정책 : CachingDisabled
    • 원본 요청 정책 : AllViewer

일반 탭 - [설정] - [편집]으로 가서

[설정]

  • AWS WAF 웹 ACL : 이전에 생성한 WAF 선택
  • 대체 도메인 이름(CNAME) : 쓸 도메인 이름 생성. 필자의 경우 plum.example.store임
  • 사용자 정의 SSL 인증서 : <버지니아 북부>에서 생성한 ACM 인증서 선택 - HTTPS 통신을 하기 위해 인증서가 필요함(없다면 [인증서 요청]을 통해 생성하기. 그냥 도메인 이름 넣고 생성하면 됨! 불친절해서 미안)

이렇게 구성하기

추가적으로 S3 버킷의 contents 라는 폴더로만 전달되도록 경로를 지정하고 싶으면 동작 탭에서 생성된 S3로의 동작 선택 - 경로패턴 - /contents/* 로 수정하기

Route 53 레코드 생성하기

- 생성한 CloudFront로의 레코드를 생성한다

- 레코드 이름에 아까 CloudFront 생성하면서 지정한 CNAME을 입력해준다. 아마, plum.example.store니까, plum을 레코드 이름에 등록하면 되겠지?

- 그리고 별칭을 활성화하고, 트래픽 라우팅 대상 - CloudFront 배포 - 생성된 CloudFront 배포를 선택하고 완료한다

그럼 끗

S3, ALB, WAF, Route53 모두 연동이 완료되었다

그래서 도메인에 들어가보면, 

캐싱 전

캐싱 후

다음과 같이 바뀌었음을 확인할 수 있다!

728x90