TIL-59, AWS Deploy 과정
EC2 생성 및 연결
인스턴스 시작을 눌러 EC2를 생성해준다.
(프리티어로 사용 가능한 Ubuntu를 사용하자)
이후 설정들도 프리티어로 선택 후, 키 페어 생성 창이 뜨면
키 페어 이름을 작성한 뒤 ‘키 페어 다운로드’ 버튼을 클릭하고 인스턴스 시작을 누른다
생성된 인스턴스를 클릭하고 체크박스를 체크, 연결을 클릭하면
‘SSH 클라이언트’ 탭에서 안내하는 대로
chmod 400 <방금 만든="" 키페어=""> 를 입력해 권한을 설정하고,방금>
ssh -i ~~~ 로 시작되는 명령어를 키페어를 다운받은 경로에서 입력해 실행하면 EC2가 연결된다.
연결된 EC2에서 원하는 서버를 Clone 해온 뒤, sudo npm start
를 이용해 서버를 실행시킨다.
이 상태에서는 아직 서버에 접속해도 오류가 뜰 텐데, 보안그룹을 설정하지 않아서이다.
다시 인스턴스 창으로 가서, 보안 그룹 이름을 확인한다.
그 후 좌측 내비게이션 바에서 보안 그룹으로 이동해 위에서 확인한 보안 그룹 설정을 할 수 있다.
해당 보안 그룹을 선택 후 인바운드 규칙에서 인바운드 규칙 편집을 눌러준다.
규칙 추가를 눌러 0.0.0.0/0 과 ::/0 을 추가해 모든 IP에서 접속을 허용한다.
그럼 다시 서버에 접속해보면 정상적으로 접속이 가능한 것을 확인할 수 있다..
S3
S3에 빌드할 클라이언트 폴더에서 .env 파일을 만들어 주고,
REACT_APP_API_URL 환경 변수를 EC2 주소로 넣어준다. (http 또는 https 필수 입력)
해당 클라이언트 폴더에서 npm run build
를 입력해 빌드를 진행한다.
AWS S3에 접속해 버킷 만들기를 클릭해 버킷을 만들어 준 뒤,
만들어진 버킷을 클릭해 속성탭에서 정적 웹 사이트 호스팅을 활성화, 인덱스 문서와 오류 문서를
index.html로 설정해준 뒤 저장한다.
이제 속성 탭에서 가장 아래로 내려보면 엔드포인트는 발급이 되었지만,
빌드된 어떠한 것들과 연결되지 않았기 때문에 버킷에 빌드 파일을 담아줘야 한다.
객체탭에 들어가 업로드를 누른 뒤, 처음 npm run build를 통해 생긴 ‘build 폴더 안의 파일들’을
드래그 앤 드랍 방식으로 간편하게 옮겨준 뒤 업로드한다.
그 후, 버킷을 클릭해 권한 탭으로 이동, 퍼블릭 액세스 차단을 모두 비활성화 해주고,
버킷 정책 부분에서 편집을 클릭, 정책 생성기로 들어가준다.
Select Type of Policy는 S3 Bucket Policy
를 선택,
Principal은 ‘*‘을 입력,
Actions는 GetObject
를 선택,
Amazon Resource Name은 arn:aws:s3:::<버킷 이름>/*
를 입력해준 뒤
정책을 생성해 주고, 생성된 정책을 복사한 뒤 정책에 붙여넣어준다.
이 후 버킷의 속성탭으로 이동해 가장 아래쪽에 엔드포인트에 접속해보면
빌드한 클라이언트가 열리는 것을 확인할 수 있다.
RDS
RDS에 접속, 데이터베이스를 클릭한 뒤 데이터베이스 생성을 클릭한다.
MySQL을 선택하고 프리티어 옵션을 선택,
설정에서 이름과 암호등을 입력한다.
연결 옵션에서 퍼블릭 액세스 가능을 ‘예’로 체크하고,
데이터베이스 포트는 흔히 사용되는 3306 대신 다른 번호 (13306)을 이용한다.
미리 설정해둔 데이터베이스가 있다면 추가 구성 토글에서 초기 데이터베이스 이름을 입력해준다.
RDS생성까지는 시간이 꽤 걸린다.
생성된 RDS를 클릭한 뒤 엔드포인트를 찾아서 복사, 터미널에서
mysql -u <이름> --host <엔드포인트> -P <포트> -p
를 입력한 뒤,
따라나오는 창에 패스워드를 입력하면 RDS 연결이 완료된다.