EC2

장현웅·2023년 10월 31일
0

Amazon Elastic Compute Cloud(Amazon EC2)는 AWS에서 제공하는 클라우드 컴퓨팅 서비스 중 하나로, 가상 서버를 생성하고 구성하여 사용할 수 있게 만들어주고, 이를 관리할 수 있는 서비스입니다. 쉽게 말해서 하나의 독립된 컴퓨터를 임대해주는 서비스라고 생각하면 됩니다.

EC2, 즉 Elastic Compute Cloud,는 그 이름처럼 탄력있는 컴퓨팅 클라우드 서비스로, 사용자가 필요에 따라 컴퓨팅 리소스를 확장하거나 축소할 수 있는 기능을 제공합니다. 이는 더 효율적인 비용 관리를 가능하게 합니다. EC2를 사용하면 애플리케이션 또는 워크로드가 활발하지 않을 때는 조금의 리소스만 사용하다가, 트래픽이 증가하거나 요구 사항이 변화할 때 컴퓨팅 리소스를 폭발적으로 늘릴 수 있습니다.

또한 EC2는 사용량에 따라 요금이 부과되며, 시간당 또는 초당 비용으로 계산됩니다. 이는 사용자가 실제로 사용한 컴퓨팅 리소스에 따라 요금이 책정되므로 낭비를 최소화할 수 있습니다. 요금은 EC2 인스턴스 유형, 운영 체제, 스토리지, 네트워크 트래픽 등 다양한 요인에 따라 다를 수 있으며, AWS의 각 지역에 따라 다른 요금이 적용됩니다.

클라우드 서비스의 종류

  • IaaS (Infrastructure as a Service) : 하드웨어 인프라를 인터넷을 통해 제공하는 서비스를 말합니다. IaaS는 가상화된 하드웨어, 스토리지, 네트워크, 운영체제 등을 제공하며, 사용자는 이를 이용해 자신의 애플리케이션을 실행할 수 있습니다. AWS EC2, Microsoft Azure, Google Compute Engine 등이 IaaS 서비스를 제공합니다.
  • PaaS (Platform as a Service) : 애플리케이션을 개발, 실행, 관리하기 위한 플랫폼을 인터넷을 통해 제공하는 서비스를 말합니다. PaaS는 IaaS에서 제공하는 하드웨어 인프라와 미들웨어를 이용하여, 애플리케이션 개발, 배포, 운영 등에 필요한 환경을 제공합니다. 예를 들어, AWS Elastic Beanstalk, Heroku, Google App Engine 등이 PaaS 서비스를 제공합니다.
  • SaaS (Software as a Service): SaaS는 사용자에게 완전한 애플리케이션을 제공하며, 이 애플리케이션은 클라우드 제공업체의 서버에서 실행됩니다. 사용자는 애플리케이션에 대한 제한된 제어권을 가지며, 클라우드 제공업체가 모든 인프라, 운영 체제, 백엔드 애플리케이션 및 데이터 관리를 담당합니다. SaaS는 대부분의 사용자에게 필요한 소프트웨어 서비스를 제공합니다. 예를 들어, 구글 드라이브, 마이크로소프트 오피스 365, Salesforce 등이 SaaS 서비스의 예입니다.

인스턴스

인스턴스는 실제 물리적으로 존재하는 컴퓨터 환경이 아닌 하드웨어 리소스를 가상화한 컴퓨터 서버입니다. 위 사진의 'Launch instances'버튼을 눌러 인스턴스를 1분만에 생성할 수 있습니다. 그렇게 생성된 컴퓨터 서버는 마치 우리의 책상에 놓여져 있는 컴퓨터를 사용하듯 원격으로 접속하여 사용 및 제어를 할 수 있습니다.

각 인스턴스는 독립적으로 실행되고 관리되기 때문에 필요에 따라 생성, 시작, 중지, 종료 등이 가능합니다.

EC2 인스턴스는 다양한 운영 체제 (예: Linux, Windows)와 인스턴스 유형을 지원합니다. EC2는 다양한 용도로 사용될 수 있으며, 주요 사용 사례는 다음과 같습니다.

  1. 웹 애플리케이션 호스팅

