[AWS] 챕터3 EC2 - EC2 기초(1)
카테고리: SAA
태그: SAA
EC2 Basics
EC2 sizing & configuration options
- OS: Linux, Windows, Mac OS
- CPU
- 메모리
- 스토리지
- Network-attached (EBS & EFS)
- hardware (EC2 Instance Store)
- 네트워크 카드
- 방화벽 정책: Security Group
- 부트스크립팅: EC2 User Data
EC2 User Data
- Amazon EC2에서 인스턴스를 시작할 때 사용자 데이터를 인스턴스에 전달하여 일반적인 구성 작업을 자동으로 수행하는 데 사용합니다.
- Amazon EC2에 Shell Script 또는 cloud-init 두 가지 유형의 User Data를 전달할 수 있습니다.
- 기본적으로 User Data에는 한 번에 하나의 유형만 포함할 수 있습니다. 그러나 MIME 멀티 파트 파일에서
text/clout-config및text/x-shellscript콘텐츠 유형을 사용하여 User Data에 셸 스크립트와 cloud-init 지시문을 모두 포함할 수 있습니다. - 기본적으로 User Data 스크립트 명령은 최초로 인스턴스를 시작할 때만 실행됩니다.
- 하지만 인스턴스를 재시작할 때마다 User Data 스크립트를 실행되도록 구성을 업데이트할 수 있습니다. 이와 관련해서는 여기를 참고하세요/
- EC2 User Data는 다음과 같은 부팅 작업을 자동화하는 데 사용됩니다.
- 소프트웨어 패키지 업데이트
- 소프트웨어 패키지 설치
- 사용자, 사용자 그룹 추가
- Anything
- User Data로 입력된 스크립트는 root 사용자 권한으로 실행되므로 스크립트에 sudo 명령을 사용하지 않아도됩니다.
- 또한 스크립트는 대화형으로 실행되지 않으므로 사용자의 입력이 필요한 명령은 포함할 수 없습니다.
- 명령에서 의도한 작업을 완료하지 못했거나 명령이 오류 없이 완료되었는지 여부를 확인하려면 인스턴스에 연결하여 출력 로그 파일(/var/log/cloud-init-output.log)을 조사합니다.
- 자세한 디버깅 정보를 보려면 다음 명령줄을 User Data에 포함시킵니다.
output : { all : '| tee -a /var/log/cloud-init-output.log' }
EC2 Instance Types
- Amazon EC2는 각 사용 사례에 맞게 최적화된 다양한 인스턴스 유형을 제공합니다.
- 인스턴스 유형은 CPU, 메모리, 스토리지 및 네트워킹 용량의 다양한 조합으로 구성할 수 있습니다.
- Amazon EC2는 다음의 이름 규칙을 따릅니다.
인스턴스 유형 이름
- 인스턴스 유형은 해당 제품군(class), 세대, 추가 기능 및 크기에 따라 이름이 지정됩니다.
- 마침표(.) 앞, 세대 뒤 문자는 NVMe 스토리지 또는 추가기능을 나타냅니다. (optional)
- 추가 기능:
- a - AMD processors
- g - AWS Graviton processors
- i - Intel processors
- d - Instance store volumes
- n - Network optimization
- b - Block storage optimization
- e - Extra storage or memory
- z - High frequency
m5.2xlarge
- m : Instance Class
- 5 : Generation
- 2xlarge : size
EC2 Instance Types - 범용
- 범용 인스턴스는 CPU, 메모리, 네트워킹 리소스를 균형 있게 제공하며, 다양한 워크로드에 사용할 수 있습니다.
- 이 인스턴스는 웹 서버 또는 레포지토리와 같이 리소스를 동등한 비율로 사용하는 애플리케이션에 적합합니다.

EC2 Instance Types - 컴퓨팅 최적화
- 컴퓨팅 최적화 인스턴스는 고성능 프로세서를 활용한 컴퓨팅 집약적인 애플리케이션에 적합합니다.
- 이 인스턴스는 배치 처리, 미디어 트랜스코딩, 고성능 웹 서버, 고성능 컴퓨팅, 과학적 모델링, 전용 게임 서버, 광고 서버 엔진 등 기타 컴퓨팅 집약적인 애플리케이션에 적합합니다.

EC2 Instance Types - 메모리 최적화
- 메모리 최적화 인스턴스는 메모리에서 대규모의 데이터 세트를 처리하는 워크로드를 위해 설계되었습니다.
- 이 인스턴스는 고성능의 관계형/비관계형 데이터베이스, 분산 웹 캐시 저장소, 인모메리 데이터베이스, 대용량의 비정형 데이터를 실시간 처리하는 애플리케이션에 적합합니다.

EC2 Instances Types - 스토리지 최적화
- 스토리지 최적화 인스턴스는 로컬 스토리지에서 매우 큰 데이터 세트에 대해 많은 순차적 읽기 및 쓰기 액세스를 요구하는 워크로드를 위해 설계되었습니다.
- 이러한 인스턴스는 애플리케이션에 대해 수만 단위의 무작위 IOPS를 지원하도록 최적화되었습니다.
- 이 인스턴스는 OLTP 시스템, 관계형/비관계형 데이터베이스, 인메모리 캐시, 데이터웨어하우스, 분산 파일시스템에 적합합니다.

Security Groups basics
보안 그룹은 연결된 리소스에 대한 인바운드 및 아웃바운드 트래픽을 제어합니다.
보안 그룹의 특성
- 보안 그룹은 상태를 저장합니다. 예를 들어 인스턴스에서 요청을 보내는 경우 해당 요청에 대한 응답 트래픽은 인바운드 보안 그룹 규칙에 관계없이 인스턴스에 도달할 수 있습니다. 또한 허용된 인바운드 트래픽에 대한 응답은 아웃바운드 규칙에 관계없이 인스턴스를 나갈 수 있습니다.
- VPC를 생성하면 기본 보안 그룹이 함께 제공됩니다. 각 VPC에 대한 추가 보안 그룹을 생성할 수 있고 VPC당 생성할 수 있는 보안 그룹 수, 각 보안 그룹에 추가할 수 있는 규칙 수 및 네트워크 인터페이스와 연결할 수 있는 보안 그룹 수에대한 할당량이 있습닌다.
보안 그룹 규칙의 특성
- Allow 규칙은 지정할 수 있지만 Deny 규칙은 지정할 수 없습니다.
- 보안 그룹을 처음 생성하면 인바운드 규칙이 없습니다. 따라서 보안 그룹에 인바운드 규칙을 추가할 때까지 인바운드 트래픽이 허용되지 않습니다.
- 보안 그룹을 처음 생성하면 리소스의 모든 아웃바운드 트래픽을 허용하는 아웃바운드 규칙이 있습니다. 보안 그룹에 아웃바운드 규칙이 없으면 아웃바운드 트래픽이 허용되지 않습니다.
VPC의 기본 보안 그룹
- 기본 VPC와 사용자가 생성하는 모든 VPC는 기본 보안 그룹과 함께 제공됩니다.
- EC2 인스턴스를 시작할 때 보안 그룹을 지정하지 않으면 기본 보안 그룹이 연결됩니다.
- 기본 보안 그룹에 대한 규칙을 변경할 수 있지만 기본 보안 그룹을 삭제할 수는 없습니다.
Inbound
| Source | Protocol | Port range | Description |
|---|---|---|---|
| 보안 그룹 ID | All | All | 동일한 보안 그룹에 할당된 리소스의 인바운드 트래픽을 허용합니다. |
Outbound
| Source | Protocol | Port range | Description |
|---|---|---|---|
| 0.0.0.0/0 | All | All | 모든 아웃바운드 IPv4 트래픽을 허용합니다. |
| ::/0 | All | All | 모든 아웃바운드 IPv6 트래픽을 허용합니다. 이 규칙은 VPC에 연결된 IPv6 CIDR 블록이 있는 경우에만 추가됩니다. |
보안 그룹 규칙


