[AWS] AWS 개념 및 인스턴스 생성 방법
AWS 기초
AWS 사용자
- AWS 사용자에는 루트 사용자와 IAM 사용자로 구분된다.
- 루트 사용자: 계정을 처음 생성하여 만들어진 계정
- 모든 권한을 가져 권한 제어가 불가능하여 AWS를 루트 계정으로 사용하는 것은 권장되지 않는다.
- IAM 사용자: 루트 계정 아래에 생성할 수 있는 계정
- 생성 시 권한이 따로 부여되어 있지 않음(추후 부여 받아 활동)
- AWS 사용자 및 그룹을 만들어 AWS 서비스와 리소스에 대한 액세스를 다르게 설정할 수 있다.
- AWS 계정을 혼자 사용하더라도 관리자 권한을 가진 IAM 사용자를 만들어서 사용
IAM 구성
- 사용자: 실제 AWS를 사용하는 사람 혹은 애플리케이션
- 그룹: 사용자를 편하게 관리를 하기 위해 묶어 권한을 부여
- 역할: AWS 권한의 집합(특정 사용자나 그룹에 연결되어 있지 않음)
- 정책: 사용자와 그룹이 무엇을 행사(역할)할 수 있는지에 대한 문서(JSON 형식으로 정의)
- 정책을 한 번 정의하고 여러 사용자에 적용 가능하다.
AWS 이용 방법
- AWS 이용 방법에는 웹 기반의 AWS 웹 콘솔과 CLI(명령줄 기반)이나 SDK를 이용하는 프로그래밍 액세스 방식으로 나뉜다. 각 방식에는 서로 다른 엑세스 자격 증명 방법이 있다.
- AWS 웹 콘솔
- Root Email/Password와 IAM 사용자 이름/Password가 있으며, 다른 자격 증명에 대한 보안을 강화하기 위한 임시 비밀번호인
MFA
가 있다.
- 프로그래밍 액세스 방식
- AWS CLI 혹은 SDK를 사용하기 위해 Access Key를 이용한다.
- 하나의 IAM 사용자 당 2개의 Access Key Pair 발급 가능(하나를 폐지하기 위해 예비로 하나 발급한다.)
- Access Key는 Access Key Pair(Access Key ID와 Secret Access Key)로 구성
- Access Key ID: 유저 이름에 해당하는 키로 공개되어도 무방
- Secret Access Key: 패스워드에 해당하는 키로 공개되면 안됨(발급 시점 이외에 다시 확인 불가)
리전
EC2
는 컴퓨터를 빌려서 원격으로 접속해 사용하는 서비스이다. 즉 원격 서버라는 의미이다.
- 이러한 원격 서버는 물리적으로 존재하는데, AWS는 이러한 원격서버를 세계 곳곳에 분포를 시켜놓았기 때문에 리전을 통해 내가 어느 지역에 있는 컴퓨터를 빌릴 것이라고 미리 설정하는 것이다.
- 각 리전은 고유의 별칭을 가지고 있다.

- 추후 AWS CLI를 설치하여 확인하는 과정에서
aws configure
를 통해 리전을 설정한다.(Default region name [None]: ap-northeast-2
)
- ✅ 그렇다면 어떤 리전을 선택해야 할까?
- 사용자가 애플리케이션을 사용할 때 네트워크 통해 통신한다. 이 때 사용자 위치와 애플리케이션을 실행시키고 있는 컴퓨터(서버) 위치가 멀수록 속도가 느려진다.
- 애플리케이션의 주된 사용자 위치와 지리적으로 가까운 리전을 선택하는 것이 유리하다.
- 즉, 개발자가 아닌 사용자의 위치 기준으로 리전 선택한다.
- ⚠️ EC2를 생성한 리전과 다른 리전에 들어가는 경우
- 예를 들어 아시아 태평양(서울) 리전에 EC2를 생성해놓고, 실수로 미국 동부(버지니아 북부) 리전에 들어가서 생성한 EC2가 없어졌다고 당황한다.
- 리전마다 EC2가 따로따로 관리되고 있으니 유의!
⚠️ 리전을 변경할 수 없는 문제
- 상황: IAM 사용자에 대해 액세스 키를 CLI로 생성하고 나서는 웹 콘솔에서 리전을 변경할 수가 없었다. 생성한 인스턴스의 리전과 다른 리전으로 웹 콘솔에서 보면 인스턴스가 보이지 않을 수도 있다고 하여 계속 찾아봤다. 그러나 결국 CLI(나의 경우, git bash)에서 리전을 설정하기 때문에 큰 문제가 없는 것을 찾았다.
- 해결: CLI에서 리전만 설정해주면 된다.(
aws configure
명령어 통해)
EC2 생성 방법
이름
내가 만들려는 애플리케이션의 이름
+ -server
ex. instagram-server
애플리케이션 및 OS 이미지(Amazon Machine Image)
- OS를 의미
- 일반적으로 우분투를 많이 사용한다.
인스턴스
- 인스턴스: EC2에서 빌리는 컴퓨터 한 대(단위)
- 인스턴스 유형: 컴퓨터 사양
키 페어(로그인)
- 키페어: EC2 컴퓨터에 접근할 때 사용하는 비밀번호


