AWS

SSH란? 그리고 EC2 Instance Connect 사용과 EC2 인스턴스에 IAM 역할 적용하기, EC2 인스턴스 유형에 따른 추천 방향까지

S_N_Y 2024. 3. 17. 12:19

 

#0 SSH란?

클라우드에서 실행 시에 조금 까다로운 부분 중에 하나는 유지 보수나 조치를 취하려고 서버 내부와 연결할 때가 있는데 Linux, Mac, Windows 10버전 이상의 서버에서는 Secure Shell이라는 명령줄 인터페이스 도구로(SSH 프로토콜을 이용해) EC2 인스턴스에 연결하도록 한다.

혹은 EC2 Instance Connect로 웹 브라우저에서 쉽게 EC2 인스턴스에 접근이 가능한데 이 전에 내 블로그 글에 정리해둔게 있으니 참고하면 좋다👍

https://670811.tistory.com/47

 

EC2 인스턴스 생성하기, 윈도우로 SSH 실행하는 방법과 더 편한 방법

#0 EC2 인스턴스 생성하기 🏋️ 먼저 'EC2 -> 인스턴스 -> 인스턴스 생성'으로 들어가서 '이름 및 태그'에 원하는 인스턴스 이름을 적고 아래에는 아래의 이미지들 순서대로 자신의 타입에 맞게 설

670811.tistory.com

 

 

< EC2 Instance Connect를 이용하는 방법 + >

위의 글처럼 EC2 인스턴스를 선택한 뒤 연결을 누르면 아래와 같이 뜨는데

이런 방식으로 하면 SSH 키를 관리할 필요가 없다.

사용자 이름은 그대로 두기
설정한 뒤 연결하면 제대로 연결된 모습을 볼 수 있다.

 

#1 EC2 인스턴스를 위한 IAM role 사용해보기

들어가기 앞서 안 좋은 방법을 소개하겠다.

1. 리눅스로 aws iam list-users 명령을 실행하면, 자격 증명을 찾을 수 없으니 자격 증명을 위해 aws configure를 실행하라고 나오는 모습이다.

2. aws configure를 통해 자격 증명 및 액세스 ID, 비밀 액세스 키, 리전 이름도 입력할 수 있는데 이 방법은 매우매우매우 좋지 않은 방법이다. aws configure를 통해 이 EC2 인스턴스에 상세 개인 정보를 입력해두면 이 계졍 상의 누구라도 다시 EC2 Instance Connect를 통해 EC2 인스턴스에 접속을 해서 인스턴스에 입력된 자격 증명 정보를 가져가버릴 수가 있다.😦⛔

(이렇게 EC2 인스턴스에 IAM API키(액세스 키/비밀 액세스 키)를 입력하면 안 된다)

 

그러면 어떻게 안전하게 EC2 인스턴스에 대한 IAM role를 설정할까? ⬇️

해당 인스턴스 체크박스를 선택한 후 작업 - 보안 - IAM 역할 수정 클릭

들어가면 아래와 같이 나오는데

만들어두었던 역할을 선택해서 EC2에 부여하거나 새 IAM 역할을 여기서 생성해서 넣을 수 있다.

 

- 결과 ✅

해당 인스턴스 세부정보를 보면 역할이 부여된 것을 확인할 수 있다.

 EC2 Instance Connect에서도 aws iam list-users 명령어를 치면 아래와 같이 JSON형태로 만들어진 역할이 나오는 것을 확인할 수 있다.

 

#2 내 상황에 맞는 EC2 인스턴스 종류 추천😎👍

 

 - 온디멘드 EC2 인스턴스 :

사용한대로 지불, (Linux, Windows 사용하면 1분 뒤에 초 단위로 청구, 그 외의 운영체제는 1시간 단위 청구)

비용이 가장 많이 들지만 바로 지불할 금액 X, 장기적인 약정 X

=> 단기적이고 중단 없는 워크로드가 필요하고 애플리케이션의 움직임을 예측할 수 없을 때 사용하면 적절하다.

 

- 예약 EC2 인스턴스 :

온디멘드  EC2 인스턴스에 비해 굉장히 싸다

예약을 통해 인스턴스 타입, region, 테넨시, OS 등을 설정할 수 있다.

1년~3년을 지정해서 할인을 더 받을 수 있다.

=> 사용량이 일정한 애플리케이션(DB...)에 적절하다.

 

-  EC2 Savings Plans(절약 플랜) :

장기간 사용하면 할인 받을 수 있다.

다만 1년~3년동안 시간당 10달러 정도로 약정을 하게 되는데 사용량을 초과하면 절약 플랜이 온디멘드 가격으로 바뀌어 청구되니 주의해야 한다.

이걸 이용하게 되면 특정 인스턴스 패밀리와 region으로 고정되게 된다.

 

