본문 바로가기
BackEnd/Project

[RealPJ] Ch04. AWS - appspec.yaml 작성

by 개발 Blog 2024. 9. 1.

공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다.

이번 시간에는 AWS CodeDeploy에서 사용하는 appspec.yaml 파일을 작성하는 방법을 다룬다. 이 파일은 CodeDeploy가 배포를 수행할 때 필요한 설정을 정의하는 중요한 구성 파일이다.

 

1. 프로젝트 초기 설정

1.1 리포지토리 클론

먼저, Github 리포지토리를 클론 하여 로컬 환경에 프로젝트를 가져온다.

 

1.2 IntelliJ에서 새로운 프로젝트 생성

IntelliJ에서 새로운 Spring Boot 프로젝트를 생성하고, 프로젝트 구조를 설정한다.

 

2. appspec.yaml 파일 작성

프로젝트의 루트 디렉토리에 appspec.yaml 파일을 생성하고, 다음과 같이 내용을 작성한다.

version: 0.0
os: linux
files:
  - source: /
    destination: /home/ubuntu/github_action
    overwrite: yes

permissions:
  - object: /
    pattern: "**"
    owner: ubuntu
    group: ubuntu

hooks:
  ApplicationStart:
    - location: scripts/gh_deploy.sh
      timeout: 60
      runas: ubuntu

files 섹션

  • source는 복사할 파일의 경로를, destination은 EC2 인스턴스 내의 배포 경로를 지정한다.
  • overwrite: yes는 기존 파일을 덮어쓸 수 있도록 설정한다.

permissions 섹션

  • object는 권한을 설정할 파일이나 디렉토리를 지정한다.
  • pattern은 해당 파일이나 디렉토리 내의 파일들을 대상으로 한다.
  • owner와 group은 파일의 소유자와 그룹을 지정한다.

hooks 섹션

  • ApplicationStart 후크는 배포 완료 후 실행할 스크립트를 지정한다. 여기서는 scripts/gh_deploy.sh 스크립트를 60초 내에 ubuntu 사용자로 실행한다.

3. CodeDeploy 에이전트 재시작

이전에 설정한 EC2 서버에 접속하여 CodeDeploy 에이전트를 재시작한다. 이는 CodeDeploy 설정이 최신 상태로 반영되도록 하기 위함이다.

sudo service codedeploy-agent restart

 

4. CI/CD 파이프라인 실행

appspec.yaml 파일을 추가한 후 코드를 푸시하면, Github Actions의 CI/CD 파이프라인이 자동으로 실행된다.

 

4.1 빌드 확인

Github Actions의 Jobs 탭에서 빌드가 성공적으로 완료되었는지 확인한다.

4.2 S3 업로드 확인

AWS S3 버킷에서 배포 파일이 정상적으로 업로드된 것을 확인한다.

AWS의 S3에도 정상적으로 ZIP이 업로드된 것을 확인할 수 있다.

이로써 appspec.yaml 파일 작성과 함께 AWS CodeDeploy를 활용한 배포 설정이 완료되었다. 아직 스크립트를 작성하지 않아 에러가 발생할 수 있지만, 다음 시간에는 배포 스크립트를 작성하여 최종적으로 자동 배포까지 완료해 본다.