일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 인공지능사관학교 5기
- 백준단어공부
- 백준3052번나머지
- 파이썬 집합문법
- 파이썬 시간복잡도
- python list 문법
- 코딩테스트
- 파이썬 딕셔너리 집합 차이점
- 백준파이썬
- 파이썬
- 백준초보
- Python dictionary
- 백준
- 알고리즘
- python set
- 파이썬리스트문법
- 백준파이썬1157
- Today
- Total
종원
AWS CCP 자격증 - 3 (EC2) 본문
EC2를 사용하기 전, 결제 예산 설정
이 계정에서는 최소한의 금액을 쓰거나 아예 쓰지 않도록 설정할 것 입니다.
일단 root 계정에서 결제 정보에 대한 IAM 사용자 및 역할 액세스를 활성화 합니다.
이렇게 하면 관리자인 IAM 사용자가 결제 데이터에 액세스할 수 있습니다.
IAM 사용자로 들어간 뒤, 대쉬보드에서 과금 정보 및 비용 관리 > 프리 티어 탭으로 들어가면 현재 사용 중인 프리 티어 현황이 나옵니다.
따라서 프리 티어를 100% 사용하고 있는지, 100%에 도달하고 있는지 등을 바로 알 수 있습니다.
예정된 비용에 관해 알림을 받기 위해서는 AWS 예산을 만드는 방법이 있습니다.
여기서 예산을 만들면 비용을 추적하고 한도에 도달할 때 알림을 받을 수 있습니다. (제로 지출 예산)
위 기능은 프리 티어 한도를 초과해 지줄하게 되면 알림을 보내는 예산을 생성합니다.
이메일 수신자를 입력하여 지출이 발생하면 이메일로 알림을 받게 됩니다.
다른 예산도 살펴 보면,
월별 비용 예산도 있으며,
이것이 클라우드용으로 책정할 예산 비용입니다. 예를 들어 개월당 10달러 이상은 쓰고 싶지 않을 수 있기 때문에
예산 금액에 10.00을 입력하고 이메일 수신자를 입력합니다. 그러면 실제 지출이 85%나 100%에 도달하거나 예상 지출이 100%에 도달할 것으로 예상되면 알림을 받게 됩니다.
이런식으로 예산을 설정하면 AWS 실습 중 프리티어를 벗어나 비용이 청구될 때 어디서 어떤 항목때문에 비용이 청구 되는지 알 수 있으며 그 서비스를 더 이상 이용하지 않거나 할 수 있습니다.
-----------------------------------------------------------------------------------------------------------------------------------------------
AWS EC2
아마존 EC2란? 아마존에서 가장 인기 있는 서비스입니다. 어디에나 사용되고 있죠 이게 무엇일까요?
이것은 일래스틱 컴퓨트 클라우드의 약자로 AWS에서 제공하는 서비스형 인프라스트럭처입니다.
즉, EC2는 하나의 서비스가 아닙니다 높은 수준에서 보면 많은 것을 포함하고 있습니다.
가상 머신을 EC2에서 임대할 수 있는데 이를 EC2 인스턴스라고 합니다.
데이터를 가상 드라이브 또는 EBS 볼륨에 저장할 수 있고, 일래스틱 로드 밸런서로 로드는 분산시킬 수 있습니다.
또 오토 스케일링 그룹(ASG)을 통해 서비스를 확장할 수 있습니다.
AWS EC2의 사용법을 아는 것은 클라우드 작동 방식을 이해할 때 필수적입니다.
이전에 말씀드린 것처럼 클라우드는 필요할 때마다 언제든지 컴퓨팅을 대여할 수 있고 EC2가 바로 그 예시입니다.
-----------------------------------------------------------------------------------------------------------------------------------------------
EC2 인스턴스의 운영 체제
EC2 인스턴스의 운영 체제로 어떤 것을 선택할 수 있을까요? 세 가지 옵션이 있습니다 리눅스가 가장 인기 있고 윈도우와 맥 OS가 있습니다.
이 가상 머신에 사용할 컴퓨팅 성능과 코어의 양도 선택할 수 있는데 즉, CPU의 개수입니다.
그리고 랜덤 액세스 메모리(RAM)의 양도 선택할 수 있고, 용량도 선택할 수 있습니다.
예를 들어, 네트워크를 통해 연결할 스토리지가 필요한지 여부가 있습니다.
EBS 또는 EFS에 대해 배울 것이고, 또는 하드웨어에 연결할 수도 있습니다.
이 경우, EC2 인스턴스 스토어가 될 것입니다.
EC2 인스턴스에 연결할 네트워크의 종류를 선택합니다. 속도가 빠른 네트워크 카드를 원하는지, 어떤 종류의 공용 IP를 원하는지 등 선택할 수 있습니다.
마지막으로 EC2 인스턴스의 방화벽 규칙을 선택합니다.(보안그룹)
진짜 마지막으로 인스턴스를 구성하기 위한 부트스트랩 스크립트가 있습니다.
또한 처음에 설정하는 EC2 사용자 데이터가 있습니다 이렇게 많은 옵션이 있고 다른 자격증의 수준에서는 EC2 인스턴스에 대한 더 많은 옵션을 볼 수 있을 것입니다 하지만 여러분이 기억해야 할 핵심은 여러분이 원하는 대로 가상 머신을 선택하여 AWS에서 빌릴 수 있다는 것입니다.