EC2를 사용하여 웹 서버를 호스팅하고 웹 애플리케이션을 구동할 수 있습니다.
다양한 웹 서버 소프트웨어 (예: Apache, Nginx) 및 프로그래밍 언어 (예: PHP, Python, Node.js)를 지원합니다.
Auto Scaling 및 로드 밸런싱과 함께 사용하여 트래픽에 따라 확장 가능한 웹 애플리케이션을 만들 수 있습니다.

  1. 데이터베이스 호스팅

EC2를 사용하여 관계형 데이터베이스 (예: MySQL, PostgreSQL, SQL Server) 또는 NoSQL 데이터베이스 (예: MongoDB, Cassandra)를 호스팅할 수 있습니다.
데이터베이스 서버를 운영 체제에 맞게 구성하여 데이터 저장 및 관리에 사용할 수 있습니다.

  1. 컴퓨팅 작업 (예: 데이터 분석, 머신 러닝)

EC2는 다양한 컴퓨팅 작업에 사용됩니다. 데이터 분석, 머신 러닝 모델 훈련, 병렬 처리, 그리고 고성능 컴퓨팅 (HPC) 작업을 수행할 수 있습니다.
GPU를 사용하는 인스턴스를 선택하여 머신 러닝 작업을 가속화할 수 있습니다.

  1. 애플리케이션 테스트 및 개발

개발 및 테스트 환경을 구축하기 위해 EC2 인스턴스를 사용할 수 있습니다.
다양한 운영 체제와 소프트웨어 스택을 지원하므로 애플리케이션을 개발하고 테스트할 때 필요한 환경을 만들 수 있습니다.

EC2의 다양한 옵션들

  1. 인스턴스 유형 (Instance Types)
    AWS EC2 인스턴스 유형은 다양한 성능 특성을 제공합니다. 이는 CPU, 메모리, 스토리지 및 네트워크 처리량을 나타냅니다. 예를 들어, "t2.micro"는 경제적이고 소규모 워크로드에 적합하며, "m5.large"는 중대규모 애플리케이션에 적합합니다. 인스턴스 유형을 선택할 때 워크로드 요구 사항을 고려해야 합니다.

  2. 운영 체제 (Operating System)
    EC2 인스턴스는 다양한 운영 체제를 지원하며, 선택할 수 있습니다. 예를 들어, Amazon Linux, Ubuntu, Windows Server, Red Hat 등이 있습니다. 이러한 운영 체제 중 하나를 선택하고 EC2 인스턴스에 설치하여 사용할 수 있습니다.

  3. 스토리지 옵션 (Storage Options)
    EC2 인스턴스에는 다양한 스토리지 옵션이 있습니다. 인스턴스 스토어는 인스턴스에 연결된 일시적인 로컬 스토리지를 제공하며, Amazon Elastic Block Store (EBS)는 영구적인 블록 스토리지를 제공합니다. Amazon S3는 객체 스토리지로, 데이터를 저장하고 공유할 수 있는 옵션이며, 버킷과 객체로 구성됩니다.

  4. 보안 그룹 (Security Groups)
    보안 그룹은 EC2 인스턴스에 대한 방화벽 규칙을 정의하며, 인바운드 및 아웃바운드 트래픽을 제어합니다. 각 보안 그룹은 특정 포트 범위, 프로토콜 및 허용되는 IP 주소 범위를 지정할 수 있으며, 보안을 강화하는 데 중요한 역할을 합니다.

  5. 키 페어 (Key Pair)
    키 페어는 SSH 또는 RDP와 같은 리모트 액세스를 관리하는 데 사용됩니다. EC2 인스턴스를 시작할 때 키 페어를 선택하면 보안을 강화하고, 인스턴스에 안전하게 접근할 수 있습니다. 쉽게 말해, 컴퓨터에서 이 인스턴스에 접속할 떄, 데이터를 암호화해주는 알고리즘을 지정해주는 부분입니다.

  • RSA (Rivest–Shamir–Adleman) 알고리즘
    컴퓨터와 서버 사이에 데이터를 주고 받을 떄, 데이터를 안전하게 암호화합니다. 이것은 마치 데이터에 자물쇠를 걸어놓는 것과 같으며 데이터를 수신하는 측에서는 해당 자물쇠를 열어서 데이터를 해독합니다. 또한 RSA는 서버가 사용자를 인증하는 데도 사용됩니다. 서버는 데이터에 디지털 서명을 붙이고, 이 서명은 서버의 신원을 확인하는 데 사용됩니다. 디지털 서명은 데이터가 변조되지 않았음을 입증합니다.
    RSA는 특정 인스턴스에 접속할 때 암호화 알고리즘을 저장해주는 것이 아니라 보안을 위한 RSA 키 페어를 생성하고 사용하여 데이터를 암호화하며, 서버와 컴퓨터 간의 통신을 안전하게 합니다.

  • ED25519
    고성능 디지털 서명 알고리즘으로, 데이터의 무결성을 확인하고 인증을 제공하는 데 사용됩니다.

  • Private key file format
    암호키를 어떤 파일에 저장할지 지정하는 부분입니다.

  1. 탄력적 IP 주소 (Elastic IP Address)
    탄력적 IP 주소는 EC2 인스턴스에 고정된 공용 IP 주소를 할당합니다. 이를 사용하여 인스턴스를 중지하거나 다시 시작할 때 IP 주소가 변경되지 않도록 유지할 수 있습니다. 이것은 IP 주소를 고정하고, DNS 등록 및 방화벽 규칙 업데이트를 용이하게 합니다.

  2. 사용 가능한 영역 (Availability Zones)
    AWS의 여러 가용 영역은 고가용성을 제공하고 장애 대응을 위한 중요한 역할을 합니다. 여러 가용 영역에서 EC2 인스턴스를 실행하여 애플리케이션의 신뢰성을 높일 수 있습니다. 각 가용 영역은 다른 빌딩 블록과 전력 및 네트워크 인프라를 갖추고 있어, 장애가 발생해도 애플리케이션을 지속적으로 운영할 수 있습니다.