- ✅ 어떤 인스턴스에 접근하기 위한 키 페어인지 알기 쉽도록 키페어 이름은 직관적으로 설정하는 것이 중요하다.
- ⚠️ 키 페어 생성 후 다운로드 받아지는 파일이 있는데, 유출되지 않도록 한다. 유출된다면 타인도 내가 빌린 EC2에 접근할 수 있음을 의미
- ex.
instagram-server-key-pair
보안 그룹
- 인스턴스에 접근해도 되는 요청인지에 보안 그룹이 검사한다.
- EC2 인스턴스 주위에 방화벽 역할을 할 보안 그룹을 만들고 보안 그룹에 규칙을 지정한다.
- 보안 규칙
- 인바운드 트래픽(외부에서 EC2 인스턴스로 보내는 트래픽)에서 어떤 트래픽만 허용할지 설정할 수 있고,
- 아웃바운드 트래픽(EC2 인스턴스에서 외부로 나가는 트래픽)에서 어떤 트래픽만 허용할 지 설정할 수 있다.
- 보안 그룹을 설정할 때는 허용할
IP
범위와 포트
(port)를 설정할 수 있다.(ex. 이 IP에 대해서만 요청받고 이 포트에 대해서만 요청을 받을 것입니다.)
- 보안 그룹 설정하는 방법
ssh
: 원격 접속하기 위한 경로
- EC2에 원격 접속하여 작업을 할 것이기 때문에 SSH를 이용할 것이다.
- 예시
ssh
, tcp, 22번 포트 ← 어떤 컴퓨터의 IP에서든 EC2의 22번 포트에 접근할 수 있다. 개발자가 ssh
명령어로 서버에 원격 접속할 수 있도록 열어둔다.
http
, tcp, 80번 포트 ← 외부에서 들어오는 HTTP 요청(80번 포트 트래픽)을 EC2 인스턴스가 받을 수 있다. 백엔드 서버를 80번에서 실행하면, 불특정 다수(애플리케이션 사용자)들이 보내는 웹 트래픽이 EC2까지 도달할 수 있다.
보안적으로

- SSH는 가능하면 개발자 IP만 허용하도록 권장. 즉 소스 유형을 통해 변경하면 된다.
- HTTP는 외부 사용자 모두에게 열어야 정상 작동된다. 즉, 소스 유형을 위치 무관으로 설정한다.
스토리지 구성
- 컴퓨터는 전부 하드디스크를 가지고 있으며, 하드디스크는 컴퓨터에서 파일을 저장하는 공간이다.
- EC2도 컴퓨터이기 때문에 여러 파일들을 저장할 저장공간이 필요하다. 이러한 저장공간을 EBS(Elastic Block Storage)라고 부른다. 즉, EC2에 부착되어 있는 일종의 하드디스크를 EBS라고 생각하면 된다.
- EBS와 같은 저장공간을 스토리지, 볼륨이라고도 부른다.
EC2 생성 후
- 위의 항목들을 설정한 후, 인스턴스 시작을 누르면 어느 정도 뒤에 [EC2 대시보드] > [인스턴스
(실행 중)]이라는 곳을 들어가보면 아래와 같은 화면을 볼 수 있다. 실행 중이라고 뜰 때까지 약간의 시간이 소요될 수 있다.

다른 리전으로 간다면?
- 현재 서울에서 인스턴스를 생성하였다.
- 만약 서울 이외의 리전으로 변경하고 인스턴스를 보면 아무것도 없는 것을 확인할 수 있다.

참고