EC2는 가상 서버를 클라우드로 제공하는 서비스이다. 여기서 가상 서버란 가상화된 하드웨어를 의미한다. 물리적 서버 하드웨어를 부분적으로 가상화하고, 이 환경을 제공한다고 생각하면 된다. 이것을 인스턴스라고 부르고 다른 인스턴스와 완전히 독립적인 하나의 컴퓨터로 간주할 수 있다.
인스턴스를 생성하기 위해 여러 옵션을 선택할 수 있다. 하드웨어 리소스, 운영체제, 저장 공간, 보안 그룹 등을 설정해 줄 수 있다. 처음 인스턴스를 생성하면 해당 인스턴스는 아무런 동작을 하지 않는다. 따라서 인스턴스 내부로 접속해서 다음과 같은 명령어를 입력해 준다.
sudo apt-get update
sudo apt-get install nginx
echo "<h1>EC2로 띄워봤음! $(hostname -f)</h1>" > /usr/share/nginx/html/
sudo systemctl start nginx
sudo
는 supervisor do, apt-get
은 데비안 리눅스(우분투)에서 사용하는 패키지 매니저이다. 즉, 기존에 설치된 패키지를 업데이트하고, nginx
를 설치해서 서버를 실행하는 명령으로 이해할 수 있다.
퍼블릭 ip는 계속 변할 수 있으므로 고정 ip를 할당받을수도 있다. 하지만 이렇게 하면 과금이 발생할 수 있으므로 주의해야 한다. 사용하지 않는 인스턴스 역시 종료해서 예상치 못한 과금을 방지해야 한다.
인스턴스를 보면 보안 그룹(secuirty group)이 존재하는데, 인스턴스별로 보안 규칙을 설정하지 않고 보안 그룹을 할당함으로서 확장성 있게 사용할 수 있다. 보안 규칙은 서버로 들어오거나 나가는 요청을 프로토콜, 포트, ip주소 등으로 제한하는 방식으로 만들어진다. inbound
는 서버로 들어오는 요청으로 기본으로 닫혀있고, outbound
는 서버에서 나가는 요청으로 기본으로 열려있다.
SSH란?
SSH는 Secure Shell의 약자로, 다른 컴퓨터에 원격으로 보안을 유지하며 접속할 수 있도록 하는 프로토콜이다.
EBS(Amazon Elastic Block Store)는 인스턴스의 내용을 저장하는 스토리지이다. EC2를 생성할 때 기본으로 생성되며 추가로 생성해서 하드디스크나 usb를 탈부착하는 개념으로 생각할 수 있다. 하나의 AZ안에서만 사용 가능하다. 스냅샷이라는 기능이 있는데, 마치 git처럼 원하는 시점의 저장소를 그대로 기억해서 백업본을 만들 수 있다.
AMI(Amazon Machine Image)는 처음 인스턴스를 생성할 때 사용가능하도록 세팅된 설치 패키지로 이해할 수 있다. 인스턴스를 생성하기 위한 모든 설정과 데이터라고 생각하면 된다. 스냅샷에서 생성할 수도 있으므로 사용하지 않는 인스턴스는 스냅샷으로 저장하고 삭제한 뒤, 나중에 다시 그대로 생성할 수도 있다.