AWS/기초 서비스

AWS VPC, EC2, EBS, AMI 기초 실습하며 학습하기

Jaden Park 2021. 8. 16. 08:52

들어가며:

  • 목표
  • Architecture

 

VPC

  • VPC 생성
  • 서브넷 생성
  • Internet Gateway 생성 및 연결
  • 라우팅 테이블 생성 및 설정
  • 보안 그룹 생성 및 설정

 

EC2

  • 권한에 맞는 IAM 계정 생성
  • EC2 생성
  • EIP 생성 및 연결
  • EBS 볼륨 연결
  • 키페어를 사용하여 SSH 접근
  • 커스텀 AMI 백업 및 복원

 

리소스 삭제

 

 


 

들어가며:

 

목표

  • AWS 관리 콘솔에 친숙해지기
  • AWS 기본 네트워크 서비스인 VPC를 이해하고 생성
  • AWS 기본 가상머신 서비스인 EC2를 생성 및 접속 설정
  • AWS 기본 스토리지 서비스인 EBS 볼륨을 생성 및 연결

 

Architecture

 

VPC (Virtual Private Cloud)

독립된 가상의 클라우드 네트워크

AWS 클라우드 내 논리적으로 독립된 섹션을 제공하여, 사용자가 정의한 가상 네트워크상에서 다양한 AWS 리소스를 실행할 수 있게 지원

 

사용자는 VPC 내에 아래와 같은 것 등 생성 및 제어 가능

  • IP 대역
  • 인터페이스
  • 서브넷
  • 라우팅 테이블
  • 인터넷 게이트웨이
  • 보안 그룹
  • 네트워크 ACL

 

VPC 생성

Step 0. 아키텍쳐 참고

VPC 란 사용자가 정의한 가상 네트워크

붉은 박스의 VPC 를 생성하는 작업

 

Step 1. VPC 서비스 접근

AWS 계정에 로그인 후 네트워크 구성을 위해 VPC 서비스에 접근합니다.

 

 

Step 2. 네트워크 구성

네트워크 구성을 위해, VPC Dashboard로 접근.

Onboarding 에서 사용할 탭은 붉은 박스와 같음.

  • VPC
  • 서브넷
  • 라우팅 테이블
  • 보안 그룹

 

Step 3. VPC 구성

VPC 생성을 진행하기 위해 대시보드에서 VPC 클릭 후 VPC 생성 클릭

 

 

이름 태그IPv4 CIDR 블록을 아래와 같이 입력 후 VPC 생성 클릭

  • 이름 태그: "yourname"-Onboarding-vpc
  • IPv4 CIDR 블록: 10.0.0.0/16

 

서브넷 생성

Step 0. 아키텍쳐 참고

서브넷이란 IP 자원을 효율적으로 사용하기 위해 네트워크 영역과 호스트 영역으로 나눈 것.

아키텍쳐를 보면 가용 영역 당 Public subnet, Private subnet 서브넷 생성

 

 

Step 1. 서브넷 생성

 

VPC 대시보드에서 서브넷 클릭 후 서브넷 생성 클릭

 

 

VPC ID 는 직전에 생성했던 vpc 선택 후 붉은 박스와 같이 입력

새 서브넷 추가를 클릭하여 아래와 같이 서브넷 총 4개를 생성

 

서브넷 이름: Jaden-Onboarding-public-subnet1

가용 영역: ap-northeast-2a

IPv4 CIDR 블록: 10.0.1.0/24

 

서브넷 이름: Jaden-Onboarding-public-subnet2

가용 영역: ap-northeast-2c

IPv4 CIDR 블록: 10.0.2.0/24

 

서브넷 이름: Jaden-Onboarding-private-subnet1

가용 영역: ap-northeast-2a

IPv4 CIDR 블록: 10.0.11.0/24

 

서브넷 이름: Jaden-Onboarding-private-subnet2

가용 영역: ap-northeast-2c

IPv4 CIDR 블록: 10.0.12.0/24

 

 

Internet Gateway 생성 및 연결

Step 0. 아키텍쳐 참고

인터넷 게이트웨이란 다른 네트워크로 들어가는 입구 역할을 하는 네트워크 포인트

