반응형
CodeDeploy 란?
- aws의 배포 서비스
- S3는 Jar 파일을 전달하기 위해서 사용한다.
- code deploy는 저장기능이 없기 때문에 빌드 결과물을 받아서 code deploy가 가져갈 수 있도록 보관하는 공간이 필요하고 그 역할을 S3 가 한다.
💡 code deploy 에서는 깃허브 코드를 가져오는 기능을 지원하기 때문에, 빌드와 배포를 모두 할 수 있다. 하지만 빌드없이 배포만 필요할 때 대응하기 어렵다.
빌드와 배포를 분리해서 배포만 필요할 경우 빌드된 jar를 재사용하면 되지만, 빌드와 배포를 모두 하게되면 항상 빌드를 하게 되기 때문에 확장성이 떨어진다. 따라서 웬만하면 빌드와 배포를 분리하는 것을 추천한다.
IAM생성
ec2에 IAM 역할 추가하기
IAM 에서 사용자와 역할의 차이
- 역할
- AWS 서비스에만 할당할 수 있는 권한
- EC2, CodeDeply, SQS 등
- 사용자
- AWS 서비스 외에 사용할 수 있는 권한
- 로컬 PC, IDC 서버 등
EC2에서 사용할 codedeploy 역할 생성
EC2 서비스에 역할 등록 후 재부팅
EC2 에 codedeploy 에이전스 설치
Ubuntu Server용 CodeDeploy 에이전트 설치 - AWS CodeDeploy
출력을 임시 로그 파일에 쓰는 것은 Ubuntu Server 20.04에서 install 스크립트를 사용하여 알려진 버그를 해결하는 동안 사용해야 하는 해결 방법입니다.
docs.aws.amazon.com
wget https://{bucket-name}.s3.{region-identifier}.amazonaws.com/latest/install
# 한국 리전일 경우
wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install
# install 파일 실행 권한 부여
chmod +x ./install
# install 파일로 설치
sudo ./install auto
# 실행 상태 검사
sudo service codedeploy-agent status
codedeploy를 위한 권한 생성
IAM codedeploy 생성
code deploy > 애플리케이션 생성> 배포그룹 생성
S3, codedeploy, EC2 연동하기
EC2 에 파일 저장할 폴더 생성
mkdir ~/app/step2 && mkdir ~/app/step2/zip
appspec.yml 생성
- CodeDeploy 가 어떤 시나리오로 동작할 지 결정하는 파일
- 프로젝트 최상단에 appspec.yml 생성
version: 0.0
os: linux
files:
- source: / # codedeploy에서 전달해준 파일 중 destination으로 이동시킬 대상 지정(/:모든파일)
destination: /home/ubuntu/app/step2/zip/ # 지정 파일을 받을 위치
overwrite: yes
main.yml 에 배포 설정 추가
- name: Deploy to AWS EC2 from S3
run: |
aws deploy create-deployment \
--application-name ${{ env.CODE_DEPLOY_APPLICATION_NAME }} \
--deployment-config-name CodeDeployDefault.AllAtOnce \
--deployment-group-name ${{ env.CODE_DEPLOY_DEPLOYMENT_GROUP_NAME }} \
--s3-location bucket=$S3_BUCKET_NAME,key=$FILE_NAME.zip,bundleType=zip
배포 확인
배포 실패(1)
ec2와 codedeploy 의 태그가 달라서 발생한 오류
Codedeploy 배포 에러 [The deployment failed because no instances were found for your deployment group.]
배포 실패(2)
EC2 에서 에러 로그 확인
cat /var/log/aws/codedeploy-agent/codedeploy-agnet.log
~~ The specified key does not exist
해결
main.yml 파일 설정 오류: s3 key 수정
배포 실패(3)
에러로그 확인 > appspec.yml 이 없다는 에러
→ The CodeDeploy agent did not find an AppSpec file within the unpacked revision directory at revision-relative path
# /opt/codedeploy-agent/deployment-root/[UUID]/[UUID]/deployment-archive 로 이동하면
# 빌드관련 파일 존재
→ jar 파일만 압축해서 appspect.yml 파일이 없음.. → 전체 프로젝트 압축으로 변경
배포성공!
scripts/deploy.sh 파일 추가
EC2 자바11 설치
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install openjdk-11-jdk
반응형
'Study > 기타' 카테고리의 다른 글
웹 애플리케이션 개발 프로젝트 회고(1) 프로젝트 협업 도구 (0) | 2024.01.18 |
---|---|
springboot 프로젝트 AWS 프리티어로 배포하기(1) github actions, aws s3 연동 (0) | 2024.01.17 |
[spring, intellij] 테스트 코드 실행 오류 (0) | 2023.11.30 |
[github] main 브랜치 보호하기 ( commit, merge 금지 ) (0) | 2023.11.30 |
[mysql] 컬럼 순서 변경, 컬럼 설정 변경 (0) | 2023.11.30 |