TL;DR
1. S3에 버킷을 만들고 S3에 리액트 빌드파일을 업로드한다.
2. 클라우드프론트의 Origin 을 S3로 설정한다.
3. Route53 으로 호스팅중인 URL의 레코드에 클라우드프론트를 추가한다.
버킷만들기 클릭-> '모든 퍼블릭 엑세스 차단' 항목 체크 해제하고 나머진 모두 default 값으로 버킷 생성.
나중에 cloudfront 를 통해 사용자 접근제어를 할것이기에 퍼블릭 엑세스 차단을 해제한다.
만들어진 버킷에 리액트 빌드파일을 업로드 한다. cra와 aws cli 를 이용한다면 다음 명령어를 사용해 빌드와 업로드를 처리할 수 있다.
react-scripts build && aws s3 sync ./build s3://YOUR-BUCKET-NAME
이걸로 S3 설정은 끝.
서비스를 전세계적으로 배포하기 위해, 클라우드프론트를 써서 관리한다.
protocol policy 의 경우, redirect HTTP to HTTPS 를 선택한다. default root object 는 index.html 로 설정한다.
지금단계에서 다른 부분은 건드리지 말고, create distribution 을 누르면 클라우드프론트를 통한 배포가 시작되고 클라우드프론트 기본 url 이 제공된다. 첫 설정에는 대략 5~30분 정도 걸린다.
namecheap 등에서 도메인을 구입하고, route53 의 NS유형 값/트래픽 라우팅 대상에 적혀있는 4개의 주소를 도메인 구입처에 입력하면 route 53이 도메인을 호스팅하게 된다.
호스팅영역에 들어가 자신이 호스팅하고자 하는 도메인을 선택한다.
레코드 생성-> 레코드 이름은 비워두던가, www 처럼 원하는걸 입력. 레코드 유형은 A- IPv4 주소로 설정.
별칭 항목을 체크하면 클라우드프론트 배포에 대한 별칭 항목이 나온다. 클릭해준다.
2번에서 4번까지를 AAAA 레코드에 대해서도 반복한다.
cloudfront 로 돌아가, 배포중인 distribution 의 설정을 변경에 들어간다. CNAMEs 에 자신이 route 53에 입력했던 레코드 이름을 입력한다. Custom SSL Certi 를 체크해 도메인의 SSL 인증을 받는다.
좋은 글 감사합니다. react앱을 배포하는데에 많은 도움이 되었습니다.