", "log_stream_name": "{instance_id}" } ] } } } } EOF # 5. CloudWatch Agent 에이전트 실행 sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \ -a fetch-config \ -m ec2 \ -s \ -c file:/opt/aws/amazon-cl"> ", "log_stream_name": "{instance_id}" } ] } } } } EOF # 5. CloudWatch Agent 에이전트 실행 sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \ -a fetch-config \ -m ec2 \ -s \ -c file:/opt/aws/amazon-cl"> ", "log_stream_name": "{instance_id}" } ] } } } } EOF # 5. CloudWatch Agent 에이전트 실행 sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \ -a fetch-config \ -m ec2 \ -s \ -c file:/opt/aws/amazon-cl">
#!/bin/bash

# 1. S3에서 애플리케이션 소스 코드 다운로드
aws s3 cp s3://<본인의_S3_버킷_이름>/main.py /home/ec2-user

# 2. 패키지 매니저 업데이트 및 필수 프로그램 설치
dnf install python3-pip amazon-cloudwatch-agent -y
pip3 install fastapi sqlalchemy passlib boto3 pymysql pydantic[email] uvicorn

# 3. FastAPI 앱 백그라운드 실행 (로그는 main.log로 저장)
nohup uvicorn main:app \\
  --app-dir /home/ec2-user \\
  --reload \\
  --port 80 \\
  --host 0.0.0.0 > /home/ec2-user/main.log 2>&1 &

# 4. CloudWatch Agent JSON 설정 파일 생성
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": "<생성할_로그_그룹_이름>",
            "log_stream_name": "{instance_id}"
          }
        ]
      }
    }
  }
}
EOF

# 5. CloudWatch Agent 에이전트 실행
sudo /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