즉, EC2 사용자 데이터 스크립트를 사용하여 인스턴스를 부트스트래핑할 수 있습니다.
부트스트래핑란?
이는 머신이 작동될 때 명령을 시작하는 것을 말합니다. 스크립트는 처음 시작할 때 한 번만 실행되고 다시 실행되지 않습니다.
따라서 EC2 사용자 데이터에는 매우 특정한 목적이 있는데요 부팅 작업을 자동화하기 때문에 부트스트래핑이라는 이름을 갖게 됩니다.
인스턴스를 부팅할 때 자동화하고 싶은 작업이 뭐가 있을까요? 업데이트하고, 소프트웨어를 설치하고 일반적인 파일을 인터넷에서 다운로드하고 여러분이 생각하는 모든 것들이 원하는 것 뭐든지 할 수 있습니다.
다만 사용자 데이터 스크립트에 작업을 더 추가할수록 부팅 시 인스턴스가 할 일이 늘어납니다 간단하죠? 참고로, EC2 사용자 데이터 스크립트는 루트 계정에서 실행됩니다 따라서 모든 명령문은 sudo로 해야 합니다
EC2 인스턴스의 종류에는 뭐가 있을까요?
이것은 예시입니다 수백 개의 EC2 인스턴스 종류 중 다섯 가지를 준비해 보았습니다
첫 번째는 t2.micro로 매우 간단합니다.
vCPU 1개, 메모리 1GB입니다 스토리지는 오직 EBS만 있고, 네트워크 성능은 낮음에서 중간 사이입니다.
인스턴스 종류를 증가하는 순간 예를 들어 여전히 같은 제품군에 있고
즉, t2 제품군에서 t2.xlarge로 증가하면 vCPU 4개, RAM 16GB, 네트워크 성능은 중간입니다
다른 완전히 다른 수준을 선택하면 c5d.4xlarge는 이름이 좀 복잡한데요 vCPU 16개, 즉 코어 16개입니다. 메모리는 32GB로 훨씬 많고 EC2 인스턴스에 부착된 스토리지인 400 NVMe SSD가 있습니다. 네트워크는 굉장히 좋아서 최대 10Gbps까지입니다. 네트워크 스토리지와 통신하는 대역폭도 좋습니다.
보이는 것처럼 r5.16xlarge나 m5.8xlarge는 다른 특징을 갖는데요 기본적으로 여러분은 애플리케이션에 가장 적합한
인스턴스를 선택하여 주문형 클라우드를 사용할 수 있습니다
t2.micro가 AWS의 프리 티어입니다 한 달에 750시간까지 사용할 수 있으며 즉, 인스턴스를 한 달 동안 계속 실행해도 된다는 뜻입니다.
-----------------------------------------------------------------------------------------------------------------------------------------------
EC2 실습 (Amazon Linux)
AWS 콘솔을 이용해 처음으로 EC2 인스턴스 즉 가상 서버를 실행하도록 하겠습니다.
EC2 인스턴스를 실행할 때 다양한 매개변수가 있는데, 그중에 중요한 매개변수만 알아볼 예정입니다.
또 사용자 데이터 코드를 EC2 인스턴스에 전달해, EC2 인스턴스에 바로 웹 서버를 실행할 예정입니다.
마지막으로는 인스턴스를 시작하고 멈추거나 종료하는 법을 배울것 입니다.
IAM 사용자로 로그인 하였고, 콘솔에서 EC2를 검색하여 인스턴스로 들어와 인스턴스 시작을 클릭합니다.
EC2 인스턴스를 실행하기 위해 이름과 태그를 추가해야 합니다. (My First Instance으로 이름 설정)
그 다음엔 EC2 인스턴스의 기본 이미지(운영체제)를 선택해야 합니다.
많은 이미지가 있지만 Quick Start에 이미 몇 가지 이미지가 나와있습니다.
저는 Amazon Linux를 사용할 거고
Amazon Linux 2023 AMI 는 프리 티어 조건에 맞으니 그대로 두겠습니다.
인스턴스 유형은 CPU 숫자나 메모리 양에 따라 비용도 다를 것 입니다. 저는 기본 t2.micro (프리티어)로 진행하겠습니다.
다음은 인스턴스에 로그인하는 키-쌍 입니다. SSH 유틸리티 사용 시 인스턴스에 접근하기 위해 꼭 필요하고, SSH를 사용할 예정이니 키 쌍을 생성해야 합니다.
Mac, Linux, Windows 10 이상을 사용한다면 .pem 형식 선택
윈도우 10 미만은 PuTTY에 사용될 .ppk 선택
생성 후 키페어를 생성하면 다운로드 되며, 자동으로 선택됩니다.
네트워크 설정의 경우 아무것도 바꾸지 않고 진행합니다.
여기서 인스턴스가 퍼블릭 ip를 가지게 될 텐데 방화벽을 선택할 수 있습니다.
콘솔이 바로 생성하는 launch-wizard-1이라는 새 방화벽을 생성하고 여기에 여러 규칙을 정의할 수 있습니다.
첫 번째 규칙으로, 모든 SSH 트래픽을 허용한다고 설정하면 보안 그룹에 SSH 트래픽을 허용하는 규칙이 만들어집니다.
EC2 인스턴스에 웹 서버를 실행할 예정이라서 인터넷으로부터 들어오는 HTTP 트래픽을 허용해야하니 박스를 체크합니다.
스토리지 구성 또한 기본 설정 그대로 두겠습니다.
고급 정보를 들어가보면 종료 시 삭제 부분이 있는데 이는 EC2 인스턴스를 종료하면 볼륨도 삭제된다는 의미 입니다.
맨 아래 고급 세부사항을 가면,
다음과 같이 사용자 데이터 항목이 나타나는데, EC2 인스턴스에 스크립트 즉 명령어를 전달하며, EC2 인스턴스를 처음 실행할 때만 전달합니다.
인스턴스를 "처음" 시작할 때 즉, 인스턴스의 수명 주기 중 단 한 번만 이 스크립트가 실행됩니다.
위 코드는 실행되면 몇 가지 업데이트 후 머신에 httpd 웹 서버를 설치하고 웹 서버인 HTML 파일을 작성합니다
마지막은 최종적으로 인스턴스 개수, 환경, 가상 서버 유형과 방화벽 등 설정을 확인합니다.
클라우드 덕분에 서버를 하나도 소유하지 않고도 인스턴스를 생성할 수 있었습니다
인스턴스 이름과 식별자로 사용되는 인스턴스 ID 그리고 EC2 인스턴스에 접근할 때 사용하는 퍼블릭 IPv4 주소도 있고 아까 생성할 때 설정했던 유형, 방화벽, 등의 정보를 전부 확인할 수 있습니다.
퍼블릭 ip 주소를 검색창에 검색하면
이렇게 출력이 되고, Hello World와 프라이빗 IPv4 주소가 나옵니다.
실행 중인 EC2 인스턴스가 더 이상 필요하지 않다면 인스턴스 상태를 눌러 중지를 할 수 있습니다.
인스턴스를 중지하고 다시 실행하면 아까처럼 제공되는 퍼블릭 ip를 주소창에 입력하면 되는데 여기서 중지하고 다시 실행했을 때,
이렇게 퍼블릭 ip주소가 바뀔 수 있습니다.
하지만 프라이빗 ip주소는 바뀌지 않습니다!
-----------------------------------------------------------------------------------------------------------------------------------------------
EC2 인스턴스의 유형
최적화 유형도 각기 다릅니다
https://aws.amazon.com/ko/ec2/instance-types/
컴퓨팅 - Amazon EC2 인스턴스 유형 - AWS
aws.amazon.com
위 사이트 에서는 다양한 유형의 인스턴스를 볼 수 있습니다.
범용, 컴퓨팅 최적화와 메모리 최적화 등이 있고, EC2 인스턴스와 유형과 요금 및 특성을 확인할 수 있습니다.
AWS의 이름 규칙이 있는데, 위 m5.2xlarge라는 유형의 인스턴스를 예로 들어 보겠습니다. m을 인스턴스 클래스로 부르겠습니다.
그리고 이 인스턴스 클래스는 범용의 인스턴스입니다. 5는 인스턴스의 세대를 뜻합니다 즉, AWS가 하드웨어를 계속 개선해서 새로운 세대의 하드웨어를 출시하고 m5 이후에 m 유형의 인스턴스 클래스를 개선하면 m6가 되는 것입니다 2xlarge는 인스턴스 클래스 내에서 크기를 나타냅니다.
small로 시작해 large, 2xlarge 4xlarge 등의 크기가 있고, 인스턴스의 크기가 클수록 인스턴스에 더 많은 메모리와 CPU를 가지게 됩니다.
시험과 관련되어 몇가지 유형의 인스턴스를 공부해야하는데
범용 인스턴스
먼저, 범용의 인스턴스는 웹 서버나 코드 저장소와 같은 다양한 작업에 적합합니다. 컴퓨팅, 메모리, 네트워킹 간의 균형도 잘 맞습니다.
제가 사용하고 있는 인스턴스도 범용 인스턴스의 프리 티어인 t2.micro를 사용하고 있습니다. 방금 보여드린 웹사이트에서 범용 인스턴스의 모든 유형을 확인할 수 있고 계속해서 개선되고 있습니다.
컴퓨팅 최적화 인스턴스
컴퓨팅 최적화 인스턴스는 컴퓨터 집약적인 작업에 최적화된 인스턴스입니다.
컴퓨터 최적화 인스턴스의 고성능 프로세서는 다음과 같이 사용됩니다.