인터넷 게이트웨이를 생성하고 VPC에 연결하는 작업을 진행

 

Step 1. Internet Gateway 생성

 VPC 대시보드에서 인터넷 게이트웨이 클릭 후, 인터넷 게이트웨이 생성 클릭.

 

 

이름 태그: "yourname"-Onboarding-igw

입력 후 인터넷 게이트웨이 생성 클릭

 

 

Step 2. Internet Gateway 연결

생성된 인터넷 게이트웨이에서 VPC를 연결하는 작업을 진행

작업 클릭 후 VPC에 연결 클릭

 

 

 

방금 전 생성한 VPC를 선택한 뒤 인터넷 게이트웨이 연결 클릭

 

 

 

라우팅 테이블 생성 및 설정

 

Step 0. 아키텍쳐 참고

라우팅 테이블이란 컴퓨터 네트워크에서 목적지 주소로 목적지에 도달하기 위한 네트워크 노선으로 변환시키는 목적으로 사용되는 하나의 정보, 이정표

 

 

Step 1. 라우팅 테이블 생성

VPC 대시보드에서 라우팅 테이블 클릭 후 라우팅 테이블 생성 클릭

 

 

 

아래와 같이 입력 후 라우팅 테이블 생성 클릭

 

이름: "yourname"-Onboarding-public-rt

VPC: "yourname"-Onboarding-vpc

 

 

 

Step 2. 라우팅 테이블 연결

 

생성한 public-rt 라우팅 수정을 진행

생성한 Onboarding-public-rt 를 선택 후, 작업 -> 라우팅 편집 클릭

 

 

라우팅 추가 클릭 후 아래 내용 기입 한 뒤 변경 사항 저장 클릭

  • Destination: 0.0.0.0/0
  • Target: 인터넷 게이트웨이 -> Onboarding-igw 선택

 

Private route table 에 대한 설정은 Route table 을 Public 과 동일한 방법으로 생성

  • Destination: 0.0.0.0/0
  • Target: NAT -> Onboarding-NAT 선택

이러한 방법을 통해, private subnet에 위치한 리소스가 NAT G.W 를 타고 외부와 통신(패치 작업) 할 수 있음.

 

 

라우팅 테이블에 서브넷을 연결하는 작업을 진행

Onboarding-public-rt를 선택 후, 작업 -> 서브넷 연결 편집 클릭

 

 

위와 같이 10.0.1.0/24 , 10.0.2.0/24 서브넷을 추가한 뒤 연결 저장

 

Private subnet은 리소스를 배치하지 않습니다.

 

 

 

보안 그룹 생성 및 설정

Step 0. 아키텍쳐 참고

보안 그룹은 보안 관리를 위한 방화벽과 같은 역할을 합니다.

CIDR이나 AWS ARN 그리고 포트 번호를 이용하여 어느 곳에서 들어오는 데이터나 어떤 데이터를 허용할 지 정의할 수 있으며, 서브넷 단위(NACL)로도 적용 가능하지만 인스턴스와 같은 리소스 단위 (Security Group)로도 사용할 수 있습니다.

 

보안 그룹 생성을 진행합니다.

 

Step 1. 보안 그룹 생성

VPC 대시보드에서 보안 그룹 선택 후 보안 그룹 생성 클릭

 

 

보안 그룹 생성 기본 세부 정보에 아래와 같이 입력 후 보안 그룹 생성 클릭

 

  • 보안 그룹 이름: "yourname"-Onboarding-bastion-sg
  • 설명: "yourname"-Onboarding-bastion-sg
  • vpc: <"yourname"-Onboarding-vpc 의 VPC ID>

 

인바운드 규칙은 아래와 같이 설정

 

EC2 웹서버에 접근하기 위한 인바운드 규칙 추가

  • 유형: HTTP
  • 소스: anywhere

 

EC2 SSH 접근하기 위한 인바운드 규칙 추가 (소스를 anywhere로 설정 가능, 내 IP로 설정 시 해당 IP에서만 접근 가능)

  • 유형: SSH
  • 소스: 내 IP

 


EC2

EC2 (Elastic Compute Cloud) 란?

AWS 클라우드에서 확장 가능 컴퓨팅 용량을 제공

