Search

CodeDeploy

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에 있는 인스턴스 접속 후 실행해주기)

성공