일부 데이터의 일괄 처리에 사용하거나 미디어 트랜스코딩 작업 시,
고성능 웹 서버가 필요하거나 고성능 컴퓨팅이라는 HPC 작업을 할 때,
머신 러닝이나 전용 게임 서버가 있을 때 사용합니다.
모두 훌륭한 CPU와 컴퓨팅을 요구하는 작업이며 EC2 인스턴스는 이런 특성을 가지고 있습니다.
그리고 컴퓨터 최적화의 모든 인스턴스는 C로 시작하는 이름을 가지고 있습니다 C5, C6 등
메모리 최적화 인스턴스
이 유형의 인스턴스는 메모리에서 대규모 데이터셋을 처리하는 유형의 작업에 빠른 성능을 제공합니다.
메모리는 RAM을 뜻하고 사용 사례를 살펴보면 대부분 인 메모리 데이터베이스가 되는 고성능의 관계형 또는 비관계형의
데이터베이스에 사용하고 일래스틱 캐시를 예로 들 수 있는 분산 웹스케일 캐시 저장소에도 사용합니다.

또, 비즈니스 인텔리전스 즉, BI에 최적화된 인 메모리 데이터베이스와 대규모 비정형 데이터의 실시간 처리를 실행하는
애플리케이션에도 사용합니다. 메모리 최적화 인스턴스의 이름을 살펴보면 RAM을 나타내는 R로 시작합니다.
하지만 X1이나 대용량 메모리 Z1도 있습니다 이름을 기억할 필요는 없지만
스토리지 최적화 인스턴스
로컬 스토리지에서 대규모의 데이터셋에 액세스할 때 적합한 인스턴스입니다.
스토리지 최적화 인스턴스의 사용 사례로는
고주파 온라인 트랜잭션 처리인 OLTP 시스템에 사용되며 관계형과 비관계형인 NoSQL 데이터베이스에 사용합니다.
예를 들어, 레디스(Redis) 같은 메모리 데이터베이스의 캐시나 데이터 웨어하우징 애플리케이션과 분산 파일 시스템에 사용됩니다 AWS의 스토리 최적화 인스턴스는 이름이 I, G 또는 H1으로 시작합니다.
몇 가지 유형의 인스턴스 비교
t2.micro에는 하나의 vCPU와 1GB의 메모리가 있습니다
그리고 r5.16xlarge를 보면 16개의 vCPU와 512GB의 메모리가 있습니다
메모리가 중요하다는 것을 알 수 있죠
c5d.4Xlarge와 비교해 보면 16개의 vCPU와 32GB의 메모리가 있습니다.
작은 메모리나 많은 CPU 등 네트워크 성능에 따라 EBS 대역폭 등이 달라집니다.
-----------------------------------------------------------------------------------------------------------------------------------------------
EC2 인스턴스의 보안그룹(방화벽)
보안 그룹은 AWS 클라우드에서 네트워크 보안을 실행하는데 핵심이 됩니다.
EC2 인스턴스에 들어오고 나가는 트래픽을 제어합니다.

