This repository was archived by the owner on Mar 7, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup-config.sh
More file actions
executable file
·178 lines (152 loc) · 5.35 KB
/
Copy pathsetup-config.sh
File metadata and controls
executable file
·178 lines (152 loc) · 5.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
#!/bin/bash
echo "🔧 Autobiography API Configuration Setup"
echo "========================================"
# .env 파일에서 값 읽어오는 함수
load_env_value() {
local key=$1
local default=$2
if [ -f .env ]; then
local value=$(grep "^${key}=" .env 2>/dev/null | cut -d'=' -f2- | sed 's/^"//' | sed 's/"$//')
if [ -n "$value" ] && [ "$value" != "{your-ec2-ip}" ] && [ "$value" != "{your-aws-account-id}" ] && [ "$value" != "your-secure-password" ]; then
echo "$value"
else
echo "$default"
fi
else
echo "$default"
fi
}
# AWS CLI 설정 확인
echo "📋 Checking AWS CLI configuration..."
if ! aws sts get-caller-identity >/dev/null 2>&1; then
echo "❌ AWS CLI not configured. Please run 'aws configure' first."
echo " You need:"
echo " - AWS Access Key ID"
echo " - AWS Secret Access Key"
echo " - Default region: ap-northeast-2"
exit 1
fi
# AWS 계정 ID 가져오기
AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
AWS_REGION=$(aws configure get region || echo "ap-northeast-2")
echo "✅ AWS Account ID: $AWS_ACCOUNT_ID"
echo "✅ AWS Region: $AWS_REGION"
# .env 파일에서 기존 값들 읽어오기
EXISTING_EC2_IP=$(load_env_value "EC2_IP" "")
EXISTING_DB_PASSWORD=$(load_env_value "DB_PASSWORD" "")
echo ""
echo "📄 Checking existing .env file..."
# EC2 IP 설정
if [ -n "$EXISTING_EC2_IP" ]; then
echo "✅ Found existing EC2 IP: $EXISTING_EC2_IP"
EC2_IP="$EXISTING_EC2_IP"
read -p "🤔 Use this IP? (y/n, default: y): " use_existing_ip
if [ "$use_existing_ip" = "n" ] || [ "$use_existing_ip" = "N" ]; then
echo "🖥️ Please enter your EC2 Public IP address:"
read -p "EC2 IP: " EC2_IP
fi
else
echo "🖥️ Please enter your EC2 Public IP address:"
echo " (You can find this in AWS Console > EC2 > Instances)"
read -p "EC2 IP: " EC2_IP
fi
if [ -z "$EC2_IP" ]; then
echo "❌ EC2 IP is required"
exit 1
fi
# 데이터베이스 비밀번호 설정
if [ -n "$EXISTING_DB_PASSWORD" ]; then
echo "✅ Found existing database password"
DB_PASSWORD="$EXISTING_DB_PASSWORD"
read -p "🤔 Keep existing password? (y/n, default: y): " keep_password
if [ "$keep_password" = "n" ] || [ "$keep_password" = "N" ]; then
echo "🔐 Please enter a new secure database password:"
read -s -p "Database Password: " DB_PASSWORD
echo ""
fi
else
echo "🔐 Please enter a secure database password:"
echo " (This will be used for MariaDB root password)"
read -s -p "Database Password: " DB_PASSWORD
echo ""
fi
if [ -z "$DB_PASSWORD" ]; then
echo "❌ Database password is required"
exit 1
fi
# 프로젝트 설정
PROJECT_NAME="autobiography-api"
S3_BUCKET_NAME="${PROJECT_NAME}-images-${AWS_ACCOUNT_ID}"
ECR_URI="${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${PROJECT_NAME}"
echo ""
echo "📝 Configuration Summary:"
echo " AWS Account ID: $AWS_ACCOUNT_ID"
echo " AWS Region: $AWS_REGION"
echo " EC2 IP: $EC2_IP"
echo " Project Name: $PROJECT_NAME"
echo " S3 Bucket: $S3_BUCKET_NAME"
echo " ECR URI: $ECR_URI"
echo " Database Password: [HIDDEN]"
echo ""
read -p "🤔 Is this correct? (y/n): " confirm
if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
echo "❌ Configuration cancelled"
exit 1
fi
echo ""
echo "🔄 Updating configuration files..."
# 1. redeploy.sh 업데이트
echo "📝 Updating redeploy.sh..."
sed -i.bak "s/{your-ec2-ip}/$EC2_IP/g" redeploy.sh
sed -i.bak "s/EC2_IP=\"[^\"]*\"/EC2_IP=\"$EC2_IP\"/g" redeploy.sh
sed -i.bak "s/{your-aws-account-id}/$AWS_ACCOUNT_ID/g" redeploy.sh
sed -i.bak "s/AWS_ACCOUNT_ID=\"[^\"]*\"/AWS_ACCOUNT_ID=\"$AWS_ACCOUNT_ID\"/g" redeploy.sh
# 2. infra.yaml 업데이트
echo "📝 Updating infra.yaml..."
sed -i.bak "s/{your-aws-account-id}/$AWS_ACCOUNT_ID/g" infra.yaml
# 3. .env 파일 생성/업데이트
echo "📝 Creating/updating .env file..."
cat > .env << EOF
# Server Configuration
PORT=3000
NODE_ENV=production
# EC2 Configuration
EC2_IP=$EC2_IP
# Database Configuration (Local MariaDB/MySQL)
DB_HOST=localhost
DB_PORT=3306
DB_NAME=autobiography_db
DB_USER=root
DB_PASSWORD=$DB_PASSWORD
# AWS Configuration
AWS_REGION=$AWS_REGION
# AWS Services
S3_BUCKET_NAME=$S3_BUCKET_NAME
BEDROCK_MODEL_ID=anthropic.claude-3-sonnet-20240229-v1:0
# ECR Configuration (for deployment)
ECR_REPOSITORY_URI=$ECR_URI
EOF
# 4. .env 파일 권한 설정
chmod 600 .env
# 백업 파일 정리
rm -f *.bak
echo ""
echo "✅ Configuration completed successfully!"
echo ""
echo "📋 Created/Updated files:"
echo " ✅ .env - Environment variables with your settings"
echo " ✅ redeploy.sh - Deployment script with your EC2 IP and AWS Account ID"
echo " ✅ infra.yaml - CloudFormation template with your AWS Account ID"
echo ""
echo "📋 Next steps:"
echo "1. Run './deploy.sh' for initial deployment"
echo "2. After code changes, run './redeploy.sh' for updates"
echo "3. Test your API with './test-api.sh http://$EC2_IP:3000/api/v2'"
echo ""
echo "🔐 Security reminders:"
echo " ✅ .env file is protected (chmod 600)"
echo " ✅ .env file is in .gitignore (won't be committed)"
echo " ✅ server.pem will be created during deployment"
echo ""
echo "💡 Tip: Run './setup-config.sh' again anytime to update configuration"
echo "🎉 Ready to deploy! Run './deploy.sh' to start."