EC2를 사용하면 하드웨어에 손투자할 필요가 없어 더 빠르게 애플리케이션을 개발하고 배포 가능

변동 사항에 따라 신속하게 규모를 확장하거나 축소 가능

 

EC2 제공 기능

인스턴스 가상 컴퓨팅 환경
Amazon 머신 이미지(AMI) 서버에 필요한 운영체제와 여러 소프트웨어들이 적절히 구성된 상태로 제공되는 템플릿으로 인스턴스를 쉽게 만들 수 있음
인스턴스 유형(Types) 인스턴스를 위한 CPU, 메모리, 스토리지, 네트워킹 용량의 여러 가지 구성 제공
키페어 인스턴스 로그인 정보 보호
인스턴스 스토어 볼륨 임시 데이터를 저장하는 스토리지 볼륨으로 인스턴스 중단, 최대 절전 모드로 전환 또는 종료 시 삭제됨
Amazon EBS 블록 스토리지, 영구 스토리지 볼륨에 데이터 저장
리전 & 가용 영역 인스턴스와 EBS 등의 리소스를 다른 물리적인 장소에서 액세스 가능
보안그룹 인스턴스에 연결할 수 있는 프로토콜, 포트, 소스 IP 범위를 지정하는 방화벽 기능
탄력적 IP 주소 (EIP) 동적 클라우드 컴퓨팅을 위한 고정 IPv4 주소
태그 사용자가 생성하여 EC2 리소스에 할당할 수 있는 메타데이터
VPC 논리적으로 격리되어 있지만 원할 때 마다 네트워크를 간편하게 연결할 수 있는 가상 네트워크

 

 

권한에 맞는 IAM 계정 생성

EC2 인스턴스에 사용할 IAM 역할을 생성 한 뒤, EC2 인스턴스 생성 및 설정을 진행

다른 리소스를 보호하기 위해서 사용

 

Step 1. IAM 역할 생성

IAM 역할 생성을 위해, IAM 콘솔로 접근

 

 

 

IAM 대시보드 탭 중 역할 -> 역할 만들기 클릭

 

 

AWS 서비스 -> EC2 -> 다음: 권한 클릭

 

 

정책 필터 에서 SSM 검색

선택 후 다음: 태그 -> 다음: 검토 클릭

 

 

역할 이름: EC2RoleForSSM

역할 설명: EC2RoleForSSM

 

정책 확인 후 역할 만들기 클릭

 

 

EC2 생성

Step 0. 아키텍쳐 참고

우선 AZ - 2a 의 인스턴스 먼저 생성

 

Step 1. EC2 인스턴스 생성 진행

AWS 콘솔 서비스 중, EC2 를 선택하여 EC2 Dashboard 로 접근

 

 

EC2 대시보드에서 아래 탭 실습 예정, 인스턴스 시작 클릭

  • 인스턴스
  • AMI
  • 볼륨

 

Step 2. EC2 인스턴스 AMI 선택

인스턴스에 사용할 운영체제, 이미설치된 애플리케이션 서버의 템플릿을 선택하는 단계.

Amazon Linux 2 AMI 우측의 선택 버튼을 클릭하여 생성을 진행

 

 

 

 

Step 3. EC2 유형 선택

인스턴스 타입을 고르는 단계. (조립식 컴퓨터의 CPU와 GPU를 고르는 단계)

Instance Type은 t2.micro를 선택 후, Next: Configure Instance Details 버튼을 클릭

 

 

 

 

Step 4. 인스턴스 세부 정보 구성

아래와 같이 인스턴스 세부 정보 구성 후 다음: 스토리지 추가 클릭

Network: Onboarding-vpc

 

Subnet: Onboarding-public-subnet1 | ap-northeast-2a

 

Auto-assign Public IP: 활성화

 

IAM role: EC2RoleForSSM

 

#include
https://workshop.mzcloud.xyz/AWS-101-2.2.8/download/AWS_101_HOL_Linux_Userdata

 

 

 

 

 

Step 5. 스토리지 추가

인스턴스의 저장소를 설정하는 단계. (조립식 컴퓨터의 하드디스크[SSD,HDD...]을 고르는 단계)기본값 유지 -> 다음: 태그 추가 클릭

 

 

 

