[Hands-On] AWS Code Family 를 통해 CI/CD 환경 구축

0. Code Family 소개

안녕하세요! 교보DTS 클라우드 기술팀에서 MSP를 맡고있는 김진섭 입니다.

오늘은 AWS 서비스를 이용하여 서버리스 CI/CD 환경을 구축할 수 있는 Code Family에 대해 소개하고 간단한 Java Maven 어플리케이션을 빌드해 배포하도록 하겠습니다.

개발자는 Code Commit을 Git 리포지토리로 사용하여 코드를 저장하고, CodeBuild를 통해 Java 애플리케이션을 테스트 및 컴파일합니다. 컴파일된 아티팩트는 S3로 저장되며 Code Deploy를 통해 EC2로 배포됩니다. CodePipeline은 전체 프로세스를 자동화하고 조율합니다.

CodeFamily 아키텍처

목차

  1. 환경 설정
  2. Code Commit : Git 리포지토리
  3. Code Build : 코드 테스트 및 빌드
  4. Code Deploy : 코드 배포
  5. 서버 인프라 구성
  6. Code Pipeline : CI/CD 자동화
  7. 마무리

0. 환경 설정

이번 세션에선 배포에 사용할 필수 프로그램을 설치하겠습니다. 필요한 필수 프로그램은 다음과 같습니다.

  • git
  • jdk
  • maven

본 문서는 windows WSL 의 AlmaLinux9(RHEL9의 1:1Fork) 을 기반으로 설명하겠습니다.

  1. 패키지 업데이트
sudo dnf -y update
  1. git 설치(AWS의 git 최소 요구버전은 1.7.9 입니다)
#git 패키지 확인
sudo dnf list git
#git 패키지 설치
sudo dnf -y install git

#git 버전 확인
git --version
  1. Apache Maven 설치
#Maven 패키지 확인
sudo dnf list maven
#Maven 패키지 설치
sudo dnf -y install maven

#Java 및 Maven 버전 확인
java -version
mvn -v

작성 시점의 maven은 3.6.3, jdk는 11로 이미지 빌드에 문제가 없었습니다.
다른 리눅스 배포에서 설치 시 jdk 버전이 7 이하라면 8 이상으로 업데이트가 필요합니다.

애플리케이션 생성

  1. mvn을 사용하여 샘플 Java 웹 앱 생성
#home으로 이동
cd
#소스를 저장할 src폴더 생성
mkdir src
#maven 샘플 웹 앱 생
mvn archetype:generate \\
    -DgroupId=com.maventest.app \\
    -DartifactId=maven-web-project \\
    -DarchetypeArtifactId=maven-archetype-webapp \\
    -DinteractiveMode=false
  1. 애플리케이션 폴더 구조가 생성되었는지 확인합니다. index.jsp 파일과 pom.xml 이 있어야합니다.
  1. wsl을 사용중이고 윈도우에 vscode가 설치되어 있다면 간단한 명령어로 vscode에 연동할 수 있습니다.
code .
  1. index.jsp 파일을 적절히 수정합니다. 아래에 샘플 코드를 올리지만 꼭 이와 같을 필요는 없습니다.
<html>
<body>
<h2>Hello World!</h2>
<p>First version of maven application!</p>
</body>
</html>

이것으로 CI/CD 테스트에 필요한 샘플 코드를 생성하였습니다. Code Commit을 이용하여 소스 코드를 저장하는 첫번째 실습부터 시작하겠습니다.

1. Code Commit : Git 리포지토리

Code Commit 은 프라이빗 Git 리포지토리를 호스팅하는 관리형 소스 제어 서비스입니다.
Code Commit 을 이용하면 자체 소스 제어 시스템을 관리하거나, 인프라를 확장할 필요가 없습니다.
Code Commit은 FreeTier로 다음 사항이 무기한 적용됩니다.

  • Code Commit 비용 정보: <최초 5명의 활성 사용자에 대해>
    • AWS 계정당 5,000개의 리포지토리, 요청 시 최대 25,000개의 리포지토리
    • 매달 50GB의 스토리
    • 매달 10,000건의 Git 요청
    • 더 자세한 비용 설명은 AWS 공식 문서를 참조해주세요
      AWS CodeCommit 요금 | Amazon Web Services