인스턴스 띄워보기




EC2로 배포된 주소로 들어갔는데 계속 로딩중이라면, 99% 방화벽 문제입니다.

Inbound rules의 'port range' 설정으로 특정 포트 또는 포트 범위에서 수신되는 트래픽을 제어할 수 있으며, 원하는 서비스 또는 애플리케이션에 대한 접근을 관리할 수 있습니다.

'Security Groups'에서 EC2 인스턴스와 다른 AWS 리소스 간의 모든 네트워크 트래픽을 허용해보겠습니다.


이제 인스턴스를 연결해보겠습니다.


지금 현재 여기가 서울 aws 데이터 센터에 있는 클라우드 컴퓨터 화면이라고 보면 됩니다. 이제 여기서 명령어를 통해 서버를 열어줄 수 있습니다.

sudo apt-get update					# 패키지 다운로드
sudo apt-get install nginx			# Nginx 웹 서버를 설치

echo "<h1>EC2로 띄워봤음! $(hostname -f)</h1>" > /usr/share/nginx/html/		# 웹 페이지 내용을 생성하고, /usr/share/nginx/html/ 디렉토리에 해당 내용을 저장


sudo systemctl start nginx			# Nginx 웹 서버를 시작

해당 html을 수정할 수도 있습니다.

ubuntu@ip-172-31-43-241:~$ cd /var/www/html
ubuntu@ip-172-31-43-241:/var/www/html$ ls
index.nginx-debian.html
ubuntu@ip-172-31-43-241:/var/www/html$ sudo vim index.nginx-debian.html

이대로 놔두면 과금이 되니까 사용도 해봤으니 인스턴스(컴퓨터)를 꺼보겠습니다.


인스턴스를 껐다가 키면 public IP가 변경됩니다. 고정된 IP가 필요한 경우(프론트에서 이 IP로 연결해뒀을 경우), Elastic IP에서 할당이 가능합니다.



이렇게 IP를 할당하면 인스턴스를 껐다가 켜도 고정이 됩니다. 하지만 이제 이 IP는 저에게 배정되었기 때문에 사용할 떄마다 과금이 됩니다. 할당을 풀어주고 Elastic ID를 다시 Release해서 사람들에게 돌려주면 과금이 되지 않습니다.

