#!/bin/bash
# 1. 시스템 업데이트 및 필수 패키지(MariaDB 클라이언트, CloudWatch 에이전트) 설치
dnf update -y
dnf install python3-pip amazon-cloudwatch-agent mariadb105 -y
# 2. FastAPI 및 앱 구동을 위한 Python 라이브러리 설치
# uvicorn과 cryptography를 포함하여 경로 문제 없이 설치
pip3 install fastapi sqlalchemy passlib boto3 pymysql pydantic[email] uvicorn cryptography
# 3. S3에서 애플리케이션 소스(main.py) 다운로드 및 권한 설정
# 버킷명: wsi-bucket-781729906178 (사용자 환경에 맞게 자동 다운로드)
aws s3 cp s3://wsi-bucket-781729906178/main.py /home/ec2-user/main.py
chown ec2-user:ec2-user /home/ec2-user/main.py
# 4. FastAPI 앱 백그라운드 실행 (포트 80 사용을 위해 sudo 및 python 모듈 방식 사용)
# 로그는 main.log에 기록되며 CloudWatch로 전송됩니다.
sudo nohup python3 -m uvicorn main:app \\
--app-dir /home/ec2-user \\
--port 80 \\
--host 0.0.0.0 > /home/ec2-user/main.log 2>&1 &
# 5. CloudWatch Agent 설정 파일 생성 (로그 그룹: /app/newlogs)
cat <<EOF > /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
{
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/home/ec2-user/main.log",
"log_group_name": "/app/newlogs",
"log_stream_name": "{instance_id}",
"timezone": "UTC"
}
]
}
}
}
}
EOF
# 6. CloudWatch Agent 실행
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \\
-a fetch-config \\
-m ec2 \\
-s \\
-c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json