이번 세션에선 Java 코드를 저장하기 위한 Code Commit 저장소를 설정하겠습니다.

저장소 생성

  1. AWS 콘솔에 로그인하고 CodeCommit 서비스 검색
  2. 리포지토리 생성 을 클릭합니다. 이름을 maven-web-project로 지정하고 설명을 입력합니다.
  3. 필요하다면 Tag를 추가하여 리소스 구분이 용이하도록 설정합니다.
  4. 설정이 완료되면 생성 버튼을 클릭해 리포지토리를 생성합니다.
  1. 생성된 페이지에서 URL 복제 > HTTPS 복제를 선택합니다. 복제될 URL의 형식은 다음과 같습니다.
https://git-codecommit.<region>.amazonaws.com/v1/repos/<project-name>

다음 섹션을 위해 이 URL을 보관합니다.

IAM User 생성

Git 사용자가 Code Commit 저장소에 업로드 할 수 있도록 신규 IAM User를 생성해 Code Commit 권한을 부여합니다.

  1. AWS 콘솔에서 IAM 서비스 검색
  2. 사용자로 이동하여 사용자 생성 선택
  3. 적절한 사용자 이름을 부여하고 다음 선택
  1. 권한 옵션을 직접 정책 연결 로 선택하고, 권한 정책에 codecommit 을 검색하여 AWS 관리형 정책인 AWSCodeCommitPowerUser 를 체크하고 다음을 선택합니다.
  1. 필요하다면 Tag를 추가하여 리소스 구분이 용이하도록 설정합니다.
  2. 사용자 생성을 선택하여 사용자를 생성합니다.
  3. 생성된 사용자를 선택하여 상세 정보의 보안 자격 증명 탭으로 이동합니다.
  1. AWS CodeCommit에 대한 HTTPS Git 자격 증명을 생성합니다. 생성된 자격 증명은 해당 팝업에서만 암호를 확인할 수 있으므로 꼭 자격 증명을 저장합니다.

Code Commit

이전 설정한 Linux에서 Code를 원격지로 업로드 해 봅시다.

  1. 로컬 환경에서 Git ID를 설정합니다.
git config --global user.name "<your name>"
git config --global user.email <your email>
  1. ~/src/maven-web-project 경로에 위치해있는지 확인하고 로컬 repo를 초기화합니다. 이후 origin 경로를 Code Commit URL로 설정합니다.
cd ~/src/maven-web-project
git init -b main
git remote add origin <HTTPS CodeCommit repo URL>
  1. 이제 코드를 커밋하고 푸쉬할 수 있습니다. ID 및 Password는 이전 생성했던 IAM User 의 ID, Password를 입력합니다.
git add .
git commit -m "Initial commit"
git push -u origin main

리포지토리에 정상 업로드 되었음을 확인할 수 있습니다.

💡 aws 의 git용 ID/PW는 랜덤 난수로 자동 생성되므로 매번 입력하기 어려울 수 있습니다. 이때 git의 기능으로 ID/PW를 저장해둘 수 있습니다. 해당 명령 사용 후 최초 ID/PW를 입력 시 ~/.git-credential 에 계정 정보가 저장됩니다.

git config credential.helper store

2. Code Build : 코드 테스트 및 빌드

AWS CodeBuild는 소스 코드를 컴파일, 테스트, 패키징하는 완전관리형 CI 서비스입니다. 사전 패키징된 빌드 환경을 사용하여 빠르게 시작하거나, 자체 빌드 도구를 사용하는 사용자 정의 빌드 환경을 생성할 수 있습니다.

이 세션에서는 애플리케이션 코드를 Java WAR(웹 애플리케이션 아카이브) 파일로 패키징하기 위해 CodeBuild 프로젝트를 설정하겠습니다.