인스턴스 타입

't2.nano'의 't'는 클래스, '2'는 세대, '.'뒤의 'nano'는 크기입니다.

네트워크 보안을 관리하기 위한 보안 그룹(Security Group) 및 포트(Port)

  • 보안 그룹 (Security Group)

여러 인스턴스에 할당 가능: 보안 그룹은 하나 이상의 인스턴스에 적용할 수 있는 방화벽 규칙의 집합입니다. 이를 통해 여러 인스턴스에 동일한 보안 규칙을 적용할 수 있으며, 이는 관리 및 유지보수를 간편하게 합니다.

time out → 보안 규칙 이슈: 보안 그룹을 사용하면 포트 및 프로토콜을 제어하여 연결 시도 시 시간 초과가 발생하거나, 거부된 접속 등을 관리할 수 있습니다. 이를 통해 네트워크 트래픽을 제어하고 시스템의 보안을 유지할 수 있습니다.

connection refuse → EC2 내부 이슈: 인스턴스 내부에서 서비스가 실행 중이지 않거나 잘못 구성되어 있을 때, 연결이 거부될 수 있습니다. 보안 그룹은 이러한 내부 이슈를 해결하는 데 도움을 줄 수 있습니다.

모든 inbound는 디폴트로 막혀있습니다: 새로운 보안 그룹을 생성하면 기본적으로 모든 인바운드(Inbound) 트래픽이 차단됩니다. 사용자는 필요한 포트 및 프로토콜을 구성하여 허용해야 합니다.

모든 outbound는 디폴트로 열려있습니다: 반면, 아웃바운드(Outbound) 트래픽은 기본적으로 모든 방향으로 허용됩니다. 사용자는 필요에 따라 아웃바운드 트래픽을 제한할 수 있습니다.

  • 포트 (Port)

22 = SSH: Secure Shell (SSH) 포트는 원격으로 서버 또는 인스턴스에 접속하기 위해 사용됩니다. SSH는 보안된 터미널 세션을 제공하며, 대부분의 리눅스 및 UNIX 시스템에서 사용됩니다.

21 = FTP: File Transfer Protocol (FTP) 포트는 파일 전송을 위한 프로토콜을 사용합니다. FTP는 파일을 업로드 및 다운로드하기 위해 사용되며, 보안 관련 문제로 인해 SFTP 또는 FTPS와 같은 안전한 대안이 더 권장됩니다.

80 = HTTP: HTTP 포트는 웹 서버에서 웹 페이지를 제공하기 위해 사용됩니다. 웹 브라우저는 HTTP 포트를 통해 웹 서버에 연결하여 웹 페이지를 요청하고 표시합니다.

443 = HTTPS: HTTPS 포트는 안전한 HTTP 연결을 나타냅니다. HTTPS는 웹 사이트의 보안 연결을 제공하며, 데이터의 암호화를 통해 데이터 무결성과 기밀성을 유지합니다. 현재 웹에서 광범위하게 사용됩니다.

SSH 연결

SSH(Secure Shell)는 네트워크 상에 존재하는 다른 컴퓨터에 접근하거나 파일을 업/다운로드 하는 등의 작업을 할 수 있는 프로토콜 및 소프트웨어입니다. SSH는 데이터를 암호화하여 보안을 제공하며, 원격 시스템에 명령을 전송하고 파일을 전송하는 데 사용됩니다.

chmod 명령어는 유닉스와 리눅스 시스템에서 파일 및 디렉토리의 권한을 설정하는 데 사용됩니다. 권한은 파일 또는 디렉토리를 읽기, 쓰기, 실행하는 데 대한 권한을 나타내며, 파일의 소유자, 그룹 및 나머지 사용자에 대한 권한을 설정할 수 있습니다.

chmod 명령어의 숫자 권한 표기법은 각 권한에 대한 숫자를 할당하는 방식으로 작동합니다.

  • 읽기 (Read): 4
  • 쓰기 (Write): 2
  • 실행 (Execute): 1
  • 권한 없음 (No Permission): 0