보안 그룹은 간단한데요 허용 규칙만 포함합니다 출입이 허용된 것이 무엇인지 확인할 수 있고 IP 주소를 참조해 규칙을 만들 수 있습니다.
컴퓨터의 위치나 다른 보안 그룹을 참조하는 것입니다 보안 그룹끼리 서로 참조할 수도 있습니다.
컴퓨터에서 공공 인터넷을 사용해 EC2 인스턴스에 액세스하려고 할 경우 EC2 인스턴스 주변에 보안 그룹을 생성해야 하는데 그게 바로 방화벽을 생성하는 것입니다
그러면 보안 그룹은 규칙을 가지게 되는데,
그 규칙은 바로 인바운드 트래픽의 여부이고 외부에서 EC2 인스턴스로 들어오는 것이 허용되면 아웃바운드 트래픽도 수행할 수 있는 것입니다.
보안 그룹은 EC2의 인스턴스 방화벽이며 포트로의 액세스를 통제하며 인증된 IP 주소의 범위를 확인해 IPv4인지 IPv6인지 확인합니다.
또, 외부에서 인스턴스로 들어오는 인바운드 네트워크도 통제하며 인스턴스에서 외부로 나가는 아웃바운드 네트워크도 통제합니다.
보안 그룹 규칙은 이런 형식으로 확인할 수 있습니다 유형을 확인할 수 있고 프로토콜은 TCP이며 포트 범위는 트래픽이 인스턴스에서 통과하는 위치입니다
그리고 소스는 IP 주소의 범위이며 0.0.0.0/0는 전체 IP를 뜻합니다
두 번째는 칸에 있는 122.149 ~~를 보면 단 하나의 IP를 뜻합니다.
보안 그룹에 대해 알면 좋은것들
- 보안 그룹은 여러 인스턴스와 연결할 수 있다. (인스턴스도 마찬가지로 여러 보안 그룹과 연결 가능)
- 보안 그룹은 지역과 VPC 결합으로 통제되어있다. (지역을 전환하면 새 보안 그룹을 생성하거나 다른 VPC 생성해야함)
- 보안 그룹은 EC2 외부에 있다.
-> 트래픽이 차단되면 EC2 인스턴스는 확인할 수 없다.(EC2 내부 애플리케이션이 아니라 EC2 외부의 방화벽이기 때문)
- SSH 액세스를 위해 하나의 별도 보안 그룹을 유지하는 것이 좋다
-> 보통 SSH 액세스는 가장 복잡하므로 별도 보안 그룹이 잘 완료되고 있는지 확인하기 위해 그룹을 분리하여 관리
- 타임아웃으로 애플리케이션에 접근할 수 없으면 보안그룹의 문제이다 (포트에 연결하였으나 멈추거나 대기만 한다면)
- 연결 거부 오류가 발생한거라면 보안그룹은 정상적으로 실행됐고 트래픽은 통과했지만 애플리케이션의 문제가 생긴거다.
- 기본적으로 모든 인바운드 트래픽은 차단되어 있다.
- 기본적으로 모든 아웃바운드 트래픽은 허용되어 있다.
보안 그룹의 다른 보안 그룹을 참조하는 방법
맨 왼쪽에 EC2 인스턴스에는 보안그룹 1이라는 보안그룹이 있고, 기본 인바운드 규칙은 보안그룹1의 인바운드를 보안 그룹 2에 허용하는 것입니다.
다른 EC2 인스턴스를 생성하고 보안 그룹 2를 연결한 경우, 위 설정한 보안 그룹 규칙으로 첫 번째 EC2 인스턴스로 정한 포트를 통해서 EC2 인스턴스가 바로 연결되도록 허용합니다.
마찬가지로 보안 그룹 1에 연결된 다른 EC2 인스턴스가 있다면 이 인스턴스도 왼쪽 인스턴스와 바로 통신하도록 허용합니다.
EC2의 인스턴스의 IP와 상관없이 올바른 보안 그룹에 연결되어 있기 때문에 다른 인스턴스와 바로 통신할 수 있습니다.
하지만 보안그룹 3을 가지고 있는 인스턴스는 당연히 연결할 수 없습니다.
시험 볼 때 알아야할 포트
22 = SSH : 시큐어 셸 이라는 의미이고 Linux에서 EC2 인스턴스로 로그인하도록 합니다.
21 = FTP : 파일 전송 프로토콜이고 파일 공유 시스템에 파일을 업로드하는데 사용됩니다.
22 = SFTP : SFTP 도 같은 파일 전송 프로토콜이지만 SSH를 사용해서 업로드하기 때문에 같은 22번 포트번호를 사용합니다. (보안 전송 프로토콜)
80 = HTTP : 보안이 되지 않은 사이트에 액세스 하는 포트입니다
443 = HTTPS : 보안 사이트에액세스 하며 현재 표준으로 사용되고 있습니다.
3389 = RDP : 원격 데스크톱 프로토콜이며, 윈도우 인스턴스에 로그인할 때 사용됩니다.
22번 포트는 리눅스, 3389는 윈도우
-----------------------------------------------------------------------------------------------------------------------------------------------
보안 그룹 실습
현재 생성한 EC2 인스턴스의 보안그룹은 두 개인 것을 확인할 수 있습니다.
기본 보안 그룹은 자동으로 생성되어 있고 launch-wizard-1가 이 EC2 인스턴스를 생성했을 때 만든 첫 번째 보안 그룹입니다.
보안 그룹에는 ID가 지정되어 있는데 EC2 인스턴스의 식별자와 같은 역할을 하는 것이 ID입니다.
인바운드 규칙은 외부에서 EC2 인스턴스로 들어오는 연결을 위해 존재하는 규칙입니다.

