1. Web/App EC2 (Application Server)용 템플릿 이 인스턴스는 ALB 뒤에 위치하며 Python 기반의 바이너리(웹 애플리케이션)를 실행하고, RDS(MySQL)와 통신해야 합니다. 또한 CloudWatch 로그 수집 및 Secrets Manager 연동이 필요할 수 있습니다.

Amazon Linux 2023(dnf 패키지 관리자 사용) 환경에 맞춘 템플릿입니다.

#!/bin/bash
# 1. 시스템 패키지 업데이트
dnf update -y

# 2. Python 환경 구축
dnf install -y python3 python3-pip

# 3. MySQL 클라이언트 및 의존성 라이브러리 설치 (RDS 통신 테스트 및 DB 드라이버용)
dnf install -y mariadb105

# 4. AWS CloudWatch Agent 설치 및 실행 (CloudWatch 지표/로그 수집용)
dnf install -y amazon-cloudwatch-agent
# (선택) CloudWatch Agent 설정 파일이 Parameter Store나 로컬에 있다면 적용하는 명령어 추가
# /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/path/to/config.json
systemctl enable amazon-cloudwatch-agent
systemctl start amazon-cloudwatch-agent

# 5. Python 필수 패키지 설치 (Boto3는 Secrets Manager, KMS 접근에 필요)
pip3 install boto3 pymysql 

# 6. 지급된 바이너리 다운로드 및 실행 설정 (경로나 S3 버킷 이름은 상황에 맞게 수정)
# aws s3 cp s3://[버킷이름]/[바이너리파일명] /home/ec2-user/[바이너리파일명]
# chmod +x /home/ec2-user/[바이너리파일명]
# chown ec2-user:ec2-user /home/ec2-user/[바이너리파일명]

# 7. 백그라운드 서비스 등록 (systemd를 이용해 바이너리 실행)
cat <<EOF > /etc/systemd/system/worldpay-app.service
[Unit]
Description=WorldPay Application Service
After=network.target

[Service]
User=ec2-user
WorkingDirectory=/home/ec2-user
ExecStart=/home/ec2-user/[바이너리파일명]
Restart=always

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable worldpay-app
systemctl start worldpay-app