[태그] cohort 공용태그 , Name 식별자 설정
[보안] -[IAM 역할] - [권한 추가] - [정책 연결]
AmazonS3FullAccess
AmazonEC2RoleforAWSCodeDeploy
AWSCodeDeployRole
AmazonSSMFullAccess
[신뢰관계] - service 에 "codedeploy.ap-northeast-2.amazonaws.com"
추가 하여 액세스 권한이 부여
appspec.yml
version: 0.0
os: linux
files:
- source: /
destination: /home/ubuntu/build
hooks: # 각각의 셀 스크립트를 실행
BeforeInstall:
- location: server_clear.sh # 기존 build 디렉토리를 제거
timeout: 3000
runas: root
AfterInstall:
- location: initialize.sh # build 내부 실행 권한을 추가
timeout: 3000
runas: root
ApplicationStart:
- location: server_start.sh # DeployServer-0.0.1-SNAPSHOT.jar 실행
timeout: 3000
runas: root
ApplicationStop:
- location: server_stop.sh # 실행 중인 jar 종료
timeout: 3000
runas: root
scripts/initialize.sh
#!/usr/bin/env bash chmod +x /home/ubuntu/build/**
scripts/server_clear.sh
#!/usr/bin/env bash rm -rf /home/ubuntu/build
scripts/server_start.sh
#!/usr/bin/env bash cd /home/ubuntu/build sudo nohup java -jar DeployServer-0.0.1-SNAPSHOT.jar > /dev/null 2> /dev/null < /dev/null &
scripts/server_stop.sh
#!/usr/bin/env bash sudo pkill -f 'java -jar'
buildspec.yml
version: 0.2
phases:
install:
runtime-versions:
java: corretto11
build:
commands:
- echo Build Starting on `date`
- cd DeployServer
- chmod +x ./gradlew
- ./gradlew build
post_build:
commands:
- echo $(basename ./DeployServer/build/libs/*.jar)
artifacts:
files:
- DeployServer/build/libs/*.jar
- DeployServer/scripts/**
- DeployServer/appspec.yml
discard-paths: yes
[애플리케이션 생성] :'EC2/온프레미스'로 설정
[배포 그룹 생성] : 인스턴스와 연결되있는 IAM 역할 선택
[환경 구성] : Amazon EC2 인스턴스 체크,
태그 그룹에 EC2 인스턴스의 이름인 Name 태그 키와 값을 선택
[로드 벨런서] : 추가 비용 생기기 싫으면 꺼두자
AWS 시스템 매니저 구성을 추가 하거나 CodeDeploy-Agent를 인스턴스에서 수동 설치
새 서비스 역할로 역할을 추가하여 생성
소스 제공자 추가 - 연결 생성
인증 - Only select repositories, 레포지토리 선택하여 연결
출력 아티팩트 형식 - 'CodePipeline 기본값'으로 지정
빌드 프로젝트 생성
운영체제 선택 Amazon Linux 2
런타임 선택 Standart
이미지 선택 aws/codebuild/amazonlinux2-x86_64-standart:corretto11
빌드 사양 Buildspec 사용 - 설정파일 경로 설정 DeployServer/buildspec.yml
리전 선택 아시아 태평양(서울)
코드디플로이에서 생성한 애플리케이션 선택
빌드 스테이지에서 생성한 배포그룹 선택
파이프라인 생성
생성과 동시에 실행 -> 배포까지 과정 출력

새로운 버전을 github에 push하면 기존 버전의 배포에서 중단 없이 새로운 빌드 파일로 교체 배포된다
인스턴스에 환경변수를 추가한다
의존 라이브러리 추가와 Parameter Store 설정파일이 필요하다
build.gradle
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-starter-parent:Hoxton.SR12"
}
}
bootstrap.yml
aws:
paramstore:
enabled: true
prefix: /spring-boot-aws
name: be-0-SEYUN # 리소스 이름을 작성합니다.
profileSeparator: _
[파라미터 생성]에서
이름(키)과 값을 쌍으로 등록한다
구분자를 기준으로
prefix(/spring-boot-aws)와 name(be-0-SEYUN)에 설정된 값
다음에 오는 마지막 경로를 실제로 사용되는 키 값으로 사용됨