EC2에 react 자동 배포하기2 (github actions + S3 + codedeploy) - EC2, CodeDeploy, IAM 설정

eeapbh·2022년 12월 7일
0

AWS

목록 보기
13/15

github actions과 aws CodeDeploy를 사용하면 수정사항들이 잇을때마다 build를 다시하고 배포하는 작업을 자동화 할수 있다.

진행흐름

진행흐름은 이러하다.

  1. git 에서 push -> 정해놓은 branch에서 push가 일어나면 build -> s3에 build 파일 업로드(github actions)
  2. s3에 있는 build 파일 ec2에 EC2에 업로드(CodeDeploy)

s3 -> CodeDeploy -> ec2 단계를 거치는 이유는

  • github actions은 바로 ec2에 접근하여 명령을 수행할 수 없고
  • CodeDeploy는 저장공간이 없고 단지 역할만 수행하기 때문에 이런 단계가 생긴다고 한다.

권한설정

위의 단계를 밟기 위해 github actions와 CodeDeploy가 앞에서 만든 내 s3와 ec2에 접근해서 작업을 할 수 있는 권한을 설정해줘야 한다.
-> IAM 설정을 통해 권한 설정을 한다.

EC2 CodeDeploy agent 설치

EC2에 CodeDeploy가 접근하여 파일을 업로드 할수 있도록 code deploy agent를 설치해야한다.

sudo apt-get update
sudo apt-get install ruby
sudo apt-get install wget
cd /home/ubuntu
wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto

서비스가 실행중인지 확인하려면 다음 명령을 실행한다.

sudo service codedeploy-agent status


이런식으로 CodeDeploy agent is runnung이면 성공

EC2 IAM 설정

이제 우리가 만든 EC2가 s3와 CodeDeploy를 이용할 수 있도록 권한 설정을 해줘야 한다.

  • IAM -> 역할 -> 역할 만들기

  • EC2 선택 -> 다음버튼 클릭

  • 권한 정책 연결

  1. AWSCodeDeployFullAccess
  2. AmazonS3FullAccess
    두개 권한을 체크하고 다음 버튼 클릭
  • 역할 이름 설정하고 정책 잘 선택됐는지 확인

태그는 건너뛰어도 됨 -> 역할생성 버튼 클릭

  • 생성 된 IAM을 EC2에 연결해준다.
  • 보안 -> IAM 역할 수정
  • 만들어둔 IAM role을 선택한다.

CodeDeploy

CodeDEploy IAM 설정

CodeDeploy가 S3에서 파일을 받아서 EC2에 오려야 하기 때문에 해당 작업을 위한 권한 설정이 필요하다.

  • IAM -> 역할 -> 역할 만들기
  • 다른 aws서비스 사용사례 CodeDeploy를 선택하고 Codedeploy를 체크한다.
  • 선택 되어있는 역할 그대로 두고 다음 버튼 클릭
  • 역할 이름 설정하고 생성완료하기

CodeDeploy 애플리케이션 생성, 설정(배포그룹 설정)

  • 애플리케이션을 생성한다.

권한 설정을 해줬으니 CodeDeploy 어플리케이션을 생성해줘야 한다.

  • CodeDeploy -> 애플리케이션 -> 애플리케이션 생성

https://ap-northeast-2.console.aws.amazon.com/codesuite/codedeploy/application/new?region=ap-northeast-2

  • 컴퓨팅 플랫폼 : EC2/온프레미스 선택
  • 배포그룹생성
    배포를 하기 위해선 배포그룹이 필요하다.
    화면 하단에 배포그룹생성 버튼 눌러서 배포그룹을 만든다.
  1. 이름, 서비스 역할

    이름을 설정하고 서비스 역할은 클릭하면 생성했던 IAM이 뜬다.

  2. 배포유형, 환경 구성
    배포 유형 -> 현재위치
    환경 구성 -> Amazon EC2 인스턴스
    태그 그룹의 키는 반드시 Name으로 설정, 이후 만들어놓은 EC2선택

  3. 배포 설정, 로드밸런서
    AWS Systems Manager를 사용한 에이전트 구성은 건들지 않았다.
    배포 설정도 설정 되어있는 그대로 두고(CodeDeployDefault.AllAtOnce),
    로드 밸런서의 '로드 밸런싱 활성화' 체크박스 해지

-> 배포 그룹 생성

다음 글은 github actions을 통해서 s3에 파일을 자동으로 업로드 하는 작업을 다루겠다.

Reference

0개의 댓글