ETEVERS AWS Cloud-up 시리즈는 ETEVERS SA와 AWS SA가 협업하여 DSA 파트너 SA에게 AWS 기술을 소개합니다. 해당 Workshop은 비즈니스에 도움이 될 수 있도록 제작 되었으며, 클라우드 솔루션의 전문적인 지식을 통해 DSA 파트너사의 성공을 촉진하고 지원합니다. 모든 교육은 DSA 파트너 SA or Sales 분들의 피드백을 바탕으로 교육을 선정하여 제공하고 있습니다.
AWS의 Basic Architecting에 대한 이해를 원하는 파트너 SA

ETEVERS AWS Cloud up을 진행하려면 아래와 같은 사항이 필요합니다.
Amazon VPC는 AWS에서 지원하는 가상의 사설 네트워크로서 AWS 리소스를 시작할 수 있습니다. 사용자는 자기가 원하는대로 IP주소 범위를 선택, 서브넷 및 라우팅 테이블을 생성하는 등 가상 네트워크를 환경을 구성하여 사용할 수 있습니다. VPC를 구성한 후 라우팅 테이블을 설정하여 네트워크 트래픽 흐름을 정의하게 됩니다. 이러한 작업을 통해 기본 네트워킹 구성을 완료하여 가용성과 확장성이 뛰어난 웹 서비스 환경을 만들 수 있습니다.


VPC-Lab10.0.0.0/16)
ap-northeast-2aap-northeast-2c
서브넷 CIDR 블록 사용자 지정을 선택 후 해당 서브넷에 맞는 CIDR블록을 입력합니다.10.0.10.0/241**0.0.20.0/24**10.0.100.0/2410.0.200.0/24
1개의 AZ에서없음VPC 생성버튼 클릭합니다.
Amazon EC2는 AWS에서 제공하는 가상 컴퓨팅 리소스로, 사용자는 필요에 따라 가상 서버(인스턴스)를 생성하고 실행하여 컴퓨팅 환경을 유연하게 구성할 수 있습니다. EC2 인스턴스는 사용자가 선택한 운영 체제에서 실행되며, 인스턴스 유형, 스토리지 옵션, 네트워크 구성 등을 조절하여 안전하고 확장 가능한 웹 서비스 환경을 구축할 수 있습니다.


Web server for custom AMIAmazon Linux 2023 AMI64-bit(x86)
t2micro키 페어 없이 계속 진행(권장되지 않음)
VPC-Lab를 선택하고 서브넷은 Public Subnet을 선택합니다.퍼블릭 ip 자동 할당을 활성화합니다.보안그룹을 생성 항목을 선택하고 인바운드 보안 그룹 규칙에서 보안 그룹 규칙 추가를 선택합니다.
Immersion Day - Web ServerImmersion Day - Web Server
HTTP - TCP/80을 허용합니다.사용자 지정0.0.0.0/0
1x 8GiB gp3 루트 볼륨(암호화되지 않음)V2만 해당(토큰 필수)를 선택합니다.
#!/bin/sh
#Install a LAMP stack
dnf install -y httpd wget php-fpm php-mysqli php-json php php-devel
dnf install -y mariadb105-server
dnf install -y httpd php-mbstring
#Start the web server
chkconfig httpd on
systemctl start httpd
#Install the web pages for our lab
if [ ! -f /var/www/html/immersion-day-app-php7.zip ]; then
cd /var/www/html
wget -O 'immersion-day-app-php7.zip' 'https://static.us-east-1.prod.workshops.aws/public/e8d39029-6ebf-4531-9168-ca22f676ed7d/assets/immersion-day-app-php7.zip'
unzip immersion-day-app-php7.zip
fi
#Install the AWS SDK for PHP
if [ ! -f /var/www/html/aws.zip ]; then
cd /var/www/html
mkdir vendor
cd vendor
wget https://docs.aws.amazon.com/aws-sdk-php/v3/download/aws.zip
unzip aws.zip
fi
# Update existing packages
dnf update -y
모든 인스턴스 보기를 선택하여 생성된 EC2 인스턴스 목록을 확인합니다.
AMI를 생성하기 위해 생성된 인스턴스를 선택하고 작업 → 이미지 및 템플릿 → 이미지 생성을 클릭합니다.