화면에 보이는 것처럼 두 개의 인바운드 규칙이 있는데 첫 번째 인바운드 규칙은 SSH 타입으로 인스턴스에서 22번 포트의 연결을 허용합니다.
HTTP인바운드 규칙은 어디서든 80번 포트와 연결되도록 지원합니다. 현재 설정된 규칙을 통해 웹 서버에 액세스할 수 있었습니다.
SSH 인바운드 규칙은 어디서든 22번 포트와 연결할 수 있도록 하는데 0.0.0.0/0이 바로 모든 위치를 뜻합니다.

만약 이렇게 로딩 아이콘만 계속 돌아가고, 계속 연결을 시도하지만 성공하지 못한다거나 결과적으로 연결에 실패한다면
이를 시간초과(timeout)라고 하는데 이렇게 EC2 인스턴스에 연결하려고 할 때 시간초과가 발생한다면
그 원인은 거의 대부분이 EC2 보안 그룹에 있습니다. 따라서 이런 경우에는 보안 그룹 규칙에서 모든 규칙이 제대로 설정되어있는지를 확인해야 합니다. (인바운드 규칙 등)
또한 여러 인바운드 규칙을 설정할 수 있습니다.
또한 아웃바운드 규칙은 IPv4에서 모든 위치로 트래픽을 보낼 수 있도록 설정한 상태입니다.
(EC2 인스턴스가 모든 위치에서 인터넷에 접근할 수 있다는 뜻)
-----------------------------------------------------------------------------------------------------------------------------------------------
SSH 개요
SSH는 Amazon Cloud에서 가장 중요한 기능 중 하나입니다. 터미널이나 명령줄을 이용해서 원격 머신 혹은 서버를 제어할 수 있도록 하는 기능입니다.
클라우드에서 실행 시 까다로운 부분 중 하나는 유지 보수나 조치를 취하기 위해 서버 내부와 연결하는 것입니다.
Linux 서버에서는 시큐어 셸인 SSH를 서버에 사용합니다. 그리고 컴퓨터의 운영체제에 따라 방법은 다양합니다
SSH는 명령줄 인터페이스 도구로 Mac, Linux, Windows 10 이상에서 사용할 수 있습니다.
Putty는 SSH와 동일하게 SSH 프로토콜을 사용해 EC2 인스턴스에 연결하도록 합니다. (windows)
터미널, putty가 아닌 EC2 Instance Connect로 웹 브라우저에 사용할 수 있는데, 좋은 점은 모든 버전의 Mac, Linux, Windows에서 사용 가능하며 지금은 Amazon Linux2에서 사용됩니다.
Amazon Linux2를 실행한 EC2 머신이 있다고 가정합니다.
이 머신은 퍼블릭 IP를 사용하는데 여기에 액세스하려고 합니다.
SSH 보안 그룹은 22번 포트 액세스를 허용하기 때문에 어떤 머신으로든 22번 포트를 거쳐 웹으로 액세스 하게 됩니다.
EC2 머신으로 액세스를 진행한다는 뜻 입니다.
SSH를 통해 인스턴스 연결해보기
ssh가 있는것을 확인 했고, 아까 받은 키쌍 pem 파일이 있는 디렉터리로 이동
SSH에 대해 22번 포트가 열려있는지도 확인
ssh -i .\EC2Tutorial.pem ec2-user@43.201.55.86
-> Amazon Linux 2를 사용하기 때문에 ec2-user 계정을 사용해서 IP를 입력하고 앞에 있는 키를 사용한다는 뜻
호스트 인증을 신뢰 할 수 없는데 계속 진행할 것인지를 물으면 yes 입력
머신과 연결이 되었습니다.
SSH보다 더 쉽게 연결하는 방법
EC2 Instance Connect
연결 클릭
EC2 Instance Connect 를 통해서 브라우저 기반으로 인스턴스를 SSH세션과 연결할 수 있습니다.
여기서는 SSH 키 옵션이 없는데 이는 연결을 할 때 자동으로 임시 SSH 키가 업로드되며 그에 따라 연결이 실행됩니다.
따라서 이 방법을 이용하면 따로 SSH 키를 관리할 필요가 없습니다.
아래 연결 버튼을 누르면
새 탭이 열리는 즉시 Amazon Linux 2 AMI에 접속된 것을 볼 수 있습니다.
여기서 바로 whoami나 ping등 명령을 정상적으로 실행할 수 있는데
장점은 세션이 브라우저에서 바로 실행된다는 것입니다.
터미널 같은 명령줄 인터페이스를 사용할 필요가 없습니다!
하지만 이 EC2 Instance Connect 또한 내부에서 SSH를 사용해서 인스턴스 보안 그룹의 SSH 인바운드 규칙이 있지 않는다면 제대로 작동하지 않습니다. (22번 포트가 열려있지 않아서)
EC2 인스턴스를 위한 IAM 역할의 사용 실습
EC2 인스턴스 커넥트를 사용해 연결하여 진행합니다.
EC2 인스턴스 커넥트로 사용중인 Amazon Linux AMI도 AWS CLI를 포함하고 있어 따로 설치할필요가 없습니다.
aws iam 유저리스트를 출력해보니 자격 증명을 위해 aws configure 명령을 실행하라고 합니다.
그럼 aws configure 명령을 실행해 자격 증명 및 액세스 id 비밀 엑세스 키, 그리고 리전 이름을 지정할 수 있습니다만
이 방법은 매우 좋지 않은 방법입니다.
만약 aws configure 명령을 통해 이 EC 인스턴스에 상세 개인 정보를 입력해 두면 이 계정 상의 누구라도 다시 EC2 인스턴스 커넥트 등을 통해 EC 인스턴스에 접속을 해서 인스턴스에 입력된 자격 증명 정보를 회수할 수 있게 됩니다.
따라서 이런 이유로, IAM API 키를 절대로 입력하시면 안 됩니다. EC2 인스턴스에 액세스 키 ID와 비밀 액세스 키를 입력하는 건 최악의 방법입니다.
그럼 어떻게 사용을 해야하냐?
그 대신 사용할 수 있는 것이 바로 "IAM역할"입니다. 이전에 관리 콘솔에서 IAM에 들어갔을 때 IAM 역할을 생성했던 적이 있었습니다.