S3 버킷 생성

Code Build의 출력, 즉 WAR 파일을 저장하는데 사용할 S3 버킷을 생성합니다.

  1. AWS 콘솔에 S3서비스를 검색합니다.
  2. 버킷 생성을 클릭하고 버킷에 고유한 이름 (ex: maven-build-artifacts-test-jsk2207)을 지정합니다.
  3. 다른 모든 옵션은 기본값으로 두고 Create Bucket을 선택합니다.

CodeBuild 빌드 프로젝트 생성

  1. AWS 콘솔에 CodeBuild 서비스를 검색합니다.
  2. 빌드 프로젝트에서 빌드 프로젝트 생성을 선택합니다.
  3. 프로젝트 이름을 maven-web-build 로 지정하고 설명을 추가합니다. 리소스 구분이 필요할 경우 태그를 추가합니다.
  4. 소스에서 AWS CodeCommit을 소스 공급자로 선택하고 maven-web-project를 리포지토리로 선택합니다. 커밋 ID는 선택하지 않습니다.
  1. 환경은 다음과 같이 설정합니다.
  1. buildspec에서 buildspec.yml 구성 파일을 소스에서 찾는 Buildspec 파일 사용 옵션을 선택합니다. 이후 코드에서 생성할 예정입니다.
  2. 아티팩트에서 AmazonS3를 선택하고 이전 생성한 버킷 이름을 선택합니다. 이름은 maven-web-build.zip으로 설정합니다. 아티팩트 패키징은 Zip을 선택합니다.
  3. 빌드 프로젝트 생성을 클릭하여 CodeBuild를 생성합니다.

buildspec.yml 파일 생성

이제 애플리케이션 빌드 지침을 제공하는 buildspec.yml(YAML) 파일을 생성해야 합니다.

  1. 이전 설정한 Linux로 돌아갑니다.
  2. ~/src/maven-web-project 폴더로 이동하여 buildspec.yml 이라는 새 파일을 생성합니다.
  3. 아래 정보를 buildspec.yml에 복사하고 저장합니다.
version: 0.2

phases:
  install:
    runtime-versions:
      java: corretto17
  pre_build:
    commands:
      - echo Test started on `date`
      - mvn test
      - echo Test completed on `date`
  build:
    commands:
      - echo Build started on `date`
      - mvn compile
  post_build:
    commands:
      - echo Build completed on `date`
      - mvn package
artifacts:
  files:
    - target/maven-web-project.war
  discard-paths: no
  1. buildspec.yml 파일을 저장합니다. 그런 다음 커밋하고 CodeCommit에 푸시합니다.
cd ~/src/maven-web-project
git add .
git commit -m "add: buildspec.yml file"
git push -u origin main

빌드 프로젝트 테스트

이제 CodeBuild를 사용하여 첫 번째 빌드를 실행하기 위한 모든 것이 준비되었습니다.

CodeBuild를 실행해보겠습니다.

  1. AWS 콘솔에서 CodeBuild 서비스를 검색합니다.
  2. maven-web-build 프로젝트를 선택하고 빌드 시작 > 지금 시작 을 선택합니다.
  3. 로그를 모니터링하고 빌드 상태가 완료될 떄 까지 기다립니다. 이 작업은 5분 이내에 완료됩니다.
  1. 아티팩트 저장 버킷의 maven-web-build.zip 파일을 확인하여 WAR 파일이 있는지 확인합니다.

이제 코드 저장소와 해당 코드를 이용해 빌드하는 코드 빌드, 빌드된 애플리케이션을 저장하는 S3 까지 확인하였습니다. 현재는 수동으로 트리거되는 빌드이지만, CodePipeline에서 자동화 할 것입니다.

3. Code Deploy : 코드 배포

AWS CodeDeploy는 배포할 준비가 된 소프트웨어 패키지를 배포하는 완전관리형 지속적 CD 서비스입니다.

