DOing
[AWS] EC2 인스턴스 생성하기 본문
AWS
여러가지 클라우드 서비스 중 하나인 AWS는 첫가입시 아마존 프리티어를 제공해준다. 아마존 프리티어로 1년간 무료로 사용할 수 있다. (일정 사용치를 넘기면 과금이 있다.) 만약 학생이라면 학교 인증을 받아서 계정을 만들 수도 있다.
클라우드에서는 기본적으로 지원하는 모니터링, 로그관리 등의 기능이 많아서 개발에만 집중할 수 있다. 국내의 많은 기업들에서 AWS를 사용하고 있다.
가입과 쉽지만 관리는 철저하게 해야한다. 실제로 해킹되어 비트코인 채굴에 사용되고 몇 천만원의 과금이 나오는 사람도 있다하니 꼭 주의해야한다. 그래서 추천하는 방법은 절대 github에 계정 정보를 올리지 말고 AWS용 비밀번호를 설정하고, 2단계 인증(MFA)까지 설정하는 것이다.
2021.04.14 - [AWS] - AWS MFA 설정
EC2
Elastic Compute Cloud의 약자로 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버
EC2는 AWS의 여러가지 서비스들 중에서도 가장 먼저 생겨난 서비스 중 하나이고 가장 범용적인 서비스이다.
AWS계정을 만들었다면 EC2라는 서버를 만들 수 있다.
AWS에서 무료로 제공하는 프리티어 플랜에서는 다음과 같은 제한이있다.
- 사양이 t2.micro만 가능하다.
vCPU(가상 CPU) 1 Core, 메모리 1GB 사양이다.
- 월 750시간의 제한이있다. 초과하면 비용이 부과된다.
24시간*31일 = 744시간
즉, 1대의 서버만 이용가능하다.
1. EC2검색
2. EC2 인스턴스 생성
인스턴스란 EC2 서비스에 생성된 가상머신을 이야기한다. '컴퓨터 1대 = 인스턴스 1개'라고 생각하면 된다.
지금은 인스턴스가 없다고 뜨는데 아무런 대여를 하지 않았기 때문이다. 이제부터 컴퓨터를 대여해보자.
2-1. AMI 선택
AMI(Amazon Machine Image)란 EC2 인스턴스 생성에 필요한 모든 sw정보를 담고있는 템플릿 이미지이다. 이때 말하는 sw는 OS까지도 포함한다. 예를 들어 아마존 리눅스 2 AMI를 사용한다면 Amazon Linux 2 OS가 포함된 인스턴스가 만들어지게 된다.
AMI의 Image란 스냅샷과 비슷한 개념으로 볼 수 있다.
이미지는 컴퓨터의 상태를 그대로 얼려서 똑같이 복원할수있는 형태의 데이터이다.
그래서 내가 만든 EC2인스턴스의 현 상태를 AMI로 만들게 되면 상단 사진에 있는'나의 AMI' 탭에 저장이 된다.
이 방법으로 내가 만든 AMI를 이렇게 새로운 인스턴스에 지정할 수도 있다. 이는 백업 작업으로도 사용할 수 있는데 되돌리기 힘든작업을하기 전에 AMI를 만들고 오류가 있으면 아까 만든 AMI기반으로 다시 인스턴스를 만들면된다.
'AWS Marketplace'탭이나 '커뮤니티 AMI'으로 들어가면 내가 만든것 뿐만 아니라 다른 사람이 만든 AMI가 있고 이를 활용해 인스턴스를 만들 수 있다. 단, 무료 AMI도 있지만 AMI 생산자에게 일정 금액 지불해야하는 경우도 있으니 잘 확인해봐야한다.
책에서는 Amazon Linux AMI를 선택하라고 했지만 안타깝게도 버전1을 지원 종료되어 2를 선택하기로하였다.
아마존 리눅스 AMI는 리눅스 배포판중에서 아마존이 직접 리눅스를 수정해서 AWS에 최적화한 것이다. 그렇기 때문에 다른 centos나 ubuntu보다는 아마존 리눅스 AMI를 선택을 했다. 하지만 본인이 자주 쓰는 운영체제가 있다면 그것을 선택하면 될 것 같다. 보통 centos 6으로 진행되는 자료들은 아마존 리눅스 1에서 모두 사용할 수 있고 아마존 리눅스 2는 centos 7 버전들을 그대로 사용할 수 있다.
2-2. 인스턴스 유형 선택
t2.micro를 선택한다.
t2는 요금타입을 의미하고 micro는 사양을 이야기한다.
[ EBS ]
EBS(Elatic Block Storage)
EC2에 연결되는 block level의 스토리지 서비스이다.
서버에 장착되는 서버용 하드디스크처럼 EC2에 Mount하여 사용하는 스토리지 타입이다.
EC2 인스턴스와 독립사용 가능하고 다른 EC2 인스턴스에 교체 가능하다.
데이터는 영구저장되며 원하는 AZ(가용구간)에 생성가능하다
[ T시리즈 ]
ex) t2, t3
- 범용 시리즈라고 불릴정도의 다양한 사양 사용가능
- 크레딧이란 CPU를 사용할 수 있는 포인트 개념이 존재
- 인스턴스 크기에 따라 정해진 비율로 CPU 크레딧을 계속 받는다.
- 사용하지 않을때는 크레딧을 축적하고 사용할때는 크레딧을 사용한다.
- 정해진 사양보다 더 높은 트래픽이 오면 크레딧을 좀 더 적극적으로 사용하면서 트래픽을 처리
- 크레딧이 모두 사용되면 더이상 EC2를 사용할 수 없다.
- 트래픽이 높은 서비스들은 T시리즈가 아닌 다른 시리즈를 사용한다.
vCPUs는 물리적 CPU 가상화한 CPU가 몇 개인지를 뜻한다.
인스턴스 스토리지
2-3. 인스턴스 구성
VPC, 서브넷등 용도에 맞게 설정이 가능하다.
지금은 혼자 1대의 서버만 사용하니 별다른 설정을 하지 않고 넘어간다.
2-4. 스토리지 추가
스토리지는 흔히 하드디스크라고 부르는 서버의 디스크(SSD)를 이야기하며 서버의 용량을 정한다.
기본값을 8GB이다. 30GB까지 프리티어로 가능하기때문에 30GB설정한다.
2-5. 태그추가
인스턴스에 태그를 추가한다.
태그는 해당 인스턴스를 표현하는 여러 이름으로 사용될 수 있다. EC2의 이름을 붙인다고 생각하면된다.
여러 인스턴스가 있을 경우, 태그를 통해 검색이나 그룹 지을 수 있다. 본인 서비스의 인스턴스를 나타낼 수 있는 값으로 등록하면 된다.
여기서 나는 웹 콘솔에서 표기될 태그인 Name태그를 등록했다.
2-6. 보안그룹 추가
보안그룹은 이 인스턴스에 누가 접속할 수 있는지 지정하는 일종의 방화벽이다.
보안그룹에 모든 접속을 허용하는 것은 집에 문을 열어놓고 사는 것과 같다.
그래서 제한된 접속들만 인스턴스에 접근하게끔 해야한다. 보안그룹은 허용만 있고 차단기능은 존재하지 않는다.
기존에 생성된 보안그룹이 없으므로 새 보안그룹 이름을 유의미한 이름으로 만든다.
유형이 SSH, HTTP, HTTPS와 같은 접근 타입이라면
소스는 어디에서 SSH/HTTP/HTTPS 접근을 해오느냐를 뜻한다.
유형을 SSH로 한 상태에서 소스를 Anywhere로 한다면 모든 SSH접속을 허용하는 것이다.
만약 소스를 내 IP로 정한다면 내 컴퓨터에서 접속하는 SSH만 허용하는 것이다.
1. 만든 인스턴스에 원격 제어해야하니까 SSH
: 아무곳에서나 원격제어를 하면 안되니 소스는 내 IP로 지정한다.
: 카페와 같이 집 외에 다른 장소에서 접속할때는 해당 장소의 IP를 다시 SSH 규칙에 추가하는 것이 안전하다.
2. 웹 서버를 만들 예정이니 HTTPS 추가
3. 현재 만들고 있는 웹프로젝트의 기본 포트인 8080을 추가한다.
- SSH 22 포트와 내 IP 규칙 추가
- 웹 서비스 포트 Public 추가
- HTTPS 포트 Public 추가
2-7. 검토
검토화면에서 보안 그룹 경고를 하는데 8080이 전체 오픈되어서 발생하는 것이다. 8080을 열어놓는 것은 위험한 일은 아니니 바로 시작하기 버튼을 클릭한다.
2-8. 키 페어 생성
인스턴스로 접근하기 위해서는 pem키(비밀키)가 필요하다.
서버 자원은 매우 중요하다보니 머리로 기억할 수 있는 비밀번호는 사용하지 않는다. 훨씬 더 복잡하고 안전한 pem이라는 키를 사용하게 된다. 인스턴스는 pem키와 매칭되는 공개키를 가지고 있어 지정된 pem키만 접근할 수 있다.
pem키는 일종의 마스터키이기때문에 절대 유출되면 안된다!!
pem키는 최초 한번만 발급할 수 있다. 아마존에서 재발급해주지 않으니 잘 보관해야한다. 기존에 생성된 pem키가 있다면 선택하고 없다면 신규로 생성하면된다.
3. 생성된 인스턴스 확인
인스턴스가 하나 생성되었다! 이제 생성한 저 컴퓨터에 원격제어로 접속해서 사용할 수 있다.
만약 더이상 인스턴스가 필요하지 않을때도 이 페이지로 들어와서 삭제하면된다.
참고 출처 :
스프링 부트와 AWS로 혼자 구현하는 웹 서비스(이동욱 저)
'AWS' 카테고리의 다른 글
[AWS] RDS 인스턴스에 접속하기 (4) | 2021.04.16 |
---|---|
[AWS] RDS에 맞는 파라미터 설정하기 (0) | 2021.04.16 |
[AWS] RDS 인스턴스 생성하기 (0) | 2021.04.16 |
[AWS] PuTTy를 이용하여 EC2 인스턴스에 접속하기 (0) | 2021.04.15 |
[AWS] AWS MFA 설정 (2) | 2021.04.14 |