저번에 EC2를 위한 역할을 생성해놨고, DemoRoleForEC2에 연결된 정책은 IAMReadOnlyAccess 하나 입니다.
이 역할을 EC2 인스턴스에 연결해서 자격 증명을 제공하게끔 하겠습니다.
인스턴스의 보안탭에 가면 IAM 역할이 없는 상태입니다.
인스턴스 작업에 가서 보안 - IAM 역할 수정으로
DemoRoleForEC2 역할을 클릭후 저장하게 되면 인스턴스에 IAM 역할이 연결되게 됩니다.
인스턴스의 보안탭에 IAM 역할이 추가되었습니다.
다시 탭으로 돌아와 aws iam list-users를 입력한 후 Enter를 누르면 IAM으로부터 유저에 관한 응답을 받고 있습니다.
aws configure 명령을 실행하지 않아도 IAM 역할을 연결 후에 이 명령을 실행하니 작동이 되는것을 볼 수 있었습니다.
EC2 인스턴스의 구매 옵션
지금까지 우리는 온디맨드 EC2 인스턴스를 사용했습니다.
요청에 따라 언제든 인스턴스를 실행할 수 있어서 단기 워크로드에 잘 어울립니다.
가격을 예측할 수 있고 초당 비용을 지불하게 됩니다
하지만 다른 종류의 워크로드라면 이를 AWS에 명시해서 할인과 가격을 최적화할 수 있습니다.