이번 실습에서는 패키지된 WAR파일을 호스팅하고 배포하는 방법을 살펴보겠습니다.

CloudFormation을 통한 서버 인프라 배포

AWS CloudFormation을 사용하여 애플리케이션을 배포할 VPC와 EC2 인스턴스를 프로비저닝 하겠습니다.

  1. AWS 콘솔에 로그인하고 CloudFormation 페이지 접속합니다.
  2. CloudFormation YAML 탬플릿을 다운로드 받습니다. ec2-cfn.yaml
  3. CloudFormation 콘솔에서 스택 생성 > 새 리소스 사용(표준) 을 클릭합니다.
  4. 탬플릿 파일 업로드를 선택하고 파일 선택을 클릭합니다. 2단계에서 다운로드한 yaml 파일을 선택하고 Next(다음)를 클릭합니다.
  5. 스택 이름을 MavenStack 으로 지정하고 IP 주소에 http://checkip.amazonaws.com/ 에 표시된 IP를 입력합니다. 입력할 때 IP 끝 부분에 /32를 입력하여 단일 IP만 입력합니다.
  6. 나머지를 모두 기본값으로 두고 스택을 생성합니다.
  7. 스택 생성이 완료될 때 까지 기다립니다. 약 5분 소요됩니다.
  8. 성공하면 EC2 페이지에 접속하여 신규 인스턴스 MavenStack::WebServer 표시되는지 확인합니다.

💡 EC2 인스턴스에 접속하고 싶다면 구성된 세션 관리자를 사용하면 됩니다. 인스턴스를 선택하고 연결을 클릭하고 세션 관리자를 선택합니다.

애플리케이션 실행을 위한 스크립트 만들기

다음으로 git 저장소에 몇 가지 bash 스크립트를 생성해야합니다. CodeDeploy는 이러한 스크립트를 사용하여 대상 EC2 인스턴스에 애플리케이션을 설정하고 배포합니다.

  1. WSL 리눅스로 돌아갑니다.
  2. ~/src/maven-web-project/ 아래에 script 폴더를 만듭니다.
  3. scripts 폴더에 install_dependencies.sh 파일을 만들고 다음 줄을 추가합니다.
#!/bin/bash
sudo yum -y install tomcat
sudo yum -y install httpd
sudo cat << EOF > /etc/httpd/conf.d/tomcat_manager.conf
<VirtualHost *:80>
    ServerAdmin root@localhost
    ServerName app.test.com
    DefaultType text/html
    ProxyRequests off
    ProxyPreserveHost On
    ProxyPass / <http://localhost:8080/maven-web-project/>
    ProxyPassReverse / <http://localhost:8080/maven-web-project/>
</VirtualHost>
EOF
  1. scripts 폴더에 start_server.sh 파일을 만들고 다음 줄을 추가합니다.
#!/bin/bash
sudo systemctl start tomcat.service
sudo systemctl enable tomcat.service
sudo systemctl start httpd.service
sudo systemctl enable httpd.service
  1. scripts 폴더에 stop_server.sh 파일을 생성하고 다음 줄을 추가합니다.
#!/bin/bash
isExistApp="$(pgrep httpd)"
if [[ -n $isExistApp ]]; then
sudo systemctl stop httpd.service
fi
isExistApp="$(pgrep tomcat)"
if [[ -n $isExistApp ]]; then
sudo systemctl stop tomcat.service
fi
  1. CodeDeploy는 YAML의 애플리케이션 사양(AppSpec)파일을 사용하여 배포 중에 수행할 작업을 지정하고 소스의 어떤 파일이 대상 위치에 배치되는지 정의합니다. AppSpec 파일의 이름은 appspec.yml 이어야 하며 소스 코드의 루트 디랙터리에 배치되어야 합니다.

프로젝트 폴더 최상위에 appspec.yml 파일을 만들고 다음 줄을 추가합니다.

version: 0.0
os: linux
files:
  - source: /target/maven-web-project.war
    destination: /usr/share/tomcat/webapps/
