[AWS] 챕터3 EC2 - EC2 기초(1)

업데이트:     Updated:

카테고리:

태그:

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-configtext/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 블록이 있는 경우에만 추가됩니다.

보안 그룹 규칙

image

image

  • 프로토콜 : 허용할 프로토콜입니다. 가장 일반적인 프로토콜은 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 주소에서 보낸 인바운드 트래픽을 수신살 수 있음을 의미합니다.

image

알아두면 쓸데있는 보안 그룹 지식

  • 보안 그룹은 여러 인스턴스에 연결할 수 있다.
  • 보안 그룹은 리전과 VPC의 조합으로 귀속된다.
  • SSH 접속을 위한 별도의 보안 그룹을 분리하는 것이 좋다.
  • 애플리케이션에 접근하는 데 “time out” 에러가 발생한다면 그것은 보안 그룹 이슈일 가능성이 크다.
  • 애플리케이션에 접근하는 데 “connection refused” 에러가 발생한다면 그것은 애플리케이션 에러이거나 실행되지 않았을 가능성이 크다.
  • 기본적으로 모든 인바운드 트래픽은 blocked 된다.
  • 기본적으로 모든 아웃바운드 트래픽은 authorised 된다.

보안 그룹 모범 사례

  • 특정 IAM 보안 주체에게만 보안 그룹을 생성하고 수정할 수 있는 권한을 부여한다.
  • 최소 보안 그룹 수를 유지하고, 각 보안 그룹을 조합하여 보안 요구 사항을 만족시키려고 노력한다.
  • EC2 인스턴스에 원격 접속하기 위한 포트에 대한 인바운드 규칙을 추가할 때는 특정 IP 주소에서만 접근이 가능하도록 설정한다.
  • 넓은 포트 범위를 열지 않도록 하고, 각 포트를 통한 액세스가 필요한 소스 또는 대상인지 점검한다.
  • VPC에 추가 보안 계층을 추가하길 원한다면 보안 그룹과 유사한 규칙으로 네트워크 ACL을 생성한다.

📖출처

AWS > Documentation > Amazon EC2 >

Amazon EC2

AWS > Documentation > Amazon VPC >


👍 개인 공부 기록용 블로그입니다. 오류나 조언이 있으시면 언제든지 댓글 혹은 메일로 남겨주시면 감사하겠습니다! 😄

맨 위로 이동하기

SAA 카테고리 내 다른 글 보러가기

댓글남기기