예를 들어 예약 인스턴스는 1년이나 3년 기간으로 사용할 수 있는데 장기 워크로드에 어울립니다. 데이터베이스를 오랫동안 사용하기로 했다면 예약 인스턴스가 좋습니다.
만약 유연성 있는 인스턴스가 필요할 경우, 예를 들어 시간에 따라 인스턴스의 유형을 변경하려면 전환형 예약 인스턴스를 사용하면 됩니다.
다음은 Savings Plans입니다 1년 또는 3년을 기간으로 하는 훨씬 현대적인 요금 모델입니다.
인스턴스 유형 약정이 아니라 특정 사용량을 약정하여 달러로 지불합니다. 역시 장기 워크로드에 어울립니다.
스팟 인스턴스는 아주 짧은 단기 워크로드용 인스턴스로, 상당히 저렴합니다만 언제든 인스턴스를 손실할 수 있으며
따라서 신뢰성이 낮습니다
전용 호스트를 사용하면 물리적 서버 전체를 예약하고 인스턴스 배치를 제어할 수 있습니다.
그리고 전용 인스턴스란 여러분의 하드웨어를 공유하지 않는 겁니다
마지막으로 용량 예약을 통해 특정한 AZ의 용량을 원하는 기간 동안 예약할 수 있습니다.
EC2 On Demand
사용한 만큼 지불하므로 Linux나 Windows를 사용하면 첫 1분이 지난 이후부터 초당 비용이 청구됩니다.
그 외 다른 운영 체제에서는 시간당 비용이 청구되지요
가격은 제일 높지만 선결제가 없고 장기 약정도 필요하지 않습니다.
그러므로 이 옵션에 적합한 것은 연속적인 단기 워크로드입니다.
애플리케이션 동작을 예측할 수 없는 워크로드입니다.
EC2 Reserved Instance (예약 인스턴스)
예약 인스턴스는 온디맨드에 비해 비용을 약 72% 절약할 수 있고 특정 인스턴스 속성을 예약합니다.
예를 들어 인스턴스 유형과 리전, 테넌시 및 OS가 있습니다.
예약 기간으로 1년 혹은 3년을 지정할 수 있는데, 3년을 선택하면 할인율이 더 높아집니다.
전체 선결제나 부분 선결제도 가능하고 선결제 없이도 할 수 있습니다.
물론 전체 선결제를 하면 할인율이 가장 높습니다.
그리고 범위의 경우, 특정 리전으로 범위를 지정하거나 특정 AZ의 용량을 예약하도록 영역을 지정할 수 있습니다.
예약 인스턴스에 적합한 곳은 애플리케이션이 안정된 상태로 사용되는 데이터베이스 등입니다.
그리고 마켓플레이스에서 예약 인스턴스를 구매하거나 판매할 수도 있습니다.
- 전환형 예약 인스턴스
예약 인스턴스에도 특별한 종류가 있습니다. 바로 전환형 예약 인스턴스입니다
인스턴스 유형을 변경할 수 있고 인스턴스 제품군과 운영체제 및 범위, 그리고 테넌시가 변경 가능합니다.
유연성이 높기 때문에 할인율은 줄어듭니다.(최대 66%까지 할인)
EC2 Savings Plans
장기 사용에 따라 할인을 받을 수 있는데 예약 인스턴스와 마찬가지로 70% 가까이 됩니다.
대신 시간당 10달러의 비용을 1년에서 3년 동안 약정합니다.
Savings Plans에서 초과하는 사용량은 온디맨드 가격으로 청구됩니다.
Savings Plans는 특정 인스턴스 제품군과 리전에 한해 사용할 수 있는데 예를 들어 us-east-1의 M5 유형 인스턴스 제품군 등이 있습니다.
인스턴스 크기에 구애받지 않으므로 m5.xlarge와 m5.2xlarge 모두 가능합니다.
OS의 경우 Linux와 Windows 간 전환할 수 있고 테넌시의 경우 호스트, 전용 및 기본값을 전환할 수 있습니다.
EC2 Spot Instances
(시험에 자주나옴)

스팟 인스턴스는 가장 파격적인 할인을 제공합니다. 온디맨드와 비교하여 최대 90%까지 할인됩니다/
그러나 인스턴스가 언제든 중단될 수 있습니다. 여러분이 스팟 인스턴스에 지불하고자 하는 가격보다 스팟 가격이 더 높으면 인스턴스가 중단될 겁니다.
AWS에서 가장 비용 효율적인 인스턴스이고 서비스가 중단되어도 복구하기 쉬운 워크로드에 매우 큰 도움이 됩니다.
어떤 것이 있을까요?
배치 작업, 데이터 분석 그리고 이미지 처리 및 분산된 워크로드 또는
시작 및 종료 시점이 유동적인 워크로드 등입니다.
그러나 중요한 작업이나 데이터베이스에는 적합하지 않습니다.
EC2 Dedicated Hosts
전용 호스트입니다 여러분의 사용 사례에 맞춘 EC2 인스턴스 용량을 가진 물리적 서버입니다.