chmod 400명령은 해당 파일에 대해 읽기 권한만 부여됩니다. 다른 사용자들은 읽기 및 쓰기 권한이 없습니다. 이 권한은 일반적으로 중요한 정보를 포함하는 파일이나 개인 키 파일과 같은 보안 파일에 적용됩니다.

  • 소유자(Owner): 4 → 읽기 (4)
  • 그룹(Group): 0 → 권한 없음 (0)
  • 나머지(Other): 0 → 권한 없음 (0)

chmod 644 명령은 file.txt 파일의 권한을 다음과 같이 변경합니다.

  • 소유자(Owner): 6 (4 + 2) → 읽기 (4) + 쓰기 (2)
  • 그룹(Group): 4 → 읽기 (4)
  • 나머지(Other): 4 → 읽기 (4)

이렇게 key 파일에 대한 권한 설정이 끝났습니다. 이제 클라이언트의 컴퓨터에서 SSH를 사용하여 원격 서버에 접속하려면 다음과 같은 명령어를 사용해야 합니다.

ssh -i 개인키파일 username@ip





이제 클라우드 컴퓨터에 접속했습니다. 이 터미널은 내 컴퓨터가 아닌 아마존 서울 데이터센터에 있는 클라우드 컴퓨터의 터미널입니다.

클라우드 컴퓨터에 접속하는 두 번째 방식이었습니다.

Elastic Block Store (EBS)

EBS (Amazon Elastic Block Store)
EBS는 Amazon Web Services (AWS)에서 제공하는 클라우드 기반 블록 스토리지 서비스입니다. EBS는 EC2 인스턴스와 함께 사용되며 데이터를 저장하는 데 사용됩니다. EBS 볼륨은 EC2 인스턴스에 연결되는 블록 스토리지 장치를 나타냅니다. EBS는 여러 유형의 스토리지 볼륨을 제공하며, 이러한 볼륨은 데이터 저장을 위한 공간을 제공합니다.

블록 스토리지는 데이터를 고정된 블록 크기로 나누어 저장하는 스토리지 형식을 말합니다. 이러한 블록은 독립적으로 관리되며 데이터의 저장 및 관리에 유용합니다. 블록 스토리지는 파일 스토리지와 대조적으로 파일 단위가 아닌 블록 단위로 데이터를 처리합니다. 각 블록은 고유한 주소를 가지며 레이어로 스토리지된 데이터에 대한 효율적인 액세스를 가능하게 합니다.

EBS 볼륨 (EBS Volume)
EBS 볼륨은 EC2 인스턴스에 연결되어 데이터를 저장하는 데 사용되는 블록 스토리지 디바이스입니다. 이것은 EC2 인스턴스의 데이터를 저장하고 관리하기 위한 스토리지 공간을 나타냅니다.

EBS 스냅샷 (EBS Snapshot)
EBS 스냅샷은 EBS 볼륨의 데이터와 설정을 백업하는 데 사용되는 것입니다. EBS 스냅샷은 EBS 볼륨의 현재 상태를 캡처하고 나중에 이전 상태로 복원하거나 새로운 EBS 볼륨을 만드는 데 사용됩니다. 스냅샷은 데이터의 안전한 보존과 백업을 제공합니다.

요약하면, EBS는 클라우드 스토리지 서비스이고, EBS 볼륨은 EC2 인스턴스에 연결되는 스토리지 디바이스이며, EBS 스냅샷은 EBS 볼륨의 데이터를 백업하고 복구하기 위한 도구입니다.

EBS 볼륨은 특정 가용 영역에 종속되어 있으며, 해당 가용 영역 내에서만 사용할 수 있기 때문에 다른 가용 영역으로 쉽게 이동하거나 데이터를 복제하는 것이 어렵습니다. 이로 인해 데이터의 지리적 이동 또는 리전 간 이동이 필요한 경우 복제 및 마이그레이션 작업이 더 복잡해질 수 있습니다. 또한 선택한 가용 영역에 장애가 발생하면 해당 가용 영역 내의 모든 EBS 볼륨이 영향을 받을 수 있습니다. 따라서 데이터의 안전성과 가용성을 고려할 때 가용 영역 및 리전을 신중하게 선택해야 합니다.