- 프로토콜 : 허용할 프로토콜입니다. 가장 일반적인 프로토콜은 6(TCP), 17(UDP) 및 1(ICMP)입니다.
- 포트 범위 : TCP, UDP 또는 사용자 지정 프로토콜의 경우 허용할 포트 범위입니다. 단일 포트 번호(예: 22) 또는 포트 번호 범위 (예: )를 지정할 수 있습니다 7000-8000.
- ICMP 유형 및 코드 : ICMP의 경우 ICMP 유형 및 코드입니다. 예를 들어 ICMP 에코 요청에 대해 유형 8을 사용하거나 ICMPv6 에코 요청에 대해 유형 128을 사용합니다.
- 소스 또는 대상 : 트래픽이 허용할 소스(인바운드 규칙) 또는 대상(아웃바운드 규칙)입니다. 다음 중 하나를 지정합니다.
- 단일 IPv4 주소. /32접두사 길이 를 사용해야 합니다 . 예를 들어, 203.0.113.1/32.
- 단일 IPv6 주소. /128접두사 길이 를 사용해야 합니다 . 예를 들어, 2001:db8:1234:1a00::123/128.
- CIDR 블록 표기법의 IPv4 주소 범위입니다. 예를 들어, 203.0.113.0/24.
- CIDR 블록 표기법의 IPv6 주소 범위입니다. 예를 들어, 2001:db8:1234:1a00::/64.
- 접두사 목록의 ID입니다. 예를 들어, pl-1234abc1234abc123. 자세한 내용은 관리되는 접두사 목록을 사용하여 CIDR 블록 그룹화 를 참조하세요
- 보안 그룹의 ID입니다.
- (선택 사항) 설명 : 나중에 식별하는 데 도움이 되는 규칙에 대한 설명을 추가할 수 있습니다. 설명은 최대 255자까지 가능합니다. 허용되는 문자는 az, AZ, 0-9, 공백 및 ._-:/()#,@[]+=입니다. { }!$*.
Note:
- 보안 그룹의 ID는 동일한 VPC에 있는 다른 보안 그룹의 ID이거나 피어링된 VPC의 보안 그룹일 수 있습니다.
- 아웃바운드 규칙에서 목적지에 보안 그룹ID를 사용한다는 것은 해당 보안 그룹을 연결하여 사용하는 인스턴스의 프라이빗 IP 주소로 아웃바운드 트래픽을 보낼 수 있음을 의미합니다.
- 인바운드 규칙에서 출발지에 보안 그룹ID를 사용한다는 것은 해당 보안 그룹을 연결하여 사용하는 인스턴스의 프라이빗 IP 주소에서 보낸 인바운드 트래픽을 수신살 수 있음을 의미합니다.

알아두면 쓸데있는 보안 그룹 지식
- 보안 그룹은 여러 인스턴스에 연결할 수 있다.
- 보안 그룹은 리전과 VPC의 조합으로 귀속된다.
- SSH 접속을 위한 별도의 보안 그룹을 분리하는 것이 좋다.
- 애플리케이션에 접근하는 데 “time out” 에러가 발생한다면 그것은 보안 그룹 이슈일 가능성이 크다.
- 애플리케이션에 접근하는 데 “connection refused” 에러가 발생한다면 그것은 애플리케이션 에러이거나 실행되지 않았을 가능성이 크다.
- 기본적으로 모든 인바운드 트래픽은 blocked 된다.
- 기본적으로 모든 아웃바운드 트래픽은 authorised 된다.
보안 그룹 모범 사례
- 특정 IAM 보안 주체에게만 보안 그룹을 생성하고 수정할 수 있는 권한을 부여한다.
- 최소 보안 그룹 수를 유지하고, 각 보안 그룹을 조합하여 보안 요구 사항을 만족시키려고 노력한다.
- EC2 인스턴스에 원격 접속하기 위한 포트에 대한 인바운드 규칙을 추가할 때는 특정 IP 주소에서만 접근이 가능하도록 설정한다.
- 넓은 포트 범위를 열지 않도록 하고, 각 포트를 통한 액세스가 필요한 소스 또는 대상인지 점검한다.
- VPC에 추가 보안 계층을 추가하길 원한다면 보안 그룹과 유사한 규칙으로 네트워크 ACL을 생성한다.
📖출처
AWS > Documentation > Amazon EC2 >
AWS > Documentation > Amazon VPC >
👍 개인 공부 기록용 블로그입니다. 오류나 조언이 있으시면 언제든지 댓글 혹은 메일로 남겨주시면 감사하겠습니다! 😄
댓글남기기