Step 6. 태그 추가

인스턴스에 꼬리표를 다는 단계. 정리된 꼬리표 즉, 태그 설정을 통해 AWS 리소스를 관리할 수 있음태그 값을 아래와 같이 입력 후 다음: 보안 그룹 구성 클릭

  • Key: Name
  • Value: jaden-Onboarding-server1

 

Step 7. 보안 그룹 구성

인바운드, 아웃바운드 규칙 특정 트래픽에 대한 방화벽 규칙을 설정하는 단계

보안 그룹 구성에서 기본 보안 그룹 선택 -> 방금 전 생성한 보안 그룹 ID 선택 -> 검토 및 시작 클릭

 

 

Step 8. 검토 및 공개키 설정

검토 단계. 잘못 설정한 값이 없는지 확인시작하기 버튼을 눌러 인스턴스 생성 진행

 

 

 

SSH 로 인스턴스를 접근할 때 필요한 공개키 지정만약, 기존에 가지고 있는 공개키가 있다면 기존 키 페어 등록

기존에 가지고 있는 공개키가 없다면 새 키 페어 생성

키 페어 이름 삽입 후 키 페어 다운로드

인스턴스 시작 클릭

 

정상 시작이 됐음을 확인

 

 

 

 

 

EIP 생성 및 연결

EIP 란?

Elastic IP 로 부족한 공인 IP 자원을 AWS에서 임대해주는 서비스

1개의 한해서 인스턴스에 할당해놓으면 무료

단, EIP를 대여만 하고 인스턴스에 할당하지 않으면 1개만 가지고 있더라도 과금

 

 

Step 1. EIP 생성

EC2 대시보드에서 탄력적 IP -> 탄력적 IP주소 할당

 

 

네트워크 경계 그룹: ap-northeast-2

Public IPv4 address pool: Amazon's pool of IPv4 address

할당 확인 클릭

 

 

 

Step 2. EIP 연결

생성된 EIP 선택 -> 작업 -> 탄력적 IP 주소 연결

 

 

IP주소를 확인 후, 인스턴스 항목에서 직전에 만들었던 EC2 인스턴스 ID를 선택한 뒤 연결 클릭

 

 

발급받은 IP로 서버의 public IP가 변경된 것을 확인할 수 있음.

 

 

웹 브라우저에서 인스턴스의 Public IP를 입력하여 접속 테스트를 진행

인스턴스 설정 시, 입력한 Userdata 값이 반영된 웹페이지를 확인할 수 있음.

웹페이지 상에서 EC2 인스턴스의 Private, AZ 등을 확인할 수 있습니다.

 

EBS 볼륨 연결

EBS 란?

EBS 는 블록 스토리지 서비스로 볼륨 위에 파일 시스템을 생성하거나 하드 드라이브와 같은 동작.

 

EBS 기능

특정 가용 영역에서 EBS 볼륨을 생성한 다음 동일한 가용 영역에 있는 인스턴스에 연결 가능

가용 영역 외부에 볼륨을 제공하기 위해 스냅샷을 생성하고 해당 지역에서 새 볼륨으로 복원 가능

 

하나의 EC2에 여러 개의 EBS를 붙히는 것은 가능하지만

2개 이상의 EC2에 하나의 EBS를 붙히는 것은 불가능. (NAS 와 같은 스토리지 서비스를 원한다면 EFS 혹은 S3를 사용할 것)

 

실습에 사용할 탭

EBS

  • 볼륨
  • 스냅샷

 

Step 1. EBS 볼륨 생성

EC2 대시보드 볼륨 -> 볼륨 생성 클릭

 

볼륨 생성 설정은 아래와 같이 한 뒤 볼륨 생성 클릭

  • Volume Type: General Purpose SSD (gp2)
  • Size (GiB): 1
  • Availability Zone: ap-northeast-2a
  • Key: Name / Value: Onboarding-server1-vol1

 

Step 2. EBS 볼륨 연결

생성한 EBS 볼륨 선택 -> 작업 -> 볼륨 연결

 

직전에 만든 인스턴스 ID를 선택한 뒤 연결 클릭

 

