[AWS] EC2 생성(feat. 프리티어)
EC2 생성
검색 바에서 EC2를 검색해서 EC2 서비스로 이동한다. 리소스 영역에 EC2 관련 리소스들을 한 번에 확인할 수 있다. 현재 하나의 EC2를 이미 생성한 상태여서 사용 중인 EC2 관련 리스스들이 표시되어 있다. EC2 생성 전 꼭 자신에게 맞는 리전(Region)을 선택해 줘햐 한다.
인스턴스 시작
아래 인스턴스 시작
을 클릭해 준다.
⊙ ⊙ ⊙
인스턴스 전체 리소스 목록
아래 이미지에 있는 목록들은 EC2 인스턴스 관련 리소스 목록이다. 최초 페이지가 로드되면 각 리소스들이 펼쳐진 상태로 보이는데 아래 이미지는 전체 목록을 확인하기 위해 모두 일부러 접어 놓은 상태이다.
처음부터 하나씩 작성해 나가보자.
가장 처음 EC2 인스턴스의 이름을 생성한다.
인스턴스 이름은 일반적으로 인스턴스에서 사용할 서비스를 바로 알 수 있도록 작성해 주는 것이 좋다.
예를 들면 주문 서비스 백엔드 프로젝트를 사용할 인스턴스를 생성해 주는 경우 order-service-api-server
의 형식으로 작성해 주는 것이 좋다.
운영을 하다보면 여러 프로젝트가 쌓이기 때문에 EC2 인스턴스의 갯수가 수십 개가 넘어가게 된다.
따라서 최대한 이름을 직관적으로 작성해주자.
태그 사용법
태그의 개념 및 활용
태그(Tag)는 AWS 리소스를 관리하고 식별하기 위해 사용되는 키-값 쌍이다.
예를 들어, 인스턴스에 Name: order-service-api-server
라는 태그를 지정하면, 이 태그를 통해 해당 인스턴스를 쉽게 식별할 수 있다.
태그 활용 방법
- 리소스 식별 및 관리:
- 태그를 사용하여 리소스의 용도, 소유자, 환경 등을 명확히 표시할 수 있다.
- 예:
Environment: Production
,Owner: John
.
- 자동화 스크립트 및 정책 적용:
- AWS CLI나 SDK를 사용하여 특정 태그가 포함된 리소스만 관리하는 스크립트를 작성할 수 있다.
- 예: 태그가
Environment: Test
인 인스턴스만 자동으로 종료하거나 시작.
- 비용 관리:
- 태그를 사용하여 리소스의 비용을 카테고리별로 분류할 수 있다.
- 예:
Project: OrderService
로 태그를 지정하면, 비용 분석 시 해당 프로젝트와 관련된 리소스 사용량을 쉽게 파악 가능.
- 권한 관리:
- IAM 정책에서 특정 태그를 기준으로 리소스에 대한 접근 권한을 제어할 수 있다.
- 예: 태그가
Department: IT
인 리소스만 특정 사용자에게 권한 부여.
- UI에서 필터링:
- AWS Management Console에서 태그를 사용해 리소스를 검색하거나 필터링할 수 있다.
- 많은 리소스를 관리할 때 유용합니다.
태그의 일반적인 사용 사례
인스턴스 목록에서 태그로 인스턴스를 조회할 수 있다.
키:값(포함), 키!:값(미포함)
또는 키=값(포함), 키!=값(미포함)
형태로 검색하면 조건에 해당되는 인스턴스 목록이 조회된다.
- 이름 태그(Name): 리소스의 이름을 지정해 콘솔에서 쉽게 식별.
- 예:
Name: order-service-api-server
- 예:
- 환경 태그(Environment): 리소스가 운영 환경, 테스트 환경인지 구분.
- 예:
Environment: Production
- 예:
- 소유자 태그(Owner): 리소스의 책임자 정보.
- 예:
Owner: Jane Doe
.
- 예:
- 프로젝트 태그(Project): 리소스가 속한 프로젝트를 구분.
- 예:
Project: DataPipeline
.
- 예:
태그 사용 시 주의사항
- 태그 제한:
- 하나의 리소스에는 최대 50개의 태그를 추가할 수 있다.
- 키와 값은 각각 최대 128자(키)와 256자(값)까지 허용된다.
- 비용 관련 태그 활성화:
- 비용 분석에 태그를 사용하려면 AWS Billing and Cost Management 콘솔에서 “사용자 정의 비용 할당 태그”를 활성화해야 한다.
- IAM 정책과 함께 사용:
- 태그를 기반으로 한 권한 관리를 설정할 때는 IAM 정책에서 태그 조건을 정확히 지정해야 한다.
⊙ ⊙ ⊙
애플리케이션 및 OS 이미지(AMI, Amazon Machine Image)
EC2 인스턴스 생성 시 기본 운영체제와 필요에 따라서 애플리케이션을 미리 설치하여 사용할 수 있게 AMI를 선택하는 섹션이다.
AMI(Amazon Machine Image)는 인스턴스를 시작하는 데 필요한 소프트웨어 구성(운영 체제, 애플리케이션 서버 및 애플리케이션)이 포함된 템플릿이다. 검색을 통해 원하는 AMI를 찾거나, 아래에 “Quick Start”에 표시된 AMI를 선택하여 사용할 수 있다.
오른쪽 더 많은 AMI 찾아보기
를 클릭하면 다양한 AMI 목록을 확인할 수 있다.
나는 Ubuntu를 선택했다. 아래 “Amazon Machine Image(AMI)”에 내가 선택한 AMI 상세 정보가 표시된다.
또한 프리터어 사용 가능 여부도 표시되어 있다.
⊙ ⊙ ⊙
인스턴스 유형
AWS EC2 인스턴스 유형은 사용 목적에 따라 컴퓨팅, 메모리, 네트워크 성능을 가상 서버의 구성을 정의해 놓은 것을 말한다. 각 인스턴스 유형은 vCPU, 메모리, 스토리지, 네트워크 성능 등의 리소스를 기준으로 나뉘며, 특정 워크로드나 애플리케이션 요구사항에 맞게 설계되어 있다.
예를 들어:
t2.micro
: 저비용의 범용 인스턴스, 저트래픽 웹 애플리케이션에 적합.t2.xlarge
: 더 높은 컴퓨팅과 메모리가 필요한 애플리케이션에 적합.
“인스턴스 유형 비교”를 선택하면 리스트 형태로 보다 가독성 좋게 인스턴스를 비교해 볼 수 있다. “조언 받기”를 선택하면 AWS에서 제시한 분류를 선택하여 적합안 인스턴스를 제시해 준다.
프리터어인 경우 선택의 여지는 없다. 프리터어 사용 가능 인스턴스를 선택해 주자.
인스턴스 유형과 구조
다양한 인스턴스 유형과 예시
- 일반적인 용도(M 유형):
- 예시:
m5.large
,m6i.xlarge
- 설명: 웹 애플리케이션 서버나 중간 크기의 데이터베이스와 같은 다목적 워크로드에 적합하다.
- 일반적인 운영 서비스에서도 무리없이 사용할 수 있는 유형이다.
- 예시:
- 테스트 및 소규모 워크로드(T 유형):
- 예시:
t3.micro
,t4g.nano
- 설명: 소규모 개발 환경 또는 간단한 테스트 용도로 적합하며, 비용 효율적이다.
- 예시:
- 컴퓨팅 집약적인 작업(C 유형):
- 예시:
c5.2xlarge
,c6g.large
- 설명: 과학적 계산, 고성능 웹 서버 등 CPU 사용이 많은 워크로드에 최적화되어 있다.
- 예시:
- 메모리 중심의 워크로드(R 유형):
- 예시:
r5.large
,r6g.xlarge
- 설명: 대규모 데이터베이스나 인메모리 캐싱 등 메모리 집약적인 애플리케이션에 적합하다.
- 예시:
- GPU 기반 작업(G 유형):
- 예시:
g4dn.xlarge
,g5.8xlarge
- 설명: 머신러닝, 그래픽 렌더링 등 GPU가 필요한 작업에 활용된다.
- 예시:
인스턴스 유형 읽는 방법
AWS EC2 인스턴스 유형은 인스턴스 패밀리, 세대, 크기, 그리고 선택적인 추가 접미사로 구성됩니다. 이를 통해 특정 인스턴스의 역할과 성능 특성을 이해할 수 있습니다.
구성 요소
- 인스턴스 패밀리:
- 인스턴스의 주요 용도를 나타냅니다.
- 예:
t
(테스트 및 소규모 워크로드),m
(범용),c
(컴퓨팅 최적화),r
(메모리 최적화),g
(GPU 사용).
- 세대:
- 인스턴스의 기술적 발전 수준을 나타내며, 숫자가 높을수록 최신 세대입니다.
- 예:
t2
는 2세대,t3
는 3세대.
- 크기:
- 인스턴스의 리소스 크기를 나타냅니다.
- 예:
micro
,small
,large
,xlarge
,2xlarge
등.
- 접미사(선택적):
- 추가적인 특성을 나타냅니다.
- 예:
g
(Graviton 프로세서),n
(네트워크 최적화).
예시 분석
t3.micro
:- t: 테스트 및 소규모 워크로드.
- 3: 3세대.
- micro: 소규모 리소스 (vCPU 2개, 메모리 1GB).
m5.large
:- m: 범용 인스턴스.
- 5: 5세대.
- large: 중간 크기 리소스 (vCPU 2개, 메모리 8GB).
c6g.xlarge
:- c: 컴퓨팅 최적화.
- 6: 6세대.
- g: Graviton 프로세서 사용.
- xlarge: 큰 크기 리소스 (vCPU 4개, 메모리 8GB).
⊙ ⊙ ⊙
키 페어(로그인)
키 페어는 기본적으로 EC2 인스턴스에 SSH를 사용하여 안전하게 연결하기 위한 인증 매커니즘이다. 키 페어는 프라이빗 키와 퍼블릭 키가 존재한다.
- 프라이빗 키: 키 페어 생성 시 사용자에게 파일 형태로 다운로드 해 준다. 인스턴스에 접속할 때 사용된다.
- 퍼블릭 키: 키 페어 생성 시 AWS가 EC2 인스턴스에 자동으로 저장한다. 접속 요청 시 인증 과정을 처리한다.
새 키 페어 생성
를 클릭하면 키 페어 생성 레이어가 열린다.
키 페어 이름을 작성해 준다. 자유롭게 작성하되, 어떤 인스턴스의 키페어 인지 확인할 수 있는 이름으로 작성하는 것이 좋다.
예를 들어 인스턴스 명이 order-service-api-server
라면 order-service-api-server-key-pair
로 작성해 주는 것이 좋다.
키 페어 유형과 프라이빗 키 파일 형식은 기본 값으로 생성한다.
아래 키 페어 생성
을 클릭하면 바로 키 페어가 생성되고 즉시 프라이빗 키 페어 파일이 다운로드 된다.
프라이빗 키는 한 번만 다운로드할 수 있기 때문에 안전한 위치에 저장해야 한다.
만일 키 페어 생성을 원하지 않는 경우 “키 페어 없이 계속 진행(권장되지 않음)”을 선택해 주면 된다.
만약 프라이빗 키를 분실한 경우
새 키 페어 적용 방법
방법은 간단하다. 새로운 키 페어를 생성한 후 다운로드 한 프라이빗 키를 가지고 퍼블릭 키를 만든다. 그리고 인스턴스에 접근하여 기존 퍼블릭 키를 새로 만든 퍼블릭 키로 변경해준다.
이때 핵심은 인스턴스에 접근을 할 수 있어야 한다. AWS의 인스턴스 서비스로 이동하여 연결 옵션을 통해 키 페어 없이 접속이 가능하다. 단, 인스턴스가 실행 중이여야 한다.
만약 인스턴스가 실행 중이지 않은 상황에서 접속하려면 “Systems Manager”를 통해 접속 해야하는데, 조건이 인스턴스에 Systems Manager 에이전트가 설치되어 있어야 하고, IAM 역할이 설정되어 있어야 한다.
따라서 일단 AWS의 인스턴스 서비스의 연결 옵션을 통해 접속이 가능하다는 전제로 설명한다.
1. 새로운 키 페어 생성
키 페어 메뉴로 접근한다. 접근방법은 크게 아래 두 가지 방법이 있다.
- 해당 인스턴스 세부 정보 > “시작 시 할당된 키 페어” 항목의 키 페어 이름을 클릭한다.
- 왼쪽 메뉴의 키 페어 클릭하여 키 페어 메뉴에 접근한다.
우측 상단에 키 페어 생성
버튼을 클릭해서 새로운 키 페어를 생성해 준다.
다운로드 받은 프라이빗 키를 원하는 디렉터리에 이동시켜 보관한다.
프라이빗 키를 사용해 대응되는 퍼블릭 키를 생성할 수 있다. 프라이빗 키는 비대칭 암호화 방식에서 고유의 수학적 관계를 통해 퍼블릭 키를 유도할 수 있기 때문이다.
2. 퍼블릭 키 추출
퍼블릭 키를 추출방법
$ ssh-keygen -y -f <프라이빗_키_파일>.pem > new_public_key.pub
3. AWS EC2 콘솔의 “연결” 옵션을 통해 접속하여 퍼블릭 키 교체
추출한 new_public_key.pub를 인스턴스의 ~/.ssh/authorized_keys
에 추가한다.
⊙ ⊙ ⊙
네트워크 설정
EC2 인스턴스의 네트워크를 구성하는 섹션이다.
주요 구성은 서브넷, 퍼블릭 IP 자동 할당, 보안 그룹으로 나뉜다. 설정을 하려면 오른쪽 “편집” 화면으로 들어가면 된다.
서브넷
EC2 인스턴스는 무조건 서브넷에 포함되어 있어야 하기 때문에 서브넷을 선택하지 않으면 자동으로 임의의 서브넷이 자동 셋팅된다.
하나의 서브넷을 직접 선택하면 네트워크 설정 섹션 하단에 고급 네트워크 구성 영역이 활성화 된다.
더 세부적인 네트워크 설정이 가능하다.
퍼블릭 IP 설정
퍼블릭 IP는 외부와 인스턴스의 통신 여부를 위한 설정이라 보면 된다.
퍼블릭 IP를 비활성화하면 기본적으로 외부와 인스턴스의 양방향 통신은 불가능하고, VPC 내부 네트워크에서만 통신이 가능하다.
추가 설정(포트포워딩, NAT 등)으로 양방향 통신을 가능하게 할 수는 있지만, 기본적으로 불가능하다고 보면 된다.
방화벽(보안 그룹)
인스턴스에 들어오거나 나가는 트래픽을 제어하기 위한 설정을 하는 섹션이다.
인스턴스로 들어오는 트래픽을 규정하는 인바운드 규칙과, 인스턴스에서 외부 나가는 트래픽을 규정하는 아웃바운드 규칙을 설정할 수 있다. 기본 설정은 들어오는(인바운드) 트래픽은 모두 차단되어 있고, 외부로 나가는(아웃바운드) 트래픽은 모두 허용되어 있다.
다른 인스턴스에서 생성한 보안 그룹을 사용하고 싶은 경우 “기존 보안 그룹 선택”을 하면 기존에 생성되어 있는 보안 그룹을 선택할 수 있는 화면으로 전환된다.
원하는 보안 그룹을 선택하면 된다.
새로운 보안 그룹을 생성하고자 하는 경우 “보안 그룹 이름”과 “인바운드 규칙”을 설정하면 된다.
말했듯이 기본 아웃바운드 규칙은 모두 허용으로 설정되어 있기 때문에 추가 설정이 필요없다.
아웃바운드의 추가 설정은 인스턴스를 생성한 다음 보안 그룹에서 설정이 가능하다.
⊙ ⊙ ⊙
스토리지 구성
스토리는 EC2 인스턴스에서 사용할 저장소를 설정하는 섹션이다.
EC2 인스턴스의 기본 스토리지 유형은 EBS(Elastic Block Store) 이다. 쉽게 말해 EBS는 AWS에서 제공하는 가상의 하드 드라이브라고 생각하면 된다. 인스턴스 내부에 존재하는 것은 아니고 AWS에 제공하는 리소스 중 하나로, 네트워크로 연결하여 사용된다.
기본 설정은 크기와 볼륨 유형을 선택할 수 있다.
GIB (GiB)란?
- GIB (Gibibyte)는 이진 접두사를 사용하는 데이터 크기 단위이다.
- 1 GiB = ( 2^{30} ) 바이트 = 1,073,741,824 바이트.
- GiB는 이진법(1024 단위)을 사용하며, 일반적으로 컴퓨터 시스템의 메모리나 스토리지 크기를 표현할 때 사용된다.
- 이는 GB (Gigabyte)와 혼동될 수 있는데, GB는 10진법(1000 단위)으로 계산된다.
예: 1 GB = ( 10^9 ) 바이트 = 1,000,000,000 바이트.
루트 볼륨
- 루트 볼륨은 운영 체제(OS)가 설치된 디스크 영역을 말한다.
- EC2 인스턴스의 경우, 루트 볼륨은 주로 Amazon Machine Image(AMI)를 통해 생성된다.
- 루트 볼륨의 크기와 유형은 초기 인스턴스 생성 시 설정할 수 있으며, EBS(Elastic Block Store) 기반으로 설정된다.
더 상세 설정을 원하는 경우 우측 “고급”을 선택하면 상세 화면으로 전환된다.
- 프리티어에서 제공되는 최대 크기는 30GB이다.
- 30GB 이상 입력하면 비용이 발생한다.
- EBS 볼륨 유형은 gp3 그대로 선택한다.
항목 상세 설명
디바이스 이름
/dev/xvda
는 리눅스 기반 EC2 인스턴스에서 EBS 볼륨이 마운트될 때 할당되는 장치 이름입니다./dev
: 리눅스에서 디바이스 파일(하드디스크, CD-ROM 등)들이 위치하는 기본 디렉토리입니다.xvda
: Xen 하이퍼바이저에서 제공되는 디바이스 이름의 규칙입니다. Xen 가상화 환경에서는 디스크 이름 앞에xvd
가 붙습니다.a
는 첫 번째 디스크를 나타냅니다. 추가 디스크가 연결되면xvdb
,xvdc
와 같은 이름이 순차적으로 할당됩니다.
쉽게 말하면: /dev/xvda
는 EC2 인스턴스가 사용하는 첫 번째(루트) 디스크의 이름입니다.
스냅샷
- 스냅샷은 EBS 볼륨의 특정 시점에 대한 백업입니다.
- 이미지에 표시된 스냅샷은 Amazon Machine Image(AMI)를 기반으로 생성된 것으로 보입니다.
- AMI는 운영 체제와 초기 설정을 포함하는 템플릿인데, 이 템플릿을 생성할 때 스냅샷이 자동으로 생성됩니다.
- 스냅샷의 역할:
- 새로운 볼륨을 생성할 때, 기존 데이터를 그대로 복원하는 데 사용됩니다.
- 특정 시점의 데이터를 보존하거나 복구할 때 유용합니다.
크기 GIB
- GIB (Gibibyte)는 이진 접두사를 사용하는 데이터 크기 단위이다.
- 1 GiB = ( 2^{30} ) 바이트 = 1,073,741,824 바이트.
- GiB는 이진법(1024 단위)을 사용하며, 일반적으로 컴퓨터 시스템의 메모리나 스토리지 크기를 표현할 때 사용된다.
- 이는 GB (Gigabyte)와 혼동될 수 있는데, GB는 10진법(1000 단위)으로 계산된다. 예: 1 GB = ( 10^9 ) 바이트 = 1,000,000,000 바이트.
AWS에서 스토리지 크기를 정의할 때, 보다 정확한 용량을 나타내기 위해 이진 단위(GiB)를 사용한다. 이는 실제 하드웨어가 데이터 크기를 이진법으로 처리하기 때문이다.
볼륨 유형
- gp3 (General Purpose SSD):
- AWS에서 제공하는 EBS 스토리지 유형 중 하나로, 높은 성능과 비용 효율성을 제공하는 범용 SSD.
- 기본 IOPS: 3,000 (최대 16,000까지 확장 가능).
- 처리량(Throughput): 최대 1,000 MiB/s.
- 데이터베이스, 웹 서버, 개발 환경 등 다양한 사용 사례에 적합.
IOPS (Input/Output Operations Per Second)
- IOPS는 스토리지의 읽기/쓰기 성능을 측정하는 단위로, 초당 수행 가능한 입출력 작업 수를 나타낸다.
- IOPS가 높을수록 스토리지의 성능이 더 우수하다.
- 예: 데이터베이스와 같이 빠른 읽기/쓰기가 중요한 워크로드에서는 높은 IOPS가 요구된다.
3000 IOPS
- 이 값은 해당 EBS 볼륨(gp3)이 초당 최대 3000번의 읽기 또는 쓰기 작업을 처리할 수 있음을 의미한다.
- gp3는 기본적으로 높은 IOPS(최대 16,000 IOPS)를 지원하며, 사용자는 필요한 수준에 따라 설정 가능하다.
암호화
- EBS 암호화는 볼륨 전체를 암호화합니다.
- 저장된 데이터, 볼륨에서 전송되는 데이터, 스냅샷, 복제된 볼륨 모두 암호화됩니다.
- 암호화는 AWS Key Management Service(KMS)를 통해 관리되며, 기본 AWS 관리형 키 또는 사용자 정의 키를 사용할 수 있습니다.
- 알아두면 좋은 점:
- 암호화된 EBS 볼륨은 동일한 KMS 키를 사용하여 생성된 다른 인스턴스에서도 사용 가능합니다.
- 암호화된 볼륨에서 생성된 스냅샷도 자동으로 암호화됩니다.
- 암호화된 볼륨을 다른 계정으로 복사하려면 KMS 키 권한을 명시적으로 공유해야 합니다.
처리량(Throughput)
- 처리량은 EBS 볼륨이 초당 처리할 수 있는 데이터 양을 나타냅니다(단위: MiB/s).
- 예:
- 처리량이 125 MiB/s라면, 해당 볼륨은 초당 최대 125 MiB의 데이터 읽기/쓰기를 처리할 수 있습니다.
- 처리량은 일반적으로 대용량 연속 데이터(예: 데이터베이스 백업, 스트리밍 데이터)에 영향을 미칩니다.
- gp3 볼륨에서는 처리량을 사용자 정의할 수 있습니다(최대 1,000 MiB/s).
새 볼륨 추가
- 새 볼륨을 추가하면 EC2 인스턴스에 새로운 스토리지 디스크가 추가된다.
- 이는 물리적 하드디스크를 추가하는 개념과 유사하지만, 클라우드 환경에서 가상 디스크로 추가된다.
- 새로 추가된 볼륨은:
- 별도의 디바이스 이름으로 마운트됩니다(예:
/dev/xvdb
). - 독립적인 크기, IOPS, 처리량 설정을 가질 수 있다.
- 별도의 디바이스 이름으로 마운트됩니다(예:
파일 시스템: EFS와 FSx
- EFS (Elastic File System)
- 네트워크 파일 스토리지로, 여러 EC2 인스턴스에서 동시에 액세스 가능하다.
- 주요 특징:
- 확장성: 파일 시스템 크기를 자동으로 조정한다.
- 공유 가능: 여러 인스턴스가 데이터를 동시에 읽고 쓸 수 있다.
- NFS(Network File System) 프로토콜 기반으로 연결 된다.
- 사용 사례: 컨테이너, 데이터 분석, 다중 사용자 환경.
- FSx (Amazon FSx)
- 특정 워크로드에 최적화된 파일 스토리지 서비스이다.
- 주요 옵션:
- FSx for Windows File Server: Windows 기반 애플리케이션과의 높은 호환성을 제공한다.
- FSx for Lustre: 고성능 컴퓨팅과 데이터 분석 워크로드를 위한 고속 스토리지이다.
- 사용 사례: Windows 애플리케이션 호스팅, 머신러닝 워크로드.
⊙ ⊙ ⊙
인스턴스 생성
모든 설정은 마치면 오른쪽 화면에 생성할 인스턴스 갯수를 설정할 수 있다. 그리고 요약된 설정 정보를 확인할 수 있다.
확인 후 인스턴스 시작
을 누르면 인스턴스가 생성된다.
댓글남기기