반면에 EBS 스냅샷은 EBS 볼륨의 백업을 생성하고, 필요한 경우 다른 리전으로 복사하여 데이터 이동과 백업 및 복원을 지원합니다.

EBS 스냅샷을 다른 리전으로 복사하려면 다음 단계를 따를 수 있습니다.

  1. 스냅샷 생성
    먼저 EBS 볼륨의 스냅샷을 생성합니다. 이 스냅샷은 백업 및 데이터 이동에 사용됩니다.

  2. 스냅샷 권한 설정
    스냅샷을 복사하려는 다른 리전에서도 엑세스할 수 있도록 스냅샷의 권한을 설정합니다.

  3. 다른 리전으로 스냅샷 복사
    AWS Management Console, AWS Command Line Interface (CLI) 또는 AWS SDK를 사용하여 스냅샷을 다른 리전으로 복사합니다.

  4. 복사된 스냅샷을 사용
    다른 리전에서 복사한 스냅샷을 사용하여 새로운 EBS 볼륨을 생성하거나 이전한 데이터를 복원합니다.

EC2 인스턴스를 생성할 때, 기본적으로 루트 볼륨 (Root Volume)이라고 불리는 EBS 볼륨이 자동으로 생성됩니다. 이 루트 볼륨은 EC2 인스턴스의 운영 체제 및 애플리케이션 파일을 포함하며, 보통 인스턴스의 기본 스토리지로 사용됩니다.


EBS Volume

볼륨을 생성해보겠습니다. EBS(Elastic Block Store) 볼륨을 생성한다는 것은 새로운 스토리지 공간을 만들어 데이터를 저장할 수 있는 블록 스토리지 디바이스를 생성하는 것을 의미합니다. 볼륨 생성을 통해 다음과 같은 작업을 수행할 수 있습니다.

  1. 데이터 저장
    생성한 EBS 볼륨은 데이터를 저장하는 용도로 사용됩니다. 이 데이터는 EC2 인스턴스에 연결된 볼륨에 저장됩니다.

  2. 데이터 백업
    EBS 스냅샷을 사용하여 생성된 볼륨의 현재 상태를 백업할 수 있습니다. 이를 통해 데이터의 안전한 보관 및 재사용이 가능해집니다.

  3. 용량 확장
    필요에 따라 EBS 볼륨의 용량을 조정할 수 있습니다. 스토리지 요구사항이 변할 때 볼륨을 확장할 수 있습니다.

  4. 데이터 이동
    EBS 볼륨은 EC2 인스턴스 간에 이동할 수 있으며, 복제를 통해 데이터를 백업하고 다른 인스턴스로 이동할 수 있습니다.


볼륨을 생성했으니 특정 EC2 인스턴스에서 사용할 수 있도록 연결해 주겠습니다.

EC2 인스턴스가 생성될 때 자동으로 생성되는 루트 볼륨 이외에도 별도의 EBS 볼륨을 생성하고 연결하는 이유에는 여러 가지 이유가 있습니다.

  1. 데이터 분리
    루트 볼륨은 주로 운영 체제 및 애플리케이션 파일을 저장하는 데 사용됩니다. 추가적인 EBS 볼륨을 연결하면 데이터를 분리하여 보관할 수 있으며, 이로써 루트 볼륨과 데이터를 분리하여 관리할 수 있습니다.

  2. 성능 및 확장성
    추가 EBS 볼륨을 생성하고 연결하면 스토리지 성능을 높일 수 있습니다. 특정 응용 프로그램 또는 데이터베이스의 데이터를 별도의 볼륨에 저장하면 I/O 요청을 분산시켜 성능을 향상시킬 수 있습니다.

  3. 백업 및 복원
    데이터 백업을 위해 추가 볼륨을 사용할 수 있습니다. EBS 스냅샷을 사용하여 별도의 볼륨의 상태를 백업하고 복원할 수 있습니다.

  4. 데이터 이동 및 마이그레이션
    별도의 EBS 볼륨을 생성하고 연결하면 데이터를 다른 EC2 인스턴스로 이동하거나 다른 리전으로 마이그레이션하는 데 유용합니다.

  5. 데이터 보존
    EC2 인스턴스를 종료하거나 삭제할 때 추가 EBS 볼륨은 데이터를 보존할 수 있게 해줍니다. 루트 볼륨 이외의 별도의 데이터 볼륨을 삭제하지 않고 보존할 수 있습니다.

  6. 데이터 관리
    데이터를 카테고리별로 분리하여 관리할 수 있으며, 이는 데이터의 조직과 관리를 더 용이하게 만들어줍니다.