Web Server v1LAMP web server AMI이미지의 상태가 사용 가능으로 변환된 후 앞에서 생성한 인스턴스를 종료합니다.
💡 `AMI가 완전히 생성되기 전에 인스턴스를 삭제하면 이미지 생성이 중단`되고, 해당 이미지가 만들어지지 않습니다.인스턴스 상태 → 인스턴스 종료

AWS Elastic Load Balancing (ELB)은 여러 EC2 인스턴스 간에 트래픽을 분산시켜 고가용성과 내결함성을 확보하는 서비스입니다. ELB는 사용자의 요청을 여러 EC2 인스턴스로 분배하여 부하를 분산하고, 장애 시에 자동으로 안전한 인스턴스로 트래픽을 리디렉션하여 서비스 신뢰성을 향상시킵니다.
AWS Auto Scaling은 애플리케이션의 트래픽을 모니터링하고, 정의된 규칙에 따라 EC2 인스턴스의 수를 자동으로 조절하여 성능을 최적화하고 비용을 절감합니다. Auto Scaling 그룹을 통해 트래픽의 변화에 동적으로 대응할 수 있습니다.
이러한 기능들을 통해 EC2, ELB, 그리고 Auto Scaling을 함께 사용하여 안정적이고 확장 가능한 웹 서비스 인프라를 강력하게 구축할 수 있습니다. Auto Scaling은 트래픽의 증감에 자동으로 대응하며, ELB는 효율적으로 트래픽을 분산시켜 고가용성을 제공합니다.
EC2 콘솔에서 좌측 하단의 로드 밸런서를 클릭 후 로드 밸런서 생성을 선택하여
Application Load Balancer를 생성합니다.
- 이름 : web-ALB-SG
- 체계 : 인터넷 경계
- IP주소 유형 : IPv4

네트워크 매핑에서 VPC와 서브넷을 선택합니다.

VPC-LabVPC-Lab-subnet-public1-ap-northeast-2aVPC-Lab-subnet-public2-ap-northeast-2c
web-ALB-SGweb-ALB-SGVPC-Lab
HTTPAnywhere-IPv4**web-ALB-SG를 활성화 합니다.**기본보안 그룹은 비활성화합니다.


Web-TGHTTP : 80IPv4VPC-Lab다음 버튼 및 대상 그룹 생성 버튼을 클릭하여 생성을 완료합니다.
로드 밸런서 생성 버튼을 클릭하여 로드 밸런서를 생성합니다.
좌측 카테고리에서 보안 그룹 선택 후 Auto Scaling을 사용하기 위한 보안 그룹 생성합니다.

ASG-Web-Inst-SGHTTP AllowHTTP사용자 지정 - web-ALB-SG
시작 템플릿 이름 및 설명을 기입하고 AutoScaling 지침을 활성화합니다.

webImmersion Day Web Instances Template Web only활성화AMI에서 내 AMI를 클릭하여 앞에서 생성한 web server v1 AMI를 선택합니다.


t2.micro로 선택합니다.시작 템플릿에 포함하지 않음
ASG-Web-Inst-SG)볼륨 1 (AMI 루트) (8 GiB, EBS, 범용 SSD(gp3))새로운 태그 추가를 클릭합니다.
NameWeb InstanceResource types인스턴스, 볼륨다른 모든 설정은 기본값으로 두고, 우측 시작 탬플릿 생성을 클릭합니다.
Auto Scaling 그룹(ASG)을 클릭 후 생성 및 설정합니다.
다른 모든 설정은 기본값으로 두고, 우측 시작 탬플릿 생성을 클릭합니다.
Auto Scaling 그룹(ASG)을 클릭 후 생성 및 설정합니다.


web-ASGweb
VPC-LabVPC-Lab-subnet-private1-ap-northeast-2aVPC-Lab-subnet-private1-ap-northeast-2c기존 로드밸런서에 연결을 선택하고 로드 밸런서 대상 그룹에서 선택을 클릭하여 앞에서



대상 추적 조정 정책을 선택한다.30다른 모든 설정은 기본값으로 두고 오른쪽 하단에 있는 다음 버튼을 클릭합니다.
이번 핸즈온에서는 `알림을 추가 하지 않습니다` . 다음 버튼을 클릭합니다.
태그 추가 단계에서는 간단히 이름 태그를 할당하겠습니다.

