EC2는 AWS에서 가장 핵심 서비스라고 할 수 있다.
Lambda를 사용한 서버리스 개발은 편리하지만 한계가 존재한다. 이때 서버를 구축한다면 더 많은 것을 할 수 있다.
이 글에서는 EC2가 무엇인지 간단하게 살펴본 후, EC2 인스턴스를 생성하고 SSH 클라이언트로 인스턴스에 연결해본다. 즉, AWS를 사용하여 간단한 리눅스 서버를 구축 해보는 튜토리얼이다.
EC2는 AWS에서 재공하는 클라우드 컴퓨팅 서비스
다.
이 서비스를 통해서 아마존이 각 세계에서 구축한 데이터 센터의 서버용 컴퓨터들의 자원을 원격으로 사용할 수 있다. 쉽게 말해, 아마존으로 부터 한 대의 컴퓨터를 임대하는 것이다. AWS가 제공하는 URL을 통해 이 컴퓨터에 접근할 수 있다.
EC2의 장점은 다음과 같다.
- 탄력성 : 용량을 늘리거나 줄일 수 있다.
- 사용한만큼 지불하므로 저렴하다.
- 사용자가 인스턴스를 완전히 제어할 수 있다.
- 보안 및 네트워크 구성, 스토리지 관리가 효과적이다.
- AWS EC2로 들어간다.
- 왼쪽 메뉴에 인스턴스 > 인스턴스 시작을 클릭한다.
- 인스턴스 : 클라우드의 가상 서버
- AMI(Amazon machine image): 서버에서 필요한 운영체제와 여러 소프트웨어들이 적절히 구성된 템플릿
- 1단계는 운영체제를 선택하는 단계이다. 크게 Linux와 Window중에 선택할 수 있고, 튜토리얼에서는 리눅스를 선택하였다.
- 인스턴스 유형을 선택한 후, 검토 및 시작을 클릭한다.
- 2단계는 인스턴스의 CPU, 메모리, 스토리지, 네트워킹 용량의 여러 가지 구성을 필요한만큼 선택하는 단계다.
- 다음 단계에서 더 정교하게 인스턴스 설정을 할 수 있지만 이 글을 EC2를 처음 경험하는 독자들을 대상으로 한 글이므로 3~6단계 설정은 기본값을 따른다.
- 새로운 키 페어를 생성하고 다운로드 한 뒤, 인스턴스를 시작한다.
- 키 페어 : 퍼블릭 키 + 프라이빗 키(.pem)
- 이때 저장한 키 페어를 사용하여 해당 인스턴스에 안전하게 연결할 수 있다.
- 프라이빗 키를 소유한 사람은 누구나 인스턴스에 연결할 수 있으므로 보안된 위치에 프라이빗 키를 저장해야 한다.
SSH를 사용하여 linux 인스턴스에 연결하는 방법이다. 로컬 컴퓨터의 운영체제는 mac os 또는 리눅스다.
- 프라이빗 키(.pem)를 보안된 위치인 .ssh 하위 디렉터리에 저장한다.
mv ~/Downloads/MyKeyPair.pem ~/.ssh/MyKeyPair.pem
- 프라이빗 키의 권한을 설정한다.
chmod 400 ~/.ssh/MyKeyPair.pem
- ssh 명령어로 인스턴스에 연결한다.
ssh -i [프라이빗 키 (.pem) 경로] [AMI의 사용자 이름]@[인스턴스의 퍼블릭 DNS]
-
인스턴스를 시작하는 데 사용한 AMI의 기본 사용자 이름을 가져온다.
- Amazon Linux2 또는 Amazon Linux AMI의 경우 사용자 이름은 ec2-user입니다.
- CentOS AMI의 경우 사용자 이름은 centos입니다.
- Debian AMI의 경우 사용자 이름은 admin , root 입니다.
- Febora AMI의 경우 사용자 이름은 ec2-user , fedora 입니다.
- RHEL AMI의 경우 사용자 이름은 ec2-user , root입니다.
- SUSE AMI의 경우 사용자 이름은 ec2-user , root 입니다.
- Ubuntu AMI의 경우 사용자 이름은 ubuntu입니다.
- ec2-user 및 root를 사용할 수 없는 경우 AMI 공급자에게 문의하십시요,
-
인스턴스의 퍼블릭 DNS는 IPv4 퍼블릭 IP를 적는다.
매번 인스턴스에 퍼블릭 IP로 접속하는 것은 귀찮다. 아래의 방법으로 해당 인스턴스의 이름을 지정하여 간편하게 접근할 수 있다.
- .ssh/config 파일을 연다.
vim .ssh/config
- config 파일에 아래와 같은 양식으로 적는다.
- Host : 인스턴스 이름
- HostName : 인스턴스의 IPv4 퍼블릭 IP
- User : AMI의 기본 사용자 이름
- IdentityFile: 프라이빗 키의 경로
- 이제 Host 이름으로 인스턴스에 접속할 수 있다.
ssh [Host 이름]