REACT PROJECT AWS-S3 배포

개미는뚠뚠·2023년 1월 10일
0

AWS

목록 보기
1/1
post-thumbnail

AWS S3에 내가 만든 REACT 프로젝트를 배포하는 방법을 작성하려고 한다.
인프라 관련 경험이 있다보니 배포에는 자신이 있었지만, 생각보다 과정이 어려워서 나도 복습용으로 글을 정리해보려고 한다. 구글링을 참조하여 먼저 배포를 진행한 뒤 이렇게 매뉴얼 형식으로 글을 작성해보았다. 중간에 에러도 많이 났었고, 다양한 방법으로 시도했으나 지금 정리한 내용이 가장 깔끔하다고 생각한다🤧


React

1.배포할 프로젝트 준비하기

1-1. 내가 올리고자 하는 프로젝트 디렉토리를 준비하고, npm start(혹은 run dev)를 진행하였을 때 정상적으로 실행되는지 먼저 테스트.

1-2. [npm run build] 명령어를 통하여, build 파일 및 디렉토리 생성하기.(시간이 조금 걸릴수도 있음)


AWS

1.AWS-IAM 준비하기

AWS-IAM?

  • Identity and Access Management로 AWS 리소스에 대한 엑세스를 안전하게 제어할 수 있는 웹 서비스
  • 리소스를 사용하도록 인증 및 권한 부여된 대상을 제어

1-1. aws계정에 로그인 후 검색창에 IAM검색 후 나오는 [IAM 항목 클릭].

1-2. 항목 선택 시 다음과 같은 화면이 나오는데 좌측 [사용자] 메뉴 클릭.

1-3. 이후 나오는 화면에서 [사용자 추가] 버튼 클릭.

1-4. [사용자 추가] 버튼을 클릭하면 아래와 같이 입력하고 [다음:권한] 버튼 클릭.

1-5. 그 다음 나오는 화면에서는 [기존 정책 직접연결] tab 선택 후 아래와 같이 [AmazonS3FullAccess, CloudFrontFullAccess] 체크박스 활성화 후 [다음:태그] 버튼 클릭.

1-6. 이후 단계는 쭉쭉 넘어가는데 다음과 같은 화면이 나오면 [.csv 다운로드] 버튼을 눌러 잘 보관하고 있기.

1-7. 사용자에 정상적으로 생성이 되었는지 다시 한번 확인하면 IAM 사용자 생성 완료.


2.AWS-S3 준비하기

AWS-S3?

  • Simple Storage Service(S3)는 최고의 확장성, 데이터 가용성, 보안 및 성능을 제공하는 객체 스토리지 서비스
  • 데이터를 버킷 내의 객체(해당 파일을 설명하는 모든 메타데이터)로 저장하는 객체 스토리지 서비스

2-1. 검색창에 S3를 검색하고 [S3] 항목 클릭하면 다음과 같은 화면이 나오는데 [버킷 만들기] 버튼 클릭.

2-2. 이후 버킷 생성에 필요한 정보를 입력하는데 아래 이미지를 참조하여 작성.

2-3. 모든 과정을 마치고 [버킷만들기] 버튼을 누르면 다음과 같이 내가 만든 s3버킷이 생성된다.

2-4. 생성된 버킷의 이름을 눌러 세부 진입하면 [속성], [권한] tab을 아래와 같이 작업을 진행해준다.

2-4-1. [버킷] - [속성]tab 설정.

2-4-2. [버킷] - [권한]tab 설정.(복잡한 단계가 많아 추가 설명 진행)

2-4-3. [권한]tab 설정 중 버킷 정책 항목에서 [편집] 버튼을 누르면 다음과 같은 항목이 나오는데 빨간색 네모 박스의 [버킷 ARN]을 복사하고, [정책 생성기] 버튼을 클릭.

2-4-4. [정책 생성기] 버튼을 클릭하고 나면 다음과 같은 창이 나오는데 아래 이미지를 참조하여 동일하게 입력하고 [Add Statement] 버튼 클릭. 참고로, [ARN] 입력 부분에는 [arn:aws:s3:::생성한버킷명/*] 꼭 이렇게 입력을 해준다.

2-4-5. 이전 단계를 모두 마치면 밑에 step3항목이 나오는데 저기서는 그냥 [Generate Policy] 버튼을 누르고 등장하는 tab의 [json] 내용을 싹 다 복사해주면 된다.

2-4-6. 위 단계를 모두 마쳤다면 다시 버킷 정책으로 돌아와 복사한 내용을 아래와 같이 붙혀넣기 해주고, [변경 사항 저장] 버튼 클릭하면 S3에 관한 설정은 모두 마쳤다.


3.AWS-CLI 통해 코드 배포

AWS-CLI?

  • .html, .css, .js 및 이미지 파일과 같은 정적 및 동적 웹 콘텐츠를 사용자에게 더 빨리 배포하도록 지원하는 웹 서비스
  • CDN(Content Delivery Network or Content Distribution Network) : 콘텐츠를 효율적으로 전달하기 위해 여러 노드를 가진 네트워크에 데이터를 저장해서 제공하는 시스템
  • Edge Location이라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠를 제공
  • 중간 캐시 서버에서 콘텐츠 전달 - 캐싱을 통해 사용자에게 더 빠른 전송 속도를 제공 (서버 부하 감소)
  • 손쉽게 http 요청을 https로 리다이렉션 가능

3-1. 아래 URL에서 OS맞는 CLI를 설치해준다.
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html

3-2. 설치가 완료되면 [터미널]을 실행하고, [cd]명령어를 통하여 배포하고자 하는 프로젝트 경로로 이동한다.(아까 만들어둔 build 디렉토리 상단 경로)

3-3. 이후 터미널에 다음과 같이 명령어를 입력한다.

aws configure --profile [IAM 사용자 이름]

3-4. 위와 같은 명령어를 치면 다음과 같은 항목이 나오는데, IAM 사용자를 만들고 다운 받은 CSV내용을 순서대로 입력해준다.(1-6에서 저장한 CSV 파일을 말함)

Key ID : IAM 사용자 추가할 때 다운받았던 CSV 파일의 Access key ID
Access Key : IAM 사용자 추가할 때 다운받았던 CSV 파일의 Secret access key
region name : ap-northeast-2
output format : json

3-5. 모든 설정이 끝났다면 다음과 같이 명령어를 입력하여 배포 진행

aws s3 sync ./build s3://[S3 버킷 이름] --profile=[IAM 사용자 이름]

3-6. upload 단계가 끝나면 배포가 완료.

4.최종 확인

4-1. AWS-S3로 돌아와서 배포된 파일들을 확인하고, [속성] tab 클릭.

4-2. 밑으로 쭉 내려서 [정적 웹 사이트 호스팅] 메뉴 하단의 url을 클릭.

4-3. 정상적으로 내가 만든 프로젝트가 표출되는 내용을 확인할 수 있다!


블로그 글을 이렇게 열심히 써본건 너무 오랜만? 아니 처음인데 생각보다 시간이 후딱 지나갔다...
사실 지인에게 도움을 주고 싶은 마음에 시작했는데 이걸 보고 성공적으로 배포가 되었다면 나도 기쁠 거 같다! 물론 나도 복습하는 과정에서 시작했지만 완성된 글을 보니 조금 뿌듯하기도 하고,,,(코쓱) 암튼 AWS-S3 배포글은 여기서 끝😀

0개의 댓글