[AWS] AWS 개념 및 인스턴스 생성 방법

san-sae·2025년 9월 8일
0

AWS

목록 보기
1/5

AWS 기초

AWS 사용자

  • AWS 사용자에는 루트 사용자와 IAM 사용자로 구분된다.
    • 루트 사용자: 계정을 처음 생성하여 만들어진 계정
      • 모든 권한을 가져 권한 제어가 불가능하여 AWS를 루트 계정으로 사용하는 것은 권장되지 않는다.
    • IAM 사용자: 루트 계정 아래에 생성할 수 있는 계정
      • 생성 시 권한이 따로 부여되어 있지 않음(추후 부여 받아 활동)
      • AWS 사용자 및 그룹을 만들어 AWS 서비스와 리소스에 대한 액세스를 다르게 설정할 수 있다.
      • AWS 계정을 혼자 사용하더라도 관리자 권한을 가진 IAM 사용자를 만들어서 사용

IAM 구성

  • 사용자: 실제 AWS를 사용하는 사람 혹은 애플리케이션
  • 그룹: 사용자를 편하게 관리를 하기 위해 묶어 권한을 부여
  • 역할: AWS 권한의 집합(특정 사용자나 그룹에 연결되어 있지 않음)
  • 정책: 사용자와 그룹이 무엇을 행사(역할)할 수 있는지에 대한 문서(JSON 형식으로 정의)
    • 정책을 한 번 정의하고 여러 사용자에 적용 가능하다.

AWS 이용 방법

  • AWS 이용 방법에는 웹 기반의 AWS 웹 콘솔과 CLI(명령줄 기반)이나 SDK를 이용하는 프로그래밍 액세스 방식으로 나뉜다. 각 방식에는 서로 다른 엑세스 자격 증명 방법이 있다.
  • AWS 웹 콘솔
    • Root Email/PasswordIAM 사용자 이름/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번 포트 \leftarrow 어떤 컴퓨터의 IP에서든 EC2의 22번 포트에 접근할 수 있다. 개발자ssh 명령어로 서버에 원격 접속할 수 있도록 열어둔다.
      • http, tcp, 80번 포트 \leftarrow 외부에서 들어오는 HTTP 요청(80번 포트 트래픽)을 EC2 인스턴스가 받을 수 있다. 백엔드 서버를 80번에서 실행하면, 불특정 다수(애플리케이션 사용자)들이 보내는 웹 트래픽이 EC2까지 도달할 수 있다.

        보안적으로

        • SSH는 가능하면 개발자 IP만 허용하도록 권장. 즉 소스 유형을 통해 변경하면 된다.
        • HTTP는 외부 사용자 모두에게 열어야 정상 작동된다. 즉, 소스 유형을 위치 무관으로 설정한다.

스토리지 구성

  • 컴퓨터는 전부 하드디스크를 가지고 있으며, 하드디스크는 컴퓨터에서 파일을 저장하는 공간이다.
  • EC2도 컴퓨터이기 때문에 여러 파일들을 저장할 저장공간이 필요하다. 이러한 저장공간을 EBS(Elastic Block Storage)라고 부른다. 즉, EC2에 부착되어 있는 일종의 하드디스크를 EBS라고 생각하면 된다.
  • EBS와 같은 저장공간을 스토리지, 볼륨이라고도 부른다.

EC2 생성 후

  • 위의 항목들을 설정한 후, 인스턴스 시작을 누르면 어느 정도 뒤에 [EC2 대시보드] > [인스턴스
    (실행 중)]이라는 곳을 들어가보면 아래와 같은 화면을 볼 수 있다. 실행 중이라고 뜰 때까지 약간의 시간이 소요될 수 있다.

    다른 리전으로 간다면?

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

참고

0개의 댓글