경험/기술

[S3] [CloudFront] [Route 53] CDN 구축기 - AWS에서 시스템 구축

호야_ 2023. 10. 6. 17:40
728x90

S3 버킷 만들기

원하는 버킷 이름 구성


기본값으로 설정


나머지는 다 기본값으로 설정(태크만 나중에 쉽게 구분하기 위해 적어줌)

 

CloudFront 배포 생성 & Route 53

방금 생성한 버킷이름 선택

  • 이미지를 보면 원본 경로가 있는데 s3 내부에 원하는 경로를 입력하면 된다.
  • 예를 들어 s3의 image 폴더에 test.png를 접근하고 싶다면 원본경로에 `/image/*`을 적고 기본루트에 /test.png 입력하면 image 폴더가 루트 경로가 돼서 test.png로 접근 가능하다.
  • 아무것도 입력하지 않으면 버킷의 root로 바로 접근할 수 있어서 아무것도 적지 않았다.
더보기

 

이렇게 웹 사이트 엔드포인트를 사용하라고 할 수도 있는 데 사용을 누르면 이렇게 위에 도메인과 다르게 website가 붙은 도메인이 나오게 된다. 이걸 사용하면 원본 액세스 설정이 없어져서 저걸 사용하며 안 된다.


제어 설정 생성 클릭


기본값으로 설정 (제어 설정 이름은 원본도메인과 일치해야함! 다르면 Access Denied 뜸)


최종 원본 ("S3 버킷 정책을 업데이트해야 함"을 기억하고 일단 넘어가자)


`Redirect HTTP to HTTPS`를 선택해서 항상 HTTPS로 요청이 가도록 설정한다.


비용을 위해 기본 값 1천만 건에서 1백만 건으로 낮췄다.

  • 굳이 보안이 필요하지 않다면 비활성화해도 된다.
  • [업데이트] 비용이 너무 많이 들어서 비활성화했다.

나머지는 다 기본값으로 (설정에서만 수정)

  • 우선 비용을 위해 `북미, 유럽, 아시아, 중동 및 아프리카에서 사용`을 선택했다.
  • 그리고 Route 53에서 등록한 도메인을 ` 대체 도메인 이름(CNAME)`에 입력하면 된다.
    (도메인을 등록하는 부분은 개인정보도 많이 들어가고 간단한 작업이니 넘어가겠다.)
  • 그리고 SSL 인증서가 없다면 `인증서 요청`을 클릭해서 생성한다. (인증서는 반드시 버지니아 북부에 있어야 함.)
    • 인증서 생성 부분은 바로 밑에 설명이 되어있다.
  • 기본값 루트 객체가 있는데 거기에 index.html을 입력한다.
  • 이걸 해야 배포도메인 `*.cloudfront.net`만 입력해도 알아서 index.html이 붙어 페이지가 뜬다.

SSL 인증서 요청 > 퍼블릭 인증서 요청


인증서를 요청한 후 Route 53에 레코드를 생성해야 한다.


Route 53에서 산 도메인이 있다면 일치 항목이 있을 것이고, `레코드 생성`을 해서 생성하면 된다.

  • AWS Certificate Manager > 인증서를 들어가서 도메인에 등록한 도메인이 있고,
    Route 53 > 호스팅 영역 > mydomain (mydomain.net) 클릭 레코드에 인증서에 있는 CNAME이 등록되어 있으면 잘 등록한 것이다.

인증서를 다 등록됐다면 인증서를 넣고 CloudFront 배포 생성을 하면 된다.


  • 마지막으로 Route 53 > 호스팅 영역 > mydomain(mydomain.net) 클릭 > 레코드 생성을 들어가서 CloudFront에 등록한 도메인을 배포에 선택하면 설정은 완료됐다.

 

Access Denied 해결을 위한 정책 업데이트

  •  이전에 CloudFront 배포 생성을 하면서 기억해 두고 넘어갔던 버킷 정책을 업데이트하겠다.

원본 > 내 CloudFront > 편집


정책 복사 > S3 버킷 권한으로 이동


복사된 정책을 붙여준다.

이렇게까지 하면 Access Denied가 안 뜨고 잘 나올 것이다!

최종 CDN 아키텍처

 

 

 

언제나 잘못된 설명이나 부족한 부분에 대한 피드백은 환영입니다🤍

728x90