EC2 기초
EC2란? -> Elastic Compute Cloud의 약자로, Infrastructure as a Service라고 볼 수 있다. 또한 AWS에서 가장 인기 있는 서비스이다.
- EC2는 하나의 서비스가 아닌 많은 서비스를 포함하는 서비스이다.
- 가상 머신을 EC2 서비스를 통해 임대하는 것을 EC2 인스턴스라고 한다.
- (EBS) 데이터를 가상 드라이브 또는 EBS볼륨에 저장 가능하다.
- (ELB) Elastic 로드 밸런서로 로드를 분산시킬 수 있다.
- (ASG) 오토 스케일링 그룹을 통해 서비스를 확장시킬 수 있다.
핵심
- EC2의 사용법을 아는 것은 클라우드의 작동 방식을 이해할 때 필수적이다.
- 클라우드는 필요할 때 언제든지 컴퓨팅을 대여할 수 있고 EC2가 그 예시이다.
EC2 옵션
- OS : Linux, Windows, Mac 등
- CPU : 해당 가상 머신에서 사용할 컴퓨팅 성능과 코어의 양 선택 가능
- RAM : 랜덤 액세스 메모리 선택 가능
- EBS,EFS : 용량, 스토리지 선택 가능
- EC2 Instance store : 하드웨어 연결 가능 (스토리지)
- Network : EC2 인스턴스에 연결할 네트워크 종류 (속도,IP 등등)
- Fire wall : 방화벽 규칙, 보안그룹
- Bootstrap script : EC2 User Date
EC2 User Data
- EC2 사용자 데이터 스크립트를 사용해 인스턴스를 부트스트래핑(머신이 시작될 때 명령을 시작하는 것) 이 가능하다.
- 부팅작업 자동화
- 모든 작업은 root계정에서 발생한다. 그러니 명령은 sudo로 작업해야한다.
EC2 종류

해당 그림을 보면 종류 별로 EC2의 옵션을 파악할 수 있다.
EC2 종류별 의미

- t로 시작하는 인스턴스는 그냥 범용(균형적인) 인스턴스라고 생각하면 된다.
- c로 시작하는 인스턴스는 고성능을 요구하는 작업에 유용한 인스턴스이다. (Compute Optimized)
- r로 시작하는 인스턴스는 대용량 메모리 처리에 적합한 인스턴스이다. (Memory Optimized)
- I,G,H 등으로 시작하는 인스턴스는 로컬 스토리지에서 대규모 데이터셋에 액세스 할 때 적합하다. (Storage Optimized)
EC2 보안 그룹
보안 그룹의 역할
- 방확벽, 포트에 대한 액세스를 규제한다.
- 승인된 IP 범위가 표시된다. (Ipv4, Ipv6)
- 인바운드 네트워크 제어 (외부에서 들어오는 트래픽)
- 아웃바운드 네트워크 제어 (내부에서 나가는 트래픽)
- 보안 그룹은 여러 EC2 인스턴스에 연동 가능하다. 또한 하나의 EC2 인스턴스에 여러 보안 그룹이 적용 가능하다.
- 보안 그룹은 특정 지역과 VPC 조합에만 제한된다.
6-1. 지역이 바뀌면 새 보안 그룹을 생성해야한다.
6-2. 다른 VPC를 생성한 경우 보안 그룹을 새로 해야한다.
- 보안 그룹은 EC2 외부에서 존재한다. -> EC2 내부에서는 트래픽을 알 수 없다.
- SSH 접근을 위한 별도의 보안 그룹 하나를 유지하는 것이 좋은 방식이다.
- 기본적으로 모든 인바운드 트래픽은 차단되고, 모든 아웃바운드 트래픽은 승인된다.
- 로드 밸런서를 사용하면 다른 보안그룹의 보안그룹을 참조가능하다.

이런 식으로 셋팅 가능하다.

해당 그림을 보자. 만약에 보안 그룹 설정에서 나의 컴퓨터 IP에 대한 22번 SSH 포트를 허용 해두었다면 보안그룹을 통과해서 EC2 인스턴스에 접근가능하고 Any Ip - Any Port로 아웃바운드 보안그룹이 설정되어 있으면 어떠한 상황에서도 아웃바운드는 허용된다. 하지만 다른 PC에서 22번 포트로 접근하려고하면 보안그룹에 걸려서 타임아웃이 발생하고 EC2 인스턴스에 접근이 불가할 것이다.

해당 이미지를 보면, Security Group 1은 인바운드 규칙에서 Security Group 1과 Security Group 2로부터의 트래픽을 허용하고 있다. 그렇기 때문에 Security Group 1과 2 보안 그룹에 허용되는 방식으로 접근하면 접근이 가능하다. 하지만 Security Group 1이 Security Group 3으로부터의 트래픽을 허용하지 않기 때문에 해당 방식으로는 접근이 차단된다.
EC2 포트

EC2 인스턴스에 접근하는데 "타임아웃"이 발생하면 100%에 가까운 확률로 보안 그룹에서 접근이 차단된 것이다.
EC2 SSH
- Linux, Windows 10 이상, Mac 에서 SSH 사용이 가능하다. (.pem)
- Windows 10 미만이면 Putty를 사용해야한다. (.ppk)
- 모든 OS에서 EC2 Instance Connect를 통해 EC2 인스턴스에 접근이 가능하다.
OS에 따른 SSH 사용법
- Linux or Mac -> ssh -i
.pem ec2-user@xxx.xxx.xxx.xxx (퍼블릭 ip주소)
- Windows 10이상 -> ssh -i .~~~~.pem ec2-user@xxx.xxx.xxx.xxx (퍼블릭 ip주소)
만약 접근 과정에서 보안 에러가 발생한다면 .pem key의 권한을 바꿔줘야 한다.
EC2를 위한 IAM 역할 사용
- EC2 인스턴스에 접근하여 aws --version을 입력하면 aws cli를 포함하고 있을 것임!
- 그리고 aws configure를 통해서 사용자 정보를 입력하려고 한다면 절대 xxxxx 안됨. 이유는 다른 사람이 정보를 획득할 수 있다.
- IAM에서 등록된 Roles를 EC2 IAM Role에 등록해주면 된다.
EC2 구매옵션
- on-demand : 언제 어디서나, 내 맘대로.
- reserved : 1~3년 동안 미리 예약. 할인 up.
- savings-plans : 일점 금액을 지불하기로 하고, 그 기간동안 서비스도 변경하면서 마음대로 사용.
- spot instances : 마감 할인 개념. 파격적인 할인을 받는다. 하지만 비용 초과하면 언제든지 서비스 종료.
- dedicated Hosts : 서비스 전체를 예약, 나만의 것을 대여.
- capacity reservations : 언제 쓸지는 모르지만 미리 예약 해놓고 기간 내에는 언제든지 사용.
EC2 SUMMARY
EC2 = AMI(OS) + Instance Size (CPU,RAM) + Storage + Security Groups + EC2 User Data 이다.