이전에 VM에 우분투 리눅스를 설치하여 배포했던 것을 떠올리며 이번에는 AWS를 이용하여 배포를 할 수 있도록 해보았다..!
- AWS 가입
- AWS에 EC2 생성 및 설정
- AWS에 S3 생성 및 설정
- AWS에 CodeDeploy 생성 및 설정
- yaml파일 설정(github action을 사용할 수 있도록 연결)
우선 이번 게시글은 AWS 설정에 관해서 하나씩 해보며 글을 작성해보아야겠다.
velog에 진행하며 글을 작성한 뒤,
다시 한 번 정리하며 notion에 자료를 정리해보니 보다 기억에 잘 남는 것 같아서 이번에도 그렇게 해볼 예정!
진행하며 참고한 글 링크
(1) AWS에 가입한 뒤 aws의 검색창에 EC2를 검색하여 아래 이미지처럼 화면이 뜨면 우측 상단에서 국가 및 지역을 ap-northeast-2로 변경한 다음 인스턴스 시작 클릭

(2) 이름은 잘 넣어주고, 우분투 서버는 프리티어 사용 가능한 버전으로 선택

(3) 인스턴스 유형은 t2.micro로 선택(유일한.. 프리티어 사용 가능)

(4) 키 페어는 서버 접속 시 인증을 하기 위한 키 발급으로
"새 키 페어 생성"을 클릭하여 아래 이미지처럼 뜨면 키 페어의 이름을 넣고, RSA 유형으로 .pem 파일로 생성해주자

생성하면 지정한 위치에 아래처럼 들어가있다!

(5) 네트워크 설정에 "편집"

클릭하게되면 아래 이미지처럼 추가적으로 설정을 해줄 수 있도록 바뀌니, 설정이 필요한 경우에 사용!

(6) 아래의 방화벽 및 인바운드 보안 그룹은 아래처럼 설정하였다.
우선 방화벽은 기본적으로 적용되어 있는 것에서 건들지 않았고,

인바운드 보안 그룹 규칙은 기본적인 SSH 설정과 http, https 설정과 함께 모든 IP주소에서 엑세스를 허용할 수 있도록 0.0.0.0/0 과 ::/0으로 설정해주었다.

(7) 스토리지 구성은 인스턴스의 저장공간으로, 기본적으로 8GB가 설정되어있으나 프리티어에서 30GB까지 제공해준다고 되어있어 20GB로 지정해주었다.

(8) 이어, 아래의 요약을 확인해보고 "인스턴스 시작"을 클릭해주자.


성공시 위 이미지처럼 알려준다..!
(1) EC2의 인스턴스에 오면 하단에 해당 인스턴스의 태그 탭으로 이동할 수 있다.

(2) 태그 탭에서 아래의 태그 관리 탭 클릭

(3) key값을 넣어주고 저장

여기서 tag를 설정해주는 이유는,
CodeDeploy에서 tag group을 지정하는데,
이 때 CodeDeploy에서 설정한 key값과 EC2에서 지정한 tag의 key값을 매칭해서
해당 EC2 인스턴스에 CodeDeploy에 정의한 동작을 실행한다고 한다.
(4) "보안" 탭에 들어가서 "lanch-wizard-1" 클릭하면 Security group 설정 화면으로 전환

체크박스를 체크해주면 아래처럼인바운드 규칙을 편집할 수 있도록 화면이 나온다.

해당 인스턴스로 요청 허용해줄 IP를 설정해주자. (IPv4와 IPv6의 any 설정)

(1) AWS에 S3를 검색하여 버킷 만들기에 들어와 버킷을 새로 생성할 것인데,
이 때 버킷 이름은 중복 없이 유일한 이름이어야 한다.

=> 작성하고 보니 버킷 이름에는 대문자 불가능하다고 함..!
kimlrlrwebbucket으로 수정해주었다..^^
(2) IAM을 이용한 권한 부여를 해주기 때문에 퍼블릭 액세스는 차단으로 유지

다른 설정 더 건들 것 없이 버킷 생성해주면 아래처럼 뜬다.

(1) AWS 검색창에 IAM 입력하여 들어오면 액세스 관리에서 역할 > 역할 생성

(2) 사용 사례에 EC2 선택

(3) 권한 추가에서 AWSCodeDeployFullAccess 와 AmazonS3FullAccess 그리고 AmazonEC2FullAccess를 검색하여 선택

(4) 역할 이름 작성 후 역할 생성

아래는 내가 선택했던 것들 이거 맞나? 하는 식으로 보여주는 것 같으니 확인해보고 역할 생성 클릭해주면 된다.

그럼 아래처럼 금방 만든 역할을 확인할 수 있다.

(5) EC2 콘솔 > 인스턴스 선택 > 작업 > 보안 > IAM 역할 수정

(6) 금방 만들어준 역할 부여해주기

(1) 앞에서 EC2 IAM을 생성해준 것처럼 CodeDeploy에 대한 IAM을 생성해주기 위해,
IAM > 액세스관리 > 역할 > 역할생성 순서로 들어간다.
(2) 사용 사례로 CodeDeploy 선택

(3) 이름만 생성해주고 역할 생성 클릭해주기

(1) CodeDeploy 검색 > 애플리케이션 > 애플리케이션 생성 클릭

(2) 애플리케이션 이름 작명 > EC2/온프레미스 선택 > 애플리케이션 생성

(3) 애플리케이션 생성이 완료되면 배포 그룹을 생성해준다.

(4) 배포를 진행하기 위해 배포 그룹을 설정해준다.

서비스 역할은 일전에 만들어둔 code-deploy IAM 선택해주기

이후 현재 위치 선택 후, Amazon EC2 인스턴스 선택 > 키에 Name 입력하고 값에 배포할 EC2 인스턴스 이름 입력

이렇게 했을 때, 위처럼 일치하는 인스턴스가 1개 이상 표시되는 경우 배포할 EC2가 선택된 것이다.
다른 설정들 건들지 않고 내리다 제일 아래에 있는 로드밸런서 부분의 로드 밸런싱 활성화만 체크 해제한 뒤 "배포 그룹 생성" 클릭

Github actions가 S3로 파일 업로드, Codedeploy를 이용해 배포할 수 있도록 권한을 주기 위해 EC2와 Codedeploy에서 "역할"을 지정해준 것과는 달리, "사용자"를 생성해주어야 한다.
(1) IAM 검색해서 들어간 뒤 > 액세스관리 > 사용자 > 사용자 생성 클릭

(2) 사용자 이름 작명해주고 다음 클릭

(3) 직접 정책 연결 선택 후 AWSCodeDeployFullAccess와AmazonS3FullAccess, AmazonEC2FullAccess 검색하여 정책 연결해주기

(4) 새 태그 추가 > 검토 > 사용자생성

(5) 사용자 생성이 완료되었으면 액세스 키 만들기를 클릭해주자

(6) CLI 선택하고 다음

(7) 태그 값 (선택사항) 넣어주고 액세스 키 만들기 클릭

(8) 액세스 키 ID와 비밀 액세스 키가 나온다! ".csv"파일 다운로드해두기!

(9) github의 배포를 해주려는 레파지토리의 secrets에 해당 액세스 키 ID와 비밀 액세스 키를 추가해주자.