hooks:
  BeforeInstall:
    - location: scripts/install_dependencies.sh
      timeout: 300
      runas: root
  ApplicationStart:
    - location: scripts/start_server.sh
      timeout: 300
      runas: root
  ApplicationStop:
    - location: scripts/stop_server.sh
      timeout: 300
      runas: root
  1. 새로 추가된 스크립트 폴더와 appspec.yml 파일을 CodeDeploy에서 사용할 수 있도록 하려면 CodeBuild가 생성하는 zip파일에 추가해야 합니다. 아래와 같이 buildspec.yml의 아티팩트 섹션을 수정해야 합니다.
phases:
  [..]
  
artifacts:
  files:
    - target/maven-web-project.war
    - appspec.yml
    - scripts/**/*
  discard-paths: no
  1. 이제 모든 변경 사항을 CodeCommit에 커밋합니다.
cd ~/environment/unicorn-web-project
git add *
git commit -m "Adding CodeDeploy files"
git push -u origin main
  1. CodeBuild 콘솔에 로그인하고 빌드 시작을 클릭하여 zip패키지에 새로 추가된 아티팩트를 포함하는 maven-web-build 프로젝트를 다시 실행합니다.

CodeBuild 서비스 IAM 역할 생성

CodeDeploy에는 원하는 컴퓨팅 플랫폼에 권한을 부여하기 위한 서비스 역할이 필요합니다. EC2/온프래미스 배포의 경우 AWS 관리형 AWSCodeDeployRole 정책을 사용할 수 있습니다.

  1. AWS콘솔에 로그인하고 IAM 콘솔을 엽니다.
  2. 역할을 선택한 다음 역할 생성을 클릭합니다.
  3. 서비스로 CodeDeploy를 선택한 다음 사용 사례에 대해 CodeDeploy를 선택합니다. 이후 다음을 클릭합니다.
  1. AWSCodeDeployRole 기본 정책을 확인합니다. 실제 운영 환경에선 권한을 세분화 할 필요가 있으므로 부여하는 권한을 살펴보는 것이 좋습니다.
  2. 다음 을 클릭하고 역할 이름 aws-maven-role-an2 를 입력합니다. 역할 생성을 클릭하여 완료합니다.

CodeDeploy 애플리케이션 생성

이제 필요한 파일이 준비되었으므로 CodeDeploy 애플리케이션을 생성해 보겠습니다. 애플리케이션은 배포 중에 올바른 계정, 배포 구성 및 배포 그룹이 참조되도록 하기 위해 CodeDeploy에서 사용하는 이름 또는 컨테이너입니다.

  1. AWS 콘솔에 로그인하고 CodeDeploy를 검색하십시오.
  2. 왼쪽 메뉴에서 애플리케이션을 클릭하고 애플리케이션 생성을 선택합니다.
  3. 애플리케이션 이름을 maven-web-deploy로 지정하고 EC2/온프래미스를 컴퓨팅 플랫폼으로 선택합니다. 다른 배포 옵션으로 AWS Lambda 및 Amazon ECS 를 선택할 수 있습니다. 애플리케이션 생성을 클릭합니다.

배포 그룹 만들기

다음으로 배포 중에 사용되는 설정과 구성이 포함된 배포 그룹을 만들어 보겠습니다. 예를 들어 배포가 특정 태그가 있는 모든 EC2 인스턴스를 대상으로 해야 한다고 정의합니다.

  1. 배포 그룹 탭의 maven-web-deploy 애플리케이션 아래에서 배포 그룹 생성을 클릭합니다.
  2. 다음 옵션을 구성합니다.
  • 이름: maven-web-deploy-group
  • 서비스 역할: arn:aws:iam::<aws-account-id>:role/aws-maven-role-an2
  • 배포 유형: 내부
  • 환경 구성: Amazon EC2 인스턴스
  • 태그1 키: role
  • 태그1 값: webserver
  • AWS CodeDeploy 에이전트 설치: 지금 및 업데이트 예약(14일)
  • 배포 설정: CodeDeployDefault.AllAtOnce
  • 로드 밸런서: 로드밸런서 선택 취소
  1. 배포 그룹 생성을 클릭합니다.

