Code States/TIL

[0501] Section 2. 프로젝트 - AWS 배포 Day 3 - 마일스톤 7(프론트엔드 배포 자동화)

ki1111m2 2023. 5. 1. 11:35

실습과제: 프론트엔드 배포 자동화

 

Bare minimum requirement

  • 프론트엔드 프로젝트의 배포 자동화를 구현합니다.
    • GitHub Action 또는 CodePipeline + CodeBuild 조합 중 하나를 선택해서 구현합니다.
  • 프론트엔드의 변경사항이 S3에 배포가 되는지 확인합니다.
  • 정적 웹사이트 설정을 통해 S3 웹사이트 URL로 접근 시 웹 페이지가 제대로 보여야 합니다.

AWS S3 버킷 생성

퍼블릭 액세스 허용

정적 웹사이팅 호스팅 활성화 설정

버킷 정책 생성

 

GitHub Action을 이용하여 S3 버킷 배포 자동화 진행

yml 파일 작성 및 환경변수 추가(액세스 키, 시크릿 키)

트러블슈팅

Treating warnings as errors because process.env.CI = true.

yml 파일의 build 부분에서 env 설정 구문을 추가하여 해결

트러블슈팅

fatal error: An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied

구글링 결과, 정책 권한의 문제라고 함

s3 버킷의 정책에서 ListBucket 권한을 넣으면 해결된다고 했다

그러나 여전히 해결되지 않아서 버킷 삭제 후 재생성 하려했는데 버킷 이름에 오타가 있는 것을 발생..

오타로 인한 이슈였다 오타 수정 후 해결 완료

GitHub Action 성공

S3 버킷 내에 빌드 파일 배포 완료

S3 버킷 DNS 주소로 접근시 정상적으로 배포된 것을 확인할 수 있다

npm build 부분의 REACT_APP_ENDPOINT가 현재는 하드코딩 되어있다

이를 환경변수로 관리하기 위해 yml 파일을 수정했다

npm run build 대신 package.json 파일에 있던 해당 부분을 복사해서 넣은 후 환경변수로 넣었다

트러블슈팅

react-scripts: command not found

npm build로 돌렸을 때는 발생하지 않던 오류가 명령어로 바꾸니 발생했다

gpt가 알려주길 npm run build 앞부분에 환경변수를 넣어서 설정할 수 있다고 했다

코드를 아래와 같이 수정했다

package.json 파일의 build 부분에 있던 환경변수 부분은 삭제했다

배포에 성공했다