- 스팟 인스턴스 :

모든 인스턴스 유형 중에서 할인 폭이 가장 크다.

그러나 스팟 인스턴스에 대해 지불하려는 최대 가격을 정의하는데 그 용량을 넘어서면 인스턴스가 손실되어버린다😮

=> 가격면에서 가장 괜찮은 인스턴스이나 이런 면에서 회복력이 있다면 유용한 인스턴스이다.

이용 사례 : 배치(Batch) 작업, 데이터 분석, 이미지 처리, 모든 유형의 분산형 워크로드, 시작 시간과 종료 시간이 유연한(장애 복원력이 뛰어난) 워크로드에 유용하다

=> 중요한 작업이나 데이터베이스에는 매우 적절하지 않으니 주의⚠️

스팟 인스턴스가 일회성 요청을 하거나 영구 인스턴스 요청을 할 수 있다. 

 

- 전용 호스트(Dedicated Hosts) : EC2 인스턴스 용량이 있는 실제 물리적 서버를 받아 사용하는 것

온디멘드로 초당 비용을 지불하거나 1년~3년 계약 가능

물리적 서버를 예약하는거라 가장 비싼 옵션이긴 하다.

이용 사례 : BYOL인 경우나 규저이나 법규를 준수해야 하는 회사, 즉 라이선싱 모델과 함께 제공되는 소프트웨어인 경우 필요

 

- 전용 인스턴스(Dedicated Instance) : 우리의 전용 하드웨어에서 실행되는 인스턴스 (물리적 서버 X)

같은 계정에서 다른 인스턴스와 함께 하드웨어를 공유할 수 있다. (인스턴스 배치에 대한 통제권 X)

 

+) 전용 호스트와 전용 인스턴스의 차이점 :

전용 호스트는 물리적 서버 자체에 대한 접근권을 갖고 낮은 수준의 하드웨어에 대한 가시성을 제공해주는 반면,

전용 인스턴스는 자신만의 하드웨어를 갖는다.

 

- EC2 용량 예약(Capacity Reservations) :

원하는 기간 동안 특정한 AZ에서 온디멘드 인스턴스를 예약할 수 있다. => 필요할 때마다 그 용량에 접근 가능

기간 약정이 벗어 언제든 예약하고 취소 가능. 할인은 없다

(청구 할인을 받으려면 region별 예약 인스턴스나 saving plan과 결합해야 함)

=> 용량을 예약하는게 유일한 목적인 인스턴스 유형이다. - 실행 안해도 예약한 인스턴스라 예약 요금이 나감

=> 그래서 특정한 AZ에 있어야 하는 단기적이고 중단 없는 워크로드에 아주 적합니다.

 

#3 Spot Fleets - 스팟 인스턴스 세트를 정의하는 방법 (사용자가 지정한 기준에 따라 시작되는 스팟 인스턴스의 집합)

스팟 요청에서 설정 가능

비용을 절감할 수 있는 방법 중 하나로 스팟 인스턴스 세트 외에 온디멘스 인스턴스 세트에도 정의할 수 있다.

스팟 플릿(스팟 요청)은 우리가 정의한 제한 가격으로 목표 용량을 최대한 충족시키기 위해 일하는 탭이다.

스팟 플릿이 가장 적절한 런치 풀을 선택하고 예산이나 용량이 도달하면 인스턴스 시작을 중지시키는데 이걸 잘 활용해서 스팟 인스턴스를 할당하는 전략을 정의할 수 있다.

이런 식으로 원하는 정략 정의 가능

 

정의할 수 있는 전략 종류는 다음과 같다.

 

1. 최저가격(LowerPrice) : 가장 낮은 가격인 풀에서 인스턴스를 시작해서 비용에 대한 최적화를 할 수 있다.

=> 워크로드가 엄청 짧은 경우에 매우 좋은 옵션

2. 다양한 방법으로 스팟 인스턴스 실행(diversified) : 이 경우 스팟 인스턴스는 우리가 정의한 모든 풀에 분산된다.

=> 가용성과 긴 워크로드에 적합한 옵션

 

3,4번 참조 이미지

3. 용량 최적화(capacityOptimized) : 원하는 인스턴스 수에 맞는 최적의 용량을 가진 풀을 갖게 되는 것

4. 가격 용량 최적화(price capacityOptimized) : 가장 먼저 사용 가능한 것 중에 용량이 가장 큰 풀&가격이 가장 낮은 풀을 선택하는 전략

=> ⭐대부분의 워크로드에 가장 적합한 옵션이라 추천⭐

 

결국 어떤 전략을 선택하는지는내가 원하는 조건의 인스턴스 유형과 AZ를 정확하게 알고 있어야 한다는 점을 잘 인지해야 한다는 말을 언급하며 이번 글은 마치도록 하겠다!