Name = ASG-web-Intance모든 설정을 확인하신 후 오른쪽 하단의 Auto Scaling Group 생성 버튼을 클릭
Auto Scaling 그룹 콘솔에 생성된 Auto Scaling 그룹을 확인할 수 있습니다.
생성한 로드밸런서의 DNS 이름을 웹 브라우저에 입력하여 확인할 수 있습니다.


Amazon RDS는 클라우드에서 관계형 데이터베이스를 쉽게 설정, 운영 및 확장할 수 있게 해주는 웹 서비스입니다. 시간이 많이 소요되는 데이터베이스 관리 작업을 관리하는 동시에 비용 효율적이고 크기 조정이 가능한 용량을 제공하므로 사용자는 애플리케이션과 비즈니스에 집중할 수 있습니다.


DB-SGDatabase Security GroupVPC-Lab
MySQL/Aurora3306사용자 지정 (ASG-Web-Inst-SG)보안 그룹 생성을 클릭하면 해당 보안 그룹이 생성됩니다.


MySQL 8.0.32프리티어


rdsclusterawsuserawspassword
버스터블 클래스(t 클래스 포함)db.t3.micro스토리지는 Default로 설정합니다.
연결 페이지에서 네트워크 및 보안을 설정합니다.

EC2 컴퓨팅 리소스에 연결 안함IPv4 선택VPC-Lab새 DB 서브넷 그룹 생성아니요기존 항목 선택 - DB-SG(활성화) default(비활성화)기본 설정 없음Defaultimmersiondaydefault.mysql5.7default.mysql5.7
Amazon Simple Storage Service(S3)는 안정적이고 확장 가능한 객체 스토리지 서비스로, 데이터를 저장하고 관리하는 데 사용됩니다. 사용자는 버킷을 생성하여 객체를 저장하고, 객체에 대한 고유한 키를 통해 데이터에 액세스할 수 있습니다. S3는 데이터의 내결함성과 고가용성을 제공하여 신뢰성 높은 데이터 저장소를 구성할 수 있습니다. 또한 S3의 정적 웹 사이트 호스팅 기능을 사용하여 간단한 정적 웹 페이지를 호스팅하는 기능도 확인할 수 있습니다.
AWS 콘솔에서 S3 검색 후 버킷 생성을 클릭합니다.
고유한 버킷 이름 입력 및 버킷을 생성할 지역을 지정합니다.

immersion-day-name아시아 태평양(서울) ap-northeast-2객체 소유권 항목에서 ACL활성화됨을 선택합니다.

버킷의 퍼블릭 엑세스 차단 설정을 해지합니다.

확인 메세지를 클릭합니다.나머지 기능은 Default로 설정하여 버킷 만들기를 클릭합니다.
정적 웹 호스팅을 위한 개체를 추가합니다.


업로드된 파일을 클릭하여 객체 URL을 확인 후 메모장에 복사합니다.
<html>
<head>
<meta charset="utf-8">
<title> AWS General Immersion Day S3 HoL </title>
</head>
<body>
<center>
<br>
<h2> Click image to be redirected to the EC2 instance that you created </h2>
<img src="업로드된 파일의 객체 URL" onclick="window.location='ALB DNS Name'"/>
</center>
</body>
</html>
객체 URL 정보를 index.html 코드에 업로드된 파일의 객체 URL에 붙여 넣습니다.로드 밸런서의 DNS 이름을 지정합니다.
ALB DNS 이름 지정 시 http:// 을 추가 기입합니다.index.html 작성 시 :
http://web-ALB-SG-1299518136.ap-northeast-2.elb.amazonaws.com

코드 수정 시 아래와 같이 수정되어야 합니다.
<img src="https://immersion-day-jihoon2.s3.ap-northeast-2.amazonaws.com/Untitled.png" onclick="window.location='http://web-ALB-SG-595074227.ap-northeast-2.elb.amazonaws.com/'">
AWS 파일을 업로드할 떄와 동일한 방법으로 수정한 index.html파일을 S3에 업로드합니다.
업로드된 개체들을 선택하고 작업 드롭다운 버튼을 클릭하여 ACL을 사용하여 퍼블릭으로 설정 버튼을 클릭한다.






영구 삭제 텍스트 입력 후 객체 삭제







스냅샷이 자동으로 제거되지는 않습니다. 


NAT 게이트웨이가 사용한 탄력적 IP가 자동으로 삭제되지 않으므로 수동으로 제거해야 합니다. 
