이전 글에서 EC2 인스턴스 생성 및 우분투 환경 세팅 과정을 확인할 수 있습니다.
1. CodeDeploy 애플리케이션 및 배포 그룹 생성
본격적으로 애플리케이션을 생성하기 전에 역할을 하나 더 만들어줄 겁니다. IAM > 역할 > 역할 생성으로 들어갑니다.
위처럼 AWS 서비스, CodeDeploy를 선택하고 넘어갑니다.
그러면 EC2 역할과는 다르게 자동으로 선택되어 있습니다. 바로 넘어갑니다.
알아보기 쉽게 이름을 정해주고 생성했습니다. 이제 CodeDeploy 애플리케이션과 그룹을 생성합시다!
CodeDeploy > 애플리케이션을 선택합니다.
오른쪽 상단에 있는 애플리케이션 생성을 누릅니다.
애플리케이션 이름을 작성하고 컴퓨팅 플랫폼은 EC2/온프레미스를 선택합니다. 애플리케이션 이름 뒤에 -CD를 붙이면 훨씬 찾기 쉽습니다. (ex. MyProject-CD)
만들어진 애플리케이션으로 들어가 배포 그룹을 생성합니다. 저는 이미 만들어둔 상태입니다.
배포 그룹 이름을 작성합니다. 제가 서비스 배포하면서 애플리케이션을 여러 번 만들어봤는데 저렇게 작성하는 게 나중에 알아보기 쉽습니다. 정말로...
서비스 역할은 위에서 만든 MyCodeDeployRole를 선택합니다. 배포 유형은 현재 위치를 선택합니다.
환경 구성은 Amazon EC2 인스턴스를 선택하고, 이전에 만들어둔 EC2를 선택합니다.
CodeDeploy 에이전트는 바로 한 번 설치합니다. 업데이트는 직접 하는 게 편합니다. 배포 설정은 건들지 않고, 로드 밸런서는 비활성화 해줍니다.
이렇게 하면 배포 그룹까지 생성됩니다.
2. S3 버킷 생성
S3로 들어가 버킷 만들기를 선택합니다.
버킷 이름을 작성하고, 객체 소유권은 ACL 비활성화로 선택합니다.
그리고 퍼블릭 액세스 차단을 비활성화합니다. S3 외부 접근을 위해서 퍼블릭 액세스 접근이 허용되어야 합니다.
나머지 버킷 버전 관리, 태그, 기본 암호화는 디폴트 값으로 두고 버킷을 생성합니다.
혹시라도 SpringBoot와 S3 버킷 연동을 바로 하고 싶다면 아래 글을 확인해 주세요.
만들어둔 버킷을 선택하고 권한 설정으로 들어갑니다.
버킷 정책을 수정해야 합니다. 오른쪽에 있는 편집 버튼을 클릭하고 아래 코드를 작성합니다.
{
"Version": "2012-10-17",
"Id": "Policy1687869450617",
"Statement": [
{
"Sid": "Stmt1687869445984",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "버킷 ARN/*"
}
]
}
위 코드를 복사해서 붙여 넣어주세요. Resource 부분에 버킷 ARN은 위 사진에 나와있는 버킷 ARN을 그대로 복사해서 넣어주세요. 반드시 ARN 뒤에 /* 를 붙여주세요. 마지막으로 아래에 있는 변경 사항 저장을 누릅니다.
3. CodeDeploy 에이전트 실행
여기서부터는 모두 EC2 인스턴스 환경에서 진행합니다.
EC2 인스턴스에 연결합니다.
sudo apt-get update
sudo apt-get install ruby
sudo apt-get install wget
먼저 ruby 와 wget 을 설치합니다.
만약 ruby 설치 과정에서 버전 문제가 발생한다면 아래 글을 참고 부탁드립니다.
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
# 실행
sudo service codedeploy-agent start
이후 에이전트가 실행 중인지 확인하고, active(running) 상태가 아니라면 start 명령어를 입력합니다.
여기까지 하면 EC2 인스턴스 생성 및 CodeDeploy, S3 연결까지 끝났습니다. 이제 다음 글에서 GithubActions와 연동하여 CI/CD 파이프라인 구축 과정을 정리하겠습니다.
지금까지 글을 보셨다면 알겠지만, 인스턴스나 애플리케이션, 그리고 버킷까지 나중에 이름을 적어야 할 상황이 옵니다. 그래서 각각 이름을 구분하기 쉽게 작성하는 것이 정말 중요합니다. 인스턴스랑 애플리케이션 이름을 비슷하게 지으면 나중에 고생합니다.(저처럼)
EC2 : MyProject-EC2
CodeDeploy : MyProject-CD
CodeDeploy 배포 그룹 : MyProject-CD-Group
S3 : myproject-bucket (대문자 사용 불가능)
'Dev > AWS' 카테고리의 다른 글
[AWS] EC2 + CodeDeploy + S3 + GithubActions 조합으로 자동화배포 구축하기 - (3) GithubActions 연동 (0) | 2024.06.24 |
---|---|
[AWS] EC2 + CodeDeploy + S3 + GithubActions 조합으로 자동화배포 구축하기 - (1) EC2 인스턴스 생성 및 세팅 (0) | 2024.04.12 |
[AWS] io.awspring 라이브러리를 활용하여 SpringBoot & Amazon S3 연동하기 (0) | 2024.03.12 |
[AWS] CodeDeploy의 scripts/deploy.sh를 제대로 작성해보자 (1) | 2024.01.29 |
[AWS] EC2 배포 일주일 삽질 스토리 (feat. 환경변수) (1) | 2024.01.27 |