전용 호스트가 필요한 경우( 물리적 서버에 액세스 )는
규정 준수 요구 사항이 있거나 기존의 서버 결합 소프트웨어 라이선스를 사용해야 할 경우입니다.
이때의 비용은 소켓당, 코어당, 또한 VM 소프트웨어 라이선스 당 청구됩니다.
전용 호스트 구매 옵션은 온디맨드로 초당 청구되거나 1년 또는 3년 기간을 예약할 수 있습니다.
AWS에서 가장 비싼 옵션이죠
이유는 실제로 물리적인 서버를 예약하기 때문입니다.
따라서 여러분에게 사용자 라이선스가 있을 경우, 즉 라이선스 모델과 함께 제공되는 소프트웨어처럼 사용자 라이선스를 사용하거나 강력한 규제와 규정 준수 요건이 필요한 사용 사례에 적합합니다.
EC2 Dedicated Instance
전용 하드웨어에서 실행되는 인스턴스이며 물리적 서버와는 다릅니다.
같은 계정의 다른 인스턴스와 하드웨어를 공유하기도 하는데 인스턴스 배치는 제어할 수 없습니다.
전용 인스턴스와 전용 호스트의 차이점이 여기 나와 있는데요
중요한 것
전용 인스턴스는 사용자 하드웨어에 고유한 인스턴스를 갖는것이고
전용 호스트는 물리적 서버 자체에 액세스하여 저수준(low level) 하드웨어에 대한 가시성을 제공합니다
EC2 Capacity Reservations
EC2의 용량 예약입니다.
원하는 기간 동안 특정한 AZ에 온디맨드 인스턴스를 예약할 수 있는데, 이후 필요할 때마다 그 용량에 액세스할 수 있습니다.
시간 약정이 없기 때문에 언제든지 용량을 예약하거나 취소할 수 있습니다.
요금 할인은 없고, 용량 예약만을 위해서 사용됩니다.
그러므로 요금을 할인받으려면 리전 예약 인스턴스 혹은 Savings Plans와 결합해야 합니다.
인스턴스 실행 여부와 관계없이 온디맨드 요금이 청구됩니다. 따라서 용량을 예약하고 거기에 대해 비용을 지불하며
실행할 인스턴스는 당연히 사용 가능해야 합니다.
(실행하지 않더라도 요금은 부과될 것입니다)
그래서 특정한 AZ에 위치하는 단기의 연속적인 워크로드에 잘 맞습니다.
EC2 구매옵션 요약
리조트 예약을 예시로 요약을 하겠습니다.
On Demand (온디맨드 옵션) : 언제든지 리조트에 방문할 수 있고 원할 때 전체 요금을 지불한다.
Reserved (예약 옵션) : 아주 오랜 기간 리조트에 머무르기로 계획 (1년~3년) 아주 오래기간 머무르기에 할인율이 높다.
Savings Plan : 리조트에서 일정 금액을 지출하기로 하고 (예를 들어 12개월동안 매달 300달러) 시간에 따라 방을 맘대로 바꿀 수 있다.
Spot Instance : 리조트에서 제공하는 마감 할인 (빈 객실에 고객을 끌어오기 위함) 즉 호텔의 빈 객실에 대해 사람들이 가격을 입찰을 해서 아주크게 할인을 받을 수 있지만 누군가 객실비를 더 많이 지불하기로 하면 언제든 쫓겨날 수 있다.
Dedicated Hosts (전용 호스트) : 리조트 건물 전체를 예약해서 자신만의 하드웨어인 리조트를 가지게 된다
Capacity Reservations (용량 예약) : 객실을 예약하고 싶으나 숙박 여부는 확실하지 않을 때 사용되고 숙박 여부와 관계없이 전체 가격을 지불한다.
시험에 어떤 워크로드일때, 적합한 유형의 인스턴스를 선택하라고 나옴
EC2 공동 책임 모델
AWS는 모든 데이터 센터와 인프라에 관한 보안 책임이 있으며
또한, 여러분이 물리적 호스트와 분리된 상태인지 확인하는 책임이 있습니다. 예를 들면, 전용 호스트를 얻는 경우죠
또는 서버 장애로 결함 있는 하드웨어를 교체하거나 동의한 규정을 준수하고 있는지 확인해야 하는 책임이 있습니다.
하지만 여러분은 사용자로서 클라우드 내의 보안을 책임집니다
여러분이 자체 보안 그룹 규칙을 정의한다는 것입니다.
이는 EC2 인스턴스에 여러분 또는 다른 사람의 액세스를 허용하는 것입니다.
그리고 EC2 인스턴스 내부에 전체 가상 머신을 소유합니다.
이는 운영체제가 Windows나 Linux 임을 뜻하며 모든 패치와 업데이트를 AWS가 아니라 여러분이 해야 합니다.
AWS는 가상 머신만 제공하며 사용 방법은 여러분에게 달린 것이죠
이는 EC2 인스턴스에 모든 소프트웨어와 유틸리티가 설치되어 있다는 뜻이며 모두 여러분의 책임이라는 뜻입니다.
또한, IAM 역할의 할당 방법을 이해하고, 권한이 올바른지 확인해야 합니다.
인스턴스의 데이터가 안전한지 확인하는 것도 매우 중요한 책임입니다.
EC2 요약
우리는 EC2 인스턴스를 생성했고 운영체제를 정의하는 AMI(linux, mac, windows)로 구성했습니다.
그리고 CPU 성능과 RAM 용량을 정의하면서 인스턴스 크기를 정의했고, EC2 인스턴스에 관한 스토리지도 배웠습니다.
보안 그룹으로 인스턴스의 방화벽을 정의했고 마지막으로 EC2 인스턴스를 시작할 때 지정한 EC2 사용자 데이터인 부트스트랩 스크립트를 사용했습니다.
그래서 보안 그룹은 EC2 인스턴스에 연결됐고 인스턴스 외부의 방화벽이 됩니다.
EC2 인스턴스에 액세스할 수 있는 포트와 API도 정의할 수 있습니다.
EC2 사용자 데이터는 EC2 인스턴스를 웹 서버로 설정하는데 "Hello World"를 얻는데 사용했던 인스턴스의 첫 번째 시작 시 실행했던 스크립트입니다.

SSH는 컴퓨터에서 EC2 인스턴스로 터미널을 시작하여 22번 포트에서 명령을 내리는 방법이었습니다.
명령을 내리면 IAM 역할과 유사한 EC2 인스턴스 역할을 활용해 EC2 인스턴스가 IAM에 명령을 내릴 수 있었습니다.
EC2 구매 옵션에 관련해서는 시험에 대비해 알아야 할 많은 옵션이 있습니다.
온디맨드, 스팟이 있고 예약형에는 스탠다드와 전환형, 예약의 3가지 유형이 있습니다 전용 호스트와 전용 인스턴스도 있습니다.
'AWS > 자격증' 카테고리의 다른 글
AWS CCP 자격증 - 5 (ELB, ASG) (1) | 2024.07.03 |
---|---|
AWS CCP 자격증 - 4 (EBS) (0) | 2024.07.01 |
AWS CCP 자격증 - 2 (CLI) (0) | 2024.06.30 |
AWS CCP 자격증 - 1 (기본, IAM) (4) | 2024.06.16 |
AWS CCP - 퀴즈 (0) | 2024.06.14 |