배포 만들기

배포 그룹을 생성했으니 이제 배포를 생성할 수 있습니다.

  1. maven-web-deploy-group 에서 배포 생성을 클릭합니다.
  2. 개정 위치는 이전 생성된 S3 버킷을 사용합니다.
s3://<yout-artifact-bucket-name>/maven-web-build.zip
  1. 개정 파일 유형을 .zip으로 선택하십시오.
  1. 다른 설정은 기본값으로 두고 배포 생성을 클릭합니다.
  2. 이제 배포가 시작됩니다. 배포 수명 주기 이벤트를 주시하고 성공적으로 완료되는지 확인하세요.
  1. 마지막으로 http://<public-ip-address> 로 이동하여 웹 애플리케이션이 동작하는지 확인하세요. 화면이 보이지 않으면 주소가 https://로 설정되어있는지 확인하세요.

정상적으로 웹 애플리케이션이 생성되고 작동되는 것을 확인했습니다!

이제 애플리케이션을 구축하고 배포할 수 있는 방법이 생겼지만 현재 두 작업 모두 수동으로 트리거됩니다. CodeCommit 변경 트리거로 전체 프로세스가 자동화된다면 훨씬 좋을 것 입니다. 이는 AWS CodePipeline을 통해 가능해집니다.

4. Code Pipeline : CI/CD 자동화

AWS CodePipeline은 빠르고 안정적인 애플리케이션 및 인프라 업데이트를 위해 파이프라인을 자동화하는 완전관리형 CD 서비스입니다. 사용한 만큼만 비용을 지불합니다.

이번 실습에서는 CodePipeline을 사용하여 이전에 생성한 CodeCommit, CodeBuild, CodeDeploy 구성 요소를 사용하여 자동화된 파이프라인을 생성합니다. 새로운 커밋이 Git 저장소의 메인 브랜치로 푸시되면 파이프라인이 트리거됩니다.

파이프라인 만들기

  1. AWS 콘솔에 로그인하고 CodePipeline서비스를 검색합니다.
  2. 파이프라인 에서 파이프라인 생성을 선택합니다.
  3. 파이프라인 이름으로 maven-web-pipeline을 입력합니다. 파이프라인 유형 V2, 실행 모드는 대체 로 선택합니다. 서비스 역할은 새 서비스 역할을 생성하고 자동 생성된 이름을 사용하도록 선택합니다. 다른 설정은 기본값으로 둡니다. 다음을 클릭합니다.
  1. 소스 공급자는 AWS CodeCommit을 선택하고 maven-web-project를 리포지토리로 선택합니다. 브랜치 이름을 main으로 선택합니다. 감지 옵션은 Amazon CloudWatch Events로 두고 출력 아티팩트 형식을 CodePipeline Default로 둡니다. 다음 을 클릭합니다.
  1. 빌드 단계 화면에서 AWS CodeBuild를 빌드 공급자로 선택하고 maven-web-build를 프로젝트 이름으로 선택합니다. 빌드 유형을 Single Build로 둡니다. 다음 을 클릭합니다.
  1. 배포 단계 화면에서 배포 공급자로 AWS CodeDeploy를 선택하고 애플리케이션 이름으로 maven-web-deploy를 선택합니다. 배포 그룹으로 maven-web-deploy-group을 선택합니다. 다음을 선택합니다.
  1. 파이프라인 설정을 검토하고 파이프라인 생성을 클릭합니다. 생성된 파이프라인은 최초 1회 자동으로 실행됩니다. 성공적으로 완료되는지 확인합니다.

변경 사항 릴리스

이제 완전 관리형 CI/CD 파이프라인이 생겼습니다! 파이프라인이 정상 작동하는지 테스트 해 보겠습니다.

  1. WSL 개발환경으로 돌아갑니다.
  2. 아래 HTML로 index.jsp를 업데이트합니다.
