AWS EC2와 Github Actions로 프론트엔드 CI/CD 구축하기 1, 2, 3편을 통해 우리는 CI/CD에 필요한 AWS 설정을 해주었다.
이번에는 인스터스와 내 프로젝트를 연결하기 위한 몇 가지 작업들을 수행할 예정이다.
Github Actions가 우리 프로젝트와 AWS에 접근해야하는데 이 때 IAM을 통해 만들었던 Access Key와 Secret Access Key가 있어야 접근할 수 있다.
따라서 우리는 우리의 프로젝트가 있는 레포지토리에 Access Key와 Secret Access Key를 등록할 것이다.
레포지토리에 keyfmf 등록해서 사용하는 이유는 보안 때문이다.
Github Actions를 설정하기 위해서는 관련 스크립트 파일을 만들어서 레포지토리에 올려놓아야하는데 여기 스크립트에 우리 키가 그대로 노출되면 악용될 위험이 크기 때문에, 레포지토리에다가 시크릿 키로 등록해놓아야 한다.
설정 -> Secrets and variables -> Actions로 이동하자.
그럼 다음과 같은 화면이 나오는데 우측 New repository secret 버튼을 클릭해 차례대로 생성해주자.
나는 키들과 혹시 몰라 region 지역까지 설정해주었다.
지역은 본인이 선택한 지역의 이름을 넣어주면 된다(ex : ap-northeast-2)
EC2 인스턴스 생성 과정에서 만들었던 .pem 파일을 우리 프로젝트에 넣자.
단 주의할 점은 우리의 pem키는 절대 노출되면 안 되기 때문에 .gitignore을 통해 pem을 관리하자.
이제 우리의 EC2 인스턴스에 접속해서 CI/CD에 필요한 여러가지 세팅을 해야한다.
인스턴스에 들어가서 연결 버튼을 클릭한다.
여기서 우리는 SSH 클라이언트를 통해 우리의 EC2에 접속할 것이다.
하단에 아까 포함한 pem 키페어가 포함된 접속 코드가 이미 준비되어 있으므로 이걸 복붙하면 된다.
이제 우리 컴퓨터 터미널을 통해 우리 프로젝트에 접속하자.
나는 VScode를 터미널을 통해 접속할 예정이다.
위의 ssh 클라이언트에서 복사한 주소를 터미널에 입력해준다.
yes를 입력해 진행해준다.
이런 경고 화면이 나오는 이유는 잘못된 permission으로 ssh 로그인을 접속하려고 했기 때문이다.
해결방법은 간단한데 . pem 파일의 permission을 private key의 permission으로 변경해주기만 하면 된다.
chmod 명령어를 사용해 644로 되어있던 permission을 400으로 바꿔주자.
600 으로 설정해도 되지만 실수로 개인키를 삭제하는 것을 방지하기 위해 읽기만 가능한 400을 권장한다.
아래 코드를 복사해서 붙여 넣어주자.
chmod 400 your-key.pem
chmod로 permission을 설정해주고 다시 접속하면 위와 같이 성공적으로 접속할 수 있다.
우리가 만든 EC2 인스턴스에서 AWS 관련 서비스를 사용하려면 AWS-cli를 설치해야 한다.
그리고 IAM에서 만들었던 사용자의 Access Key와 Secret Access Key를 등록해야 한다.
sudo apt install awscli
위의 코드를 통해 다운로드 해주자.
위와 같은 에러가 발생할 경우 아래의 코드를 차례로 입력한다.
sudo apt-get update
sudo apt-get install awscli
y를 눌러 진행한다.
모두 설치가 완료되었다면
aws --version
을 통해 확인해보자 아래와 같이 뜬다면 성공적으로 설치된 것이다.
aws cli 설치가 완료되었다면 이제 aws cli에 우리의 Access key, Secret Access key를 등록해야 한다.
aws configure
위의 명령어를 입력하면 아래의 사진과 같이 key를 등록할 수 있다.
Access key, Secret Access key, Region, output format을 차례대로 설정해주면 되는데
key들은 우리가 발급 받은 key를 그대로 입력해주면 되고 region은 나의 경우 ap-northeast-2로 설정해주었다.
output format은 json으로 설정해주면 된다.
EC2 인스턴스에서 Code Deploy를 사용하려면 Code Deploy Agent를 설치해야 한다.
주의할 점은 버전 별로 명령어가 다르기 때문에 잘 구분해서 해야한다.
버전 별 명령어는 여기서 확인할 수 있다.
나는 ubuntu 20.04를 설치했기 때문에 다음과 같이 명령어를 입력했다.
sudo apt update
sudo apt install ruby-full
sudo apt 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 > /tmp/logfile
aws s3 ls s3://aws-codedeploy-ap-northeast-2/releases/ | grep '\.deb$'
sudo ./install auto -v releases/codedeploy-agent_1.4.1-2244_all.deb > /tmp/logfile
설치가 완료되었다면 아래의 명령어를 통해 확인해보자.
sudo service codedeploy-agent status
위의 사진과 같이 code deploy agent의 Active가 active라면 성공적으로 설치된 것이다.
혹시 잘 실행되지 않는다면 임의로 실행시켜보자.
sudo service codedeploy-agent start
sudo service codedeploy-agent status