github actions과 aws CodeDeploy를 사용하면 수정사항들이 잇을때마다 build를 다시하고 배포하는 작업을 자동화 할수 있다.
진행흐름은 이러하다.
s3 -> CodeDeploy -> ec2 단계를 거치는 이유는
위의 단계를 밟기 위해 github actions와 CodeDeploy가 앞에서 만든 내 s3와 ec2에 접근해서 작업을 할 수 있는 권한을 설정해줘야 한다.
-> IAM 설정을 통해 권한 설정을 한다.
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가 s3와 CodeDeploy를 이용할 수 있도록 권한 설정을 해줘야 한다.
IAM -> 역할 -> 역할 만들기
EC2 선택 -> 다음버튼 클릭
권한 정책 연결
태그는 건너뛰어도 됨 -> 역할생성 버튼 클릭
CodeDeploy가 S3에서 파일을 받아서 EC2에 오려야 하기 때문에 해당 작업을 위한 권한 설정이 필요하다.
권한 설정을 해줬으니 CodeDeploy 어플리케이션을 생성해줘야 한다.
이름, 서비스 역할
이름을 설정하고 서비스 역할은 클릭하면 생성했던 IAM이 뜬다.
배포유형, 환경 구성
배포 유형 -> 현재위치
환경 구성 -> Amazon EC2 인스턴스
태그 그룹의 키는 반드시 Name으로 설정, 이후 만들어놓은 EC2선택
배포 설정, 로드밸런서
AWS Systems Manager를 사용한 에이전트 구성은 건들지 않았다.
배포 설정도 설정 되어있는 그대로 두고(CodeDeployDefault.AllAtOnce),
로드 밸런서의 '로드 밸런싱 활성화' 체크박스 해지
-> 배포 그룹 생성
다음 글은 github actions을 통해서 s3에 파일을 자동으로 업로드 하는 작업을 다루겠다.