간단한 REACT 앱을 서버에 올리도록 해보자.
사용할 AWS 리소스는 S3, CloudFront 2가지 인데 각각의 역할은 다음과 같다.
S3: 정적 웹사이트 호스팅 기능을 제공하는데 정적 파일을 업로드 하면 이를 웹 서버로 사용 할 수 있다.
CloudFront: 캐시 서버로 사용자와 S3 사이에서 속도를 빠르게 할수 있고 HTTP 호출을 HTTPS 로 적용하여 보안을 강화 할수도 있다.
먼저 설정을 진행하도록 한다.
버킷 만들기
버튼 클릭웹서버로 만들어주기 위해 정적웹사이트 호스팅 설정을 해주어야 한다.
생성한 버킷을 클릭하여 준 후 속성
탭을 클릭한다.
속성탭의 제일 하단에 정적 웹 사이트 호스팅
기능이 있는데 현재 비활성으로 되어있다.
편집 버튼을 눌러준다.
정적 웹 사이트 호스팅을 활성화 해주고 인덱스 문서를 설정해 준 후 하단의 변경사항 저장 버튼을 클릭해준다.
설정이 되고 저장후 버킷 웹 사이트 엔드포인트
가 나오는데 해당 주소를 호출하여 업로드한 리엑트 서버를 접속할 수 있다.
하지만 해당 주소로 접속을 하게 되면 403 에러가 발생되는데 이는 버킷에 업로드된 객체에 접근권한이 없어 페이지 노출이 되지않는 문제다.
S3 의 객체 접속 권한을 주기 위해 권한
탭으로 이동 후 버킥 정책 영역의 편집 버튼을 클릭해준다.
정책 생성기 버튼을 클릭 후 노출되는 페이지에서 다음 설정을 진행한다.
: Select Type of Policy: S3 Bucket Policy
: Principal: *
: Actions: GetObject
: Amazon Resource Name(ARN): 이전 페이지의 arn 정보를 복사해서 넣어준다.
값을 모두 입력후 Add Statement 버튼 클릭 후 하단에 생성되는 Generage Ploicy 버튼 클릭
출력되는 정보를 복사해서 이전 페이지의 버킷 정책 항목에 입력해준 후 하단의 변경 사항 저장
버튼 클릭
( 정책을 붙여 넣기 할때 Resource 에 /* 를 추가해주어야 정상적인 파일 접근이 가능하다 )
다시 버킷 웹 사이트 엔드포인트를 호출하여 정상적으로 페이지 접속이 되는지 확인한다.
S3 설정이 끝났다면 실제 사용자가 접속할 캐시 서버인 CloudFront 설정을 해주자.
배포 생성
버튼을 클릭하여 배포.배포 도메인 이름
을 호출하여 업로드한 앱이 정상적으로 실행되는지 확인한다.SPA
: /user 호출시 index 에서 user component 를 바인딩.S3
: /user 호출시 /user 폴더의 index 파일을 찾아 호출오류 페이지
탭의 사용자 정의 오류 응답 생성
버튼을 클릭한다.HTTP 오류 코드
: 403오류 응답 사용자 정의
: 예응답페이지 경로
: /index.htmlHTTP 응답 코드
: 200무효화
탭 이동 → 무효화 생성
버튼 클릭무효화 생성
버튼을 클릭한다.
좋은 정보 감사합니다!
덕분에 배포 잘 마쳤습니다 :)