일반적으로 EC2 인스턴스와 연결된 루트 볼륨은 인스턴스 생성 당시 "Delete on termination" 옵션이 기본적으로 활성화되어 있어서, 해당 인스턴스가 종료될 때 루트 볼륨이 자동으로 삭제됩니다. 이렇게 함으로써 루트 볼륨에 대한 불필요한 과금을 방지하고 보안상의 이점을 얻을 수 있습니다.

그러나 추가 EBS 볼륨에 대해서는 "Delete on termination" 옵션을 수동으로 설정할 수 있습니다. 이것은 보안 및 비용 관리 측면에서 신중하게 설정해야 합니다.

EBS snapshot

스냅샷은 EBS 볼륨의 모든 데이터를 포함하므로, 데이터를 백업하고 나중에 이전 상태로 복원할 수 있습니다.



이 스냅샷은 이전 상태의 데이터와 설정을 포함하고, 데이터의 백업으로 사용됩니다. 또한 이 스냅샷을 사용하여 새로운 EBS 볼륨을 생성하여 이전 상태의 데이터를 백업하고, 이 백업을 사용하여 새로운 EBS 볼륨을 생성하고 연결할 수 있습니다. 이렇게 하면 인스턴스에서 해당 데이터를 사용할 수 있습니다.

또한 'copy snapshot'을 누르면 다른 가용 영역의 다른 지역으로 보내서 이 데이터를 사용할 수 있습니다.

AMI (Amazon Machine Image)


Amazon Machine Image (AMI)은 AWS (Amazon Web Services) 클라우드 플랫폼에서 EC2 (Elastic Compute Cloud) 인스턴스를 생성할 때 사용되는 이미지 또는 템플릿입니다.

  • AMI의 구성 요소
  1. 운영 체제
    AMI에는 특정 운영 체제 (예: Amazon Linux, Ubuntu, Windows Server 등)가 설치된 EC2 인스턴스의 이미지가 포함됩니다.

  2. 애플리케이션 및 라이브러리
    필요한 애플리케이션, 라이브러리, 소프트웨어 및 환경 설정이 AMI에 포함됩니다. 이로써 인스턴스가 원하는 기능을 수행할 수 있습니다.

  3. 데이터
    AMI에는 초기 데이터 또는 데이터베이스 상태를 포함할 수 있으며, 시작 시 인스턴스에 적용됩니다.

이러한 이미지를 사용하면 개발자는 이미 구성된 환경을 더 쉽게 설정할 수 있습니다. AMI는 인스턴스 상태의 백업으로 사용되며, 데이터 손실을 방지하고 장애 복구를 위해 사용됩니다. 또한 개발자는 자신이 구성한 인스턴스를 이미지로 만들어서 사용할 수 있으며, 이를 다른 사람과 공유할 수도 있습니다.

쉽게 생각해서 AMI는 설치 CD와 같다고 생각하면 됩니다. 둘 다 초기 운영 체제 및 소프트웨어 설정을 캡처한 이미지로, 사용자가 원하는 환경을 효율적으로 배포할 수 있도록 도와줍니다.