키페어를 사용하여 SSH 접근

인스턴스 생성 시 다운로드 받았던 경로에서 공개키 권한 변경

ssh 접속

 

lsblk 명령으로 직전에 마운트한 EBS 볼륨 확인

 

 

EBS 볼륨을 파티셔닝을 하여 마운트 된 것을 확인할 수 있습니다.

 

df -h
cd ~
wget https://workshop.mzcloud.xyz/AWS-101-2.2.8/download/AWS_101_HOL_Script1
sh ./AWS_101_HOL_Script1
sudo mount -a
df -h


 wget https://workshop.mzcloud.xyz/AWS-101-2.2.8/download/AWS_101_HOL_Script2
 sh ./AWS_101_HOL_Script2
 ls -al /mount_1g

 

 

 

wget https://workshop.mzcloud.xyz/AWS-101-2.2.8/download/AWS_101_HOL_Script2
sh ./AWS_101_HOL_Script2
ls -al /mount_1g

Web Root Path 가 /mount_1g 로 변경된 것을 확인할 수 있습니다.

 

 

커스텀 AMI 백업 및 복원

사용자 용도에 맞는 아마존 머신 이미지 템플릿을 만들 수 있습니다.

 

 

Step 1. 커스텀 AMI 백업

EC2 대시보드 -> 인스턴스 -> 직전에 생성한 인스턴스 선택 -> 작업 -> 이미지 및 템플릿 -> 이미지 생성 클릭

 

아래와 같이 설정 한 뒤 이미지 생성 클릭

이미지 이름: "name"-Onboarding-server1-ami

이미지 설명: "name"-Onboarding-server1-ami

재부팅 안 함: 활성화 (해당 옵션을 활성화 하면 Source 인스턴스는 reboot 하지 않고 AMI 를 생성)

 

 

 

Step 2. AMI 복원

Pending 상태에서 available 상태로 변경 시 수행 가능

EC2 대시보드 AMI -> 직전에 생성한 AMI 선택 -> 작업 -> 시작하기

 

 

기본값 설정 후 다음 클릭

 

 

아래와 같이 설정한 뒤 다음 클릭

  • 네트워크: "name"-Onboarding-vpc
  • 서브넷: "name"-Onboarding-public-subnet2 (ap-northeast-2c)
  • 퍼블릭 IP 자동 할당: 활성화
  • IAM 역할: EC2RoleForSSM

 

기본값 유지한 뒤 다음 선택

 

 

아래와 같이 입력 후 다음 선택

Name: "name"-Onboarding-server2

 

 

보안그룹은 기존에 만든 그룹 선택 후 검토 및 시작 클릭

 

 

기존에 만든 키페어가 있으니

기존 키 페어 선택 -> 인스턴스 시작

 

 

커스텀AMI 를 바탕으로 서버2가 정상적으로 생성되었습니다.

 

 

Step 3. EIP 변경

EC2 대시보드 -> EIP -> 기존 Server1에 부여한 EIP 선택 -> 작업 -> 탄력적 IP 주소 연결 해제

 

 

Server2 에 할당하기 위해 연결되어있는 EIP 연결 해제 클릭

 

 

 

 

EC2 대시보드 탄력적 IP -> 기존 대여한 EIP 선택 -> 작업 -> 탄력적 IP 주소 연결 클릭

 

 

"name"-Onboarding-server2 선택 -> 연결

 

 

 

Step 4. 커스텀 AMI로 생성된 인스턴스 확인

EIP가 Server2 인스턴스랑 연결된 것을 확인

 

 

 

새로고침 시 EIP에 연결된 인스턴스가 변경된 것을 확인할 수 있습니다.

또한, Onboarding-server2에 연결한 Public IP로 웹브라우저에 접속 시 위와 같이 server1에서 설정한 내용을 바탕으로한 인스턴스가 생성되었음을 확인할 수 있습니다.


리소스 삭제

 

STEP 1. 인스턴스 삭제

 

STEP 2. EIP 릴리즈

 

 

STEP 3. AMI 등록 취소

 

 

STEP 4. EBS 볼륨 삭제

 

STEP 5. 스냅샷 삭제