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-Lab
10.0.0.0/16
)ap-northeast-2a
ap-northeast-2c
서브넷 CIDR 블록 사용자 지정
을 선택 후 해당 서브넷에 맞는 CIDR블록을 입력합니다.10.0.10.0/24
1**0.0.20.0/24**
10.0.100.0/24
10.0.200.0/24
1개의 AZ에서
없음
VPC 생성
버튼 클릭합니다.Amazon EC2는 AWS에서 제공하는 가상 컴퓨팅 리소스로, 사용자는 필요에 따라 가상 서버(인스턴스)를 생성하고 실행하여 컴퓨팅 환경을 유연하게 구성할 수 있습니다. EC2 인스턴스는 사용자가 선택한 운영 체제에서 실행되며, 인스턴스 유형, 스토리지 옵션, 네트워크 구성 등을 조절하여 안전하고 확장 가능한 웹 서비스 환경을 구축할 수 있습니다.
Web server for custom AMI
Amazon Linux 2023 AMI
64-bit(x86)
t2micro
키 페어 없이 계속 진행(권장되지 않음)
VPC-Lab를 선택
하고 서브넷은 Public Subnet을 선택
합니다.퍼블릭 ip 자동 할당을 활성화
합니다.보안그룹을 생성
항목을 선택하고 인바운드 보안 그룹 규칙
에서 보안 그룹 규칙 추가
를 선택합니다.Immersion Day - Web Server
Immersion 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 v1
LAMP 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-Lab
VPC-Lab-subnet-public1-ap-northeast-2a
VPC-Lab-subnet-public2-ap-northeast-2c
web-ALB-SG
web-ALB-SG
VPC-Lab
HTTP
Anywhere-IPv4
**web-ALB-SG를 활성화
합니다.**기본보안 그룹은 비활성화
합니다.Web-TG
HTTP : 80
IPv4
VPC-Lab
다음
버튼 및 대상 그룹 생성
버튼을 클릭하여 생성을 완료합니다.로드 밸런서 생성
버튼을 클릭하여 로드 밸런서를 생성합니다.
좌측 카테고리에서 보안 그룹 선택 후 Auto Scaling을 사용하기 위한 보안 그룹 생성합니다.
ASG-Web-Inst-SG
HTTP Allow
HTTP
사용자 지정 - web-ALB-SG
시작 템플릿 이름 및 설명을 기입하고 AutoScaling 지침을 활성화합니다.
web
Immersion 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))
새로운 태그 추가
를 클릭합니다.Name
Web InstanceResource types
인스턴스, 볼륨
다른 모든 설정은 기본값으로 두고, 우측 시작 탬플릿 생성을 클릭합니다.
Auto Scaling 그룹(ASG)을 클릭 후 생성 및 설정합니다.
다른 모든 설정은 기본값으로 두고, 우측 시작 탬플릿 생성을 클릭합니다.
Auto Scaling 그룹(ASG)을 클릭 후 생성 및 설정합니다.
web-ASG
web
VPC-Lab
VPC-Lab-subnet-private1-ap-northeast-2a
VPC-Lab-subnet-private1-ap-northeast-2c
기존 로드밸런서에 연결
을 선택하고 로드 밸런서 대상 그룹에서 선택
을 클릭하여 앞에서대상 추적 조정 정책
을 선택한다.30
다른 모든 설정은 기본값으로 두고 오른쪽 하단에 있는 다음 버튼을 클릭
합니다.
이번 핸즈온에서는 `알림을 추가 하지 않습니다` . 다음 버튼을 클릭합니다.
태그 추가 단계에서는 간단히 이름 태그를 할당하겠습니다.
Name = ASG-web-Intance
모든 설정을 확인하신 후 오른쪽 하단의 Auto Scaling Group 생성 버튼을 클릭
Auto Scaling 그룹 콘솔에 생성된 Auto Scaling 그룹을 확인할 수 있습니다.
생성한 로드밸런서의 DNS 이름을 웹 브라우저에 입력하여 확인할 수 있습니다.
Amazon RDS는 클라우드에서 관계형 데이터베이스를 쉽게 설정, 운영 및 확장할 수 있게 해주는 웹 서비스입니다. 시간이 많이 소요되는 데이터베이스 관리 작업을 관리하는 동시에 비용 효율적이고 크기 조정이 가능한 용량을 제공하므로 사용자는 애플리케이션과 비즈니스에 집중할 수 있습니다.
DB-SG
Database Security Group
VPC-Lab
MySQL/Aurora
3306
사용자 지정 (ASG-Web-Inst-SG)
보안 그룹 생성을 클릭
하면 해당 보안 그룹이 생성됩니다.MySQL 8.0.32
프리티어
rdscluster
awsuser
awspassword
버스터블 클래스(t 클래스 포함)
db.t3.micro
스토리지는 Default로 설정합니다.
연결 페이지에서 네트워크 및 보안을 설정합니다.
EC2 컴퓨팅 리소스에 연결 안함
IPv4 선택
VPC-Lab
새 DB 서브넷 그룹 생성
아니요
기존 항목 선택 - DB-SG(활성화) default(비활성화)
기본 설정 없음
Default
immersionday
default.mysql5.7
default.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가 자동으로 삭제되지 않으므로 수동으로 제거
해야 합니다.