티스토리 뷰
1편은 1 ~ 3 단계 작성, 4 ~ 5단계에 대해서는 아래 링크 클릭
Spring Boot & AWS CodePipeline 2편
AWS 자동 배포 구성 단계
1.아키텍처 구성 확인 및 파일 생성
2.AWS IAM Role 생성
3.AWS EC2 인스턴스 생성
4.AWS CodeDeploy 생성
5.AWS CodePipeline 생성(CodePipeline 생성 단계에서 CodeBuild 생성하여 바로 연결)
1.아키텍처 구성 확인 및 파일 생성
- 프레임워크 및 AWS 서비스
- Spring Boot Application
- Github(AWS CodeCommit 대신 Github 사용)
- AWS EC2/온프레미스
- AWS CodeBuild
- AWS CodeDeploy
- AWS CodePipeline
- 서비스 구성 파일
- AWS CodeBuild
- buildspec.yml
- 빌드에 사용되는 명령 및 관련 설정 모음
- buildspec.yml
- AWS CodeDeploy
- appspec.yml
- 수명 주기 이벤트 후크(hooks)로 각 배포 관리 설정 모음
- .sh
- linux 권한 변경, java application 프로세스 실행 및 종료
- appspec.yml
- AWS CodeBuild
서비스 구성 파일은 프로젝트 루트 경로에 생성
buildspec.yml
version: 0.2
phases:
install:
runtime-versions:
java: corretto11
build:
commands:
- mvn package
post_build:
commands:
- echo Build completed
artifacts:
files:
- target/*.jar
- script/*.sh
- appspec.yml
discard-paths: yes
appspec.yml
version: 0.0
os: linux
files:
- source: /
destination: /home/ec2-user/build/
permissions:
- object: /
pattern: "**"
owner: ec2-user
group: ec2-user
hooks:
BeforeInstall:
- location: server_clear.sh
timeout: 300
runas: ec2-user
AfterInstall:
- location: fix_privileges.sh
timeout: 300
runas: ec2-user
ApplicationStart:
- location: server_start.sh
timeout: 20
runas: ec2-user
ApplicationStop:
- location: server_stop.sh
timeout: 20
runas: ec2-user
.sh
# fix_privileges.sh (권한 수정)
#!/usr/bin/env bash
chmod +x /home/ec2-user/build/*.jar
chmod +x /home/ec2-user/build/server_start.sh
chmod +x /home/ec2-user/build/server_stop.sh
# server_clear.sh (초기화)
#!/usr/bin/env bash
sudo rm -rf /home/ec2-user/build
# server_start.sh (Java Application 실행)
#!/usr/bin/env bash
cd /home/ec2-user/build
sudo java -jar -Dserver.port=80 \ *.jar > /dev/null 2> /dev/null < /dev/null &
# server_stop.sh (Java Application 종료)
#!/bin/bash
sudo pkill -f 'java -jar'
SSL 등록한 경우 -Dserver.port=80 > -Dserver.port=443 변경
Shell Script에서 사용한 명령어 정리 .sh 작성이 익숙하다면 아래 박스는 무시
#!
- 2 Byte Magic Number
- 해당 파일이 어떤 명령어 해석기의 명령어 집합인지 시스템에 전달
/usr/bin/env bash, /bin/bash
- #! 뒤에 경로 이름으로 명령어를 해석할 프로그램의 위치
chmod
- 파일 모드 변경
- +, -, =
- 현재 모드에 권한 추가(+), 현재 모드에서 권한 제거(-), 현재 모드로 권한 지정(=)
- r, w, x
- 읽기 권한(r), 쓰기 권한(w), 실행 권한(x)
rm(remove)
- 삭제
- option
- -r 디렉토리 삭제시 하위 경로의 파일을 삭제
- -f 파일, 디렉토리 삭제시 강제 삭제
pkill
- ps(현재 실행중인 프로세스 정보 확인) + kill(프로세스 종료)
- option
- -f 지정한 패턴을 명령어, 경로명, 옵션, 아규먼트를 포함하여 비교
server_start.sh 해석
sudo java -jar -Dserver.port=80 *.jar > /dev/null 2> /dev/null < /dev/null &
-D
- java args 옵션 사용
server.port=80
- Application 실행할 포트 설정
\
- 개행
*.jar
- jar 로 끝나는 파일 실행
> /dev/null 2> /dev/null < /dev/null
- 우선 > /dev/null, 1 > /dev/null, 2 > /dev/null 라는 문자열에서
- <, > 는 리다이렉션으로 < 는 파일 읽기, > 파일 쓰기
- 0은 표준 입력, 1은 표준 출력(STDOUT), 2는 표준 에러(STDERR)
- STDOUT 표준 출력으로 정상 메시지 출력, STDERR 표준 에러로 에러 메시지 출력
- /dev/null 이란 어떠한 작업의 출력 내용을 보고 싶지 않을 때 사용
- /dev/null > logfile.log 는 로그 파일을 비움
&
- 백그라운드 실행
2.AWS IAM Role 생성
EC2 인스턴스 전용 역할 생성
AWS IAM 서비스 > 액세스 관리(좌측 사이드 메뉴) > 역할 > 역할 만들기 클릭
역할 생성 화면에서 AWS 서비스, EC2 선택하고 다음 버튼 클릭
권한 추가 화면에서 AmazonS3FullAccess, AmazonEC2RoleforAWSCodeDeploy 조회 및 선택 후 다음 버튼 클릭
- AmazonS3FullAccess
- AWS Management Console 의 모든 버킷에 대한 전체 액세스 권한 제공
- AmazonEC2RoleforAWSCodeDeploy
- 버전을 다운로드할 수 있도록 S3 버킷에 대한 EC2 액세스 허용 제공
- EC2 인스턴스의 Code Deploy Agent 에 필요한 역할
- Code Deploy Agent 는 자동 배포 구성 단계 3.AWS EC2 인스턴스 생성 부분에서 확인 가능
이름 지정 및 역할 생성
CodeDeploy 전용 역할 생성
역할 생성 화면에서 AWS 서비스, CodeDeploy 검색 및 선택 후 다음 버튼 클릭
권한 추가 화면에서 CodeDeploy는 이미 선택되어 있는 기본 역할만 적용 후 다음 버튼 클릭
이름 지정 및 역할 생성
3.AWS EC2 인스턴스 생성
AWS EC2 서비스 > 인스턴스(좌측 사이드 메뉴) > 인스턴스 > 인스턴스 시작 클릭
인스턴스 구성은 OS, 서버 사양 등 필요한 조건에 맞춰 구성하되 아래 내용은 필수로 적용
- Security Group 인바운드 22 포트 접근 허용
- 이름 및 태그 > 추가 태그 추가 클릭
- CodeDeploy에서 배포할 인스턴스를 찾을 때 사용
- 고급 세부 정보 > IAM 인스턴스 프로파일
- EC2 인스턴스 전용으로 생성한 IAM 역할 적용
인스턴스 생성이 완료되면 인스턴스의 22번 포트 ssh 접속하여 아래 명령어를 입력
위에서 한번 언급했던 CodeDeploy Agent는 CodeDeploy 실행에 필요하여 인스턴스에서 설치
sudo yum update
sudo yum install ruby
# wget 이란 HTTP or FTP를 사용하여 파일 또는 컨텐츠를 다운로드
sudo yum install wget
cd /home/ec2-user
wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto
sudo amazon-linux-extras install java-openjdk11
# 설치 확인
sudo service codedeploy-agent status
java -version
1 ~ 3단계의 내용은 여기까지며 4 ~ 5 단계 내용은 2편에서 확인 가능하다 URL은 상단에서 확인 가능하다.
'AWS > 자동 배포' 카테고리의 다른 글
Spring Boot & AWS CodePipeline 2편 (0) | 2023.03.17 |
---|
- Total
- Today
- Yesterday
- REST API
- certonly
- Certbot
- ELK
- Spring Data JPA
- AWS 로드밸런서 SSL 등록
- 네임 서버 변경
- JPA 벌크성 수정 쿼리
- codedeploy
- Spring boot
- 도메인 내부 테스트
- Spring Boot 3.x
- properties 암호화
- QueryDSL 사용 방법
- AWS 자동 배포
- 시스템 환경변수
- aws codebuild
- CodeBuild
- logstash
- letsencrypt
- AWS MSK
- aws codedeploy
- kibana
- AWS CodePipeline
- aws codecommit
- querydsl
- jasypt
- AWS Opensearch
- CodePipeline
- 후이즈에서 AWS Route 53
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |