appspec.yml
version: 0.0
os: linux
files:
- source: app.pyc
destination: /opt/scripts/
hooks:
BeforeInstall:
- location: scripts/BeforeInstall.sh
timeout: 100
runas: root
AfterInstall:
- location: scripts/AfterInstall.sh
timeout: 100
runas: root
ApplicationStart:
- location: scripts/ApplicationStart.sh
timeout: 100
runas: root
ApplicationStop:
- location: scripts/ApplicationStop.sh
timeout: 100
runas: root
YAML
복사
Beforeinstall.sh
#!/bin/bash
if [ -d /opt/scripts/ ]; then
sudo rm -rf /opt/scripts/
fi
mkdir -p /opt/scripts/
Shell
복사
Afterinstall.sh
#!/bin/bash
sudo yum install -y python3-pip
pip3 install flask
Shell
복사
ApplicationStart.sh
#!/bin/bash
cd /opt/scripts/
nohup python3 app.pyc > /dev/null 2>&1 &
Shell
복사
ApplicationStop.sh
#!/bin/bash
SERVER_STATUS=$(curl -sS -o /dev/null -w "%{http_code}" localhost:80/health)
PYTHON_PID=$(pgrep python3)
if [ $SERVER_STATUS == 200 ]; then
kill -9 $PYTHON_PID
echo "killed python pid"
fi
Shell
복사
buildspec.yml 수정하기
version: 0.2
phases:
install:
runtime-versions:
python: 3.8
pre_build:
commands:
- echo Nothing to do in the pre_build phase...
build:
commands:
- python3 -m compileall src/app.py
- mv src/__pycache__/*.pyc ./app.pyc
post_build:
commands:
- echo Build completed on `date`
artifacts:
files:
- app.pyc
- appspec.yml
- scripts/
- scripts/BeforeInstall.sh
- scripts/AfterInstall.sh
- scripts/ApplicationStart.sh
- scripts/ApplicationStop.sh
YAML
복사
Git Repo Push
Name : wsi-api | 컴퓨팅 플랫폼 : EC2/온프레미스
배포 그룹 생성 Name : dev-api
CodeDeployRole 선택
현재 위치 선택
EC2 인스턴스 선택 후 키,값 선택 wsi:deploy:group : dev-api
Code Deploy Agent 설치 안함 선택
로드밸런서 활성화 및 대상 그룹 선택
배포 생성 S3에 저장 선택 후 s3://wsi-api-s3/wsi-api-build 입력 및 .zip 선택
콘텐츠 덮어쓰기 선택 후 생성
Load Balancer 헬스 체크 성공을 위해 임시 바인딩 해주기
(private subnet에 있는 인스턴스 접속 후 실행해주기)