EBS와 AMI의 차이

  1. 용도 및 역할
  • EBS (Elastic Block Store)
    EBS는 EC2 인스턴스에서 사용되는 스토리지 볼륨입니다. 이 볼륨은 인스턴스에 연결되어 인스턴스에 데이터를 저장하고 보존하는 데 사용됩니다. EBS는 데이터 스토리지와 관련된 서비스로, 파일 시스템을 포함한 다양한 데이터를 저장합니다. 또한 인스턴스를 종료해도 볼륨에 저장된 데이터를 보존합니다.

  • AMI (Amazon Machine Image)
    AMI는 EC2 인스턴스를 생성할 때 사용되는 이미지 또는 템플릿으로, 특정 운영 체제, 애플리케이션, 데이터 및 설정을 포함하여 인스턴스를 구성하는 데 필요한 모든 정보가 포함된 이미지입니다. AMI는 EC2 인스턴스를 시작하고 설정하는 데 사용되며, 미리 구성된 환경을 제공하거나 사용자 지정 환경을 정의하는 데 유용합니다. 이를 통해 AMI를 사용하여 손쉽게 EC2 인스턴스를 시작하고, 중지하고, 삭제하고, 복제하고, 복원할 수 있습니다.

  1. 내용
  • EBS
    EBS는 데이터 스토리지를 포함하며, 데이터 파일, 데이터베이스, 애플리케이션 데이터 등 다양한 데이터를 저장합니다. EBS는 데이터의 유지 및 관리를 담당합니다.

  • AMI
    AMI는 운영 체제, 애플리케이션, 라이브러리 및 설정을 포함하며, EC2 인스턴스를 구성하는 데 필요한 모든 것을 포함합니다. AMI는 EC2 인스턴스를 생성하고 설정하기 위한 환경 및 설정을 정의합니다.

  1. 용도
  • EBS
    EBS는 주로 데이터 저장 및 관리를 위한 블록 스토리지 서비스로 사용됩니다. 데이터의 영구 저장 및 백업에 적합합니다.

  • AMI
    AMI는 EC2 인스턴스를 생성 및 관리하기 위한 이미지로 사용됩니다. 특정 환경을 사전에 구성하거나 사용자 지정 설정을 저장하고 배포하기 위해 사용됩니다.

  1. 연결 대상:
  • EBS
    EBS는 EC2 인스턴스에 연결되어 데이터를 저장하고 해당 인스턴스와 관련된 스토리지로 사용됩니다.

  • AMI
    AMI는 EC2 인스턴스의 생성 및 설정에 사용되며, EC2 인스턴스를 시작할 때 AMI를 기반으로 구성됩니다.

EBS 스냅샷을 사용하여 새로운 AMI를 만들 수 있습니다. EBS 스냅샷은 EBS 볼륨의 이미지로, 이전 인스턴스의 데이터와 설정을 캡처하는 데 사용됩니다. EBS 스냅샷을 사용하여 AMI를 생성하면 이전 인스턴스와 동일한 환경을 보다 효과적으로 관리하고 새로운 EC2 인스턴스를 시작할 때 사용자가 원하는 설정을 빠르게 배포할 수 있습니다.

  1. 백업 및 복원
    EBS 스냅샷을 사용하여 이전 인스턴스의 데이터를 백업하고, 나중에 필요할 때 이 스냅샷을 사용하여 동일한 데이터와 설정을 가진 새로운 인스턴스를 생성할 수 있습니다.
  1. 스케일링
    EBS 스냅샷을 기반으로 한 AMI를 사용하여 동일한 구성의 여러 인스턴스를 시작할 수 있으므로 애플리케이션을 확장하거나 로드 밸런싱을 수행할 수 있습니다.
  1. 환경 재현
    이전 환경을 정확하게 재현할 수 있으며, 테스트 및 개발 환경을 빠르게 구축할 수 있습니다.
  1. 설정 관리
    특정 설정 또는 이미지를 중앙 집중 관리하여 일관된 환경을 유지할 수 있습니다.
  1. 보안 및 복구
    중요한 데이터와 설정의 백업 및 보안 복구에 사용할 수 있습니다.

AMI를 직접 생성해보겠습니다.

이제 AMI에 설정된 환경으로 새로운 EC2 인스턴스를 생성해보겠습니다.






이렇게 AMI에 설정된 환경으로 새로운 EC2 인스턴스를 성공적으로 생성하고 원격 데스크톱 연결을 확인해봤습니다.

0개의 댓글