sudo apt update &&
sudo apt install -y ruby-full wget &&
cd /home/ubuntu &&
wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install &&
chmod +x ./install &&
sudo ./install auto
sudo apt-get update &&
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common &&
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - &&
sudo apt-key fingerprint 0EBFCD88 &&
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" &&
sudo apt-get update &&
sudo apt-get install -y docker-ce &&
sudo usermod -aG docker ubuntu &&
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose &&
sudo chmod +x /usr/local/bin/docker-compose &&
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
sudo apt install amazon-ecr-credential-helper
- EC2 - S3 읽기 권한, AMAZONEC2ContainerResistryFullAccess
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:Get*",
"s3:List*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}- GITHUB - 사용자 s3FullAccess, CodeDeployFullAccess, AMAZONEC2ContainerResistryFullAccess -> 키 등록
- CodeDeploy - codeDeployRole
spring boot - workflow.yml, appspec.yml, start-server.sh
-
push - checkout - application.yml 추가 - 빌드및테스트
-
aws 로그인 - ecr-credential 로그인 - 도커 빌드 - 도커 tag 변경 - 도커 푸시
-
파일이름 변경 및 파일압축 - aws 로그인 - s3에 압축파일 전송
-
code deploy로 ec2에게 배포 명령
-
.dockerignore, .gitignore 파일 작성
-
auto-scaling
- 시작템플릿 생성 - EC2랑 동일하게 + 사용자데이터 작성
#!/bin/bash
# === 1. CodeDeploy Agent 설치 ===
sudo apt update -y && \
sudo apt install -y ruby-full wget && \
cd /home/ubuntu && \
wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install && \
chmod +x ./install && \
sudo ./install auto
# === 2. Docker & Docker Compose 설치 ===
sudo apt-get update -y && \
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \
sudo apt-key fingerprint 0EBFCD88 && \
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" && \
sudo apt-get update -y && \
sudo apt-get install -y docker-ce && \
sudo usermod -aG docker ubuntu && \
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && \
sudo chmod +x /usr/local/bin/docker-compose && \
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# === 3. ECR Credential Helper 설치 ===
sudo apt install -y amazon-ecr-credential-helper
# === 4. Docker config.json 설정 ===
sudo mkdir -p /home/ubuntu/.docker
sudo bash -c 'echo "{\"credsStore\":\"ecr-login\"}" > /home/ubuntu/.docker/config.json'
sudo chown -R ubuntu:ubuntu /home/ubuntu/.docker
# === 5. 서비스 자동 실행 설정 ===
sudo systemctl enable codedeploy-agent
sudo systemctl enable docker
sudo systemctl start codedeploy-agent
sudo systemctl start docker
echo "===== USER DATA SCRIPT COMPLETED SUCCESSFULLY =====" >> /var/log/user-data.log
- AUTO SCALING GROUP, LOAD BALANCING 생성
- CodeDeploy 그룹에 블루/그린 배포 + AUTO SCALING GROUP 연결 + LOAD BALANCING 활성화(APPLICATION)
- IAM 수정
- CodeDeploy: AutoScalingFullAccess, code-deploy-autoscaling-policy(AMI에 iam 권한, 인스턴스 시작 권한, 태그 생성 권한 부여)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"iam:PassRole",
"ec2:CreateTags",
"ec2:RunInstances"
],
"Resource": "*"
}
]
}- EC2(AMI에 추가): AmazonEC2RoleforAWSCodeDeploy
- 도메인 주소 구매 - AUTO SCALING GROUP 보안그룹 443 추가 - ASG 도메인과 도메인으로 Route53 등록 - ACM 인증서 발급 및 연결