S3와 Codedeploy를 이용할 수 있는 권한을 가진 role(역할)을 생성해야 한다.
- AWSCodeDeployFullAccess
- AmazonS3FullAccess
IAM > Access management > Roles > [Create role] 버튼 클릭
S3FullAccess, CodeDeployFullAccess 항목 체크
AmazonS3FullAccess ✅
AWSCodeDeployFullAccess ✅
IAM 이름 설정
[Create role] 버튼 클릭하여 완료
EC2 홈 > 인스턴스 선택 > [Actions] 토글 열기 > [Security] 토글 열기 > [Modify IAM role] 클릭
토글을 열어 앞서 생성한 IAM role 선택후, [Update IAM role] 버튼 클릭
앞서 했던 것과 마찬가지로,
IAM > Roles > Create role로 들어가서 아래와 같이 설정
다른 설정은 만질 필요 없이, 이름설정 하는 부분에서 이름만 설정해주어 완료해줍니다.
CodeDeploy 홈 > Deploy > Applications > [Create application] 클릭
CodeDeploy 이름 설정, Compute platform은 EC2/On-premises로 설정
application을 만들었으면, 이젠 deployment group을 만들어줍니다.
[Create deployment group] 버튼 클릭!
Deployment group name 설정.
(주로 배포 환경별로 dev, prod 이런식으로 짓는다고 한다.)
Service role도 클릭하여 토글을 열고 앞서 만들어준 CodeDeploy IAM role 선택
Deployment type 및 Environment configuration은 아래와 같이 설정 (Amazon EC2 는 생성한 EC2 선택)
나머지 설정은 그대로두고, Enable load balancing 항목 체크해제 후
[Create deployment group] 버튼 클릭하여 완료
이전에 생성한 IAM role(역할)을 수행할 IAM user(사용자)를 생성하는 과정
IAM > Users > Creat user 로 들어가서
User name을 설정한 뒤, [Next] 버튼 클릭
Attach policies directly를 클릭하고
Permissions policies에서
AWSCodeDeployFullAccess 와 AmazonS3FullAccess 정책 체크한 뒤
[Next] 버튼 클릭 > [Create User] 버튼 클릭
이제, GitHub Actions가 사용자로 인증하기 위해 사용할 액세스 키를 생성해야 한다.
생선된 유저를 클릭하여 나오는 info 창에서
우측에 있는 [Create access key] 버튼 클릭
Application running outside AWS 항목 체크 (우리는 github actions를 사용하므로)
access key에 대한 간단한 설명을 적고 [Create access key] 버튼 클릭
🚨 한 번 생성한 access key는 다운로드 기회가 단 한 번 뿐이다.
때문에 .csv 파일을 다운로드하고 해당 파일을 안전하게 보관하도록 한다.
GitHub Actions 가 CD 프로세스 내에서 앞서 만든 키를 사용해 인증하기 위해서는 GitHub Repository Secrets 에 키를 저장해야 한다.
Repository → Settings → Secrets and variables → Actions → New repository secret
codedeploy-agent 설치 전, EC2 에는 npm, yarn 과 같은 패키지 매니저와 git, nvm, node 가 필수적으로 설치되어 있어야 한다.
1) AWS EC2 접속
2) AWS CLI 설치
$ sudo apt update
$ sudo apt install awscli
3) AWS configure 인증 정보 입력
AWS IAM 사용자의 액세스 키와 비밀 액세스 키를 인증 정보에 입력하여 저장합니다.
$ sudo aws configure
AWS Access Key ID [None]: AWS_ACCESS_KEY_ID 입력!
AWS Secret Access Key [None]: AWS_SECRET_ACCESS_KEY 입력!
Default region name [None]: ap-northeast-2
Default output format [None]: json
$ sudo apt update (위에서 이미 했으니 생략 가능)
$ sudo apt install ruby-full
$ sudo apt install wget
$ cd /home/ubuntu
$ wget https://aws-codedeploy-ap-northeast-2.s3.amazonaws.com/latest/install
$ chmod +x ./install
$ sudo ./install auto > /tmp/logfile (ubuntu 20.04인 경우에)
$ sudo ./install auto (ubuntu 20.04 가 아닌 경우)
$ sudo service codedeploy-agent status
CodeDeploy 에이전트가 설치되어 실행 중이면 "The AWS CodeDeploy agent is running"와 같은 메시지가 표시되어야 한다.
"error: No AWS CodeDeploy agent running"와 같은 메시지가 표시되면 서비스를 시작하고 다음 두 명령을 한 번에 하나씩 실행한다.
$ sudo service codedeploy-agent start
$ sudo service codedeploy-agent status
$ sudo vim /etc/init.d/codedeploy-startup.sh
아래 항목 복붙후 저장
#!/bin
sudo service codedeploy-agent restart
$ sudo chmod +x /etc/init.d/codedeploy-startup.sh