<!doctype html>

<html lang="en">
<head>
  <meta charset="utf-8">
  <style>
    body{
        font-family:'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    }
    .site-header .title{
        background: url(images/wr-home-top.jpg) no-repeat top;
        background-size: cover;
        padding-bottom: 70.2753441802%;
        margin: 0;
        text-indent: -999em;
        position: relative;
    }
    .home-about {
        background: #f50856;
        color: #fff;
        padding: 5rem 0;
        text-align: center;
    }
    </style>
  <title>Wild Rydes</title>
</head>

<body>
    <header class="site-header">
        <h1 class="title">Wild Rydes</h1>
    </header>
    <section class="home-about">
        
        <h2 class="section-title">How Does This Work?</h2>
        <p class="content">
            In today's fast paced world, you've got places you need to be but not enough time in your jam packed schedule. Wouldn't it be nice if there were a transportation service that changed the way you get around daily? Introducing Wild Rydes, an innovative transportation service that helps people get to their destination faster and hassle-free. Getting started is as easy as tapping a button in our app.
        </p>
        <h2 class="section-title">Our Story</h2>
      <p class="content">
        Wild Rydes was started by a former hedge fund analyst and a software developer. The two long-time friends happened upon the Wild Rydes idea after attending a silent yoga retreat in Nevada. After gazing upon the majestic herds of unicorns prancing across a surreal Nevada sunset, they witnessed firsthand the poverty and unemployment endemic to that once proud race. Whether it was modern society's reliance on science over magic or not, we'll never know the cause of their Ozymandian downfall and fade to obscurity. Moved by empathy, romance, and free enterprise, they saw an opportunity to marry society's demand for faster, more flexible transportation to underutilized beasts of labor through an on-demand market making transportation app. Using the founders' respective expertise in animal husbandry and software engineering, Wild Rydes was formed and has since raised untold amounts of venture capital. Today, Wild Rydes has thousands of unicorns in its network fulfilling hundreds of rydes each day.
      </p>
    </section>
    

</body>
</html>
  1. 아래 배경 이미지를 다운로드 받아 maven-web-project/src/main/webapp/ 아래에 images 새 폴더를 만들고 이미지를 업로드합니다.
  1. 아래 명령을 사용하여 변경 사항을 커밋합니다.
cd ~/environment/unicorn-web-project/
git add *
git commit -m "Visual improvements to homepage"
git push -u origin main
  1. CodePipeline 콘솔을 확인합니다. CodeCommit에 푸쉬되면 자동으로 트리거되어야 합니다. 파이프라인이 성공적으로 완료될 때 까지 기다립니다.
  2. 파이프라인이 완료되면 EC2 퍼블릭 IP 주소 http://<ip-address>/로 이동하여 변경사항을 확인합니다.

정상적으로 작동하는 CI/CD 파이프라인을 확인했습니다!

5. 마무리

이상으로 AWS CodeFamily를 이용한 CI/CD 구축 핸즈온을 마치겠습니다.

가장 기본적인 기능들을 이용하여 완전자동 배포를 구현 해 보았는데요,
실제 프로덕션 환경에 구성할 땐 보안, 인프라, 배포 승인 체계 등 고려해야 할 사항이 더 많습니다.
하지만 기본적인 배포 플로우는 이 핸즈온과 다르지 않기 때문에, 이를 응용하여 적용할 수 있을 것으로 생각됩니다.

생성된 리소스는 지속적으로 비용이 발생하기 때문에 꼭 정리해야 합니다!

감사합니다.


참조문서

초보자도 이해하는 AWS Code Pipeline CI/CD 환경 만들어보기 | DevelopersIO

AWS CodeBuild이란? – AWS CodeBuild

4단계: Amazon EC2 인스턴스에 대한 IAM 인스턴스 프로파일 만들기 – AWS CodeDeploy

Workshop Studio

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다