AWS의 기초 개념 및 기초 실습

4 분 소요

AWS 기초 개념

주요 AWS Services

  • EC2 - 가상 서버
  • S3 - Object 스토리지
  • RDS - 관계형 데이터베이스
  • VPC - 가상 사설 네트워크
  • IAM - 사용자 인증 및 권한 관리

EC2

  • Elastic Cloud Compute
  • AWS의 가장 기본적인 자원 - 리눅스 서버, 윈도우 서버
  • 가상 머신 상에 OS가 설치되어 있는 형태

EC2 가격 정책

  • 온디맨드 가격 정책
  • 예약 인스턴스
    • 1년 또는 3년 단위로 계약
    • 조건에 따라 30% ~ 75% 요금 할인
  • 스팟 인스턴스
    • 경매방식으로 최대 90% 저렴하게 이용 가능
    • 입찰 가격을 정해 놓고 조건이 맞으면 인스턴스 사용
    • 인스턴스가 생성되지 않을 수 있으며 사용 중 중단 될 수 있음
    • 배치 처리 등 실시간이 아닌 기능에 사용

AMI

Amazon Machine Image

  • 가상 머신은 Image를 활용하여 생성
  • 이미지를 가상 서버에 적용하여 동일한 환경을 구성 가능
  • Os 별, 목적 별 다양한 AMI 제공

Security Group

  • EC2 인스턴스에 대한 보안 설정
  • EC2는 모든 Port가 막혀 있음(Default)
  • Inbound, Outbound에 대해 접속 허용 설정 가능
  • 접속 허용 할 Port, Source

Key Pair

  • EC2 인스턴스에 접속하기 위한 암호화 된 파일
  • 처음 사용 시 새로운 Key Pair 생성 해야 함
  • Mac : pem 사용 가능, Window: ppk로 변환 필요

인스턴스의 상태

  • EC2 인스턴스를 생성하면 실행 상태
  • 인스턴스를 중지 가능 -> 재실행 가능
  • 인스턴스 종료(Terminate) 하면 인스턴스가 삭제

Elastic IP

  • EC2 인스턴스는 Private IP와 Public IP를 보유
  • 기본적으로 할당되는 Public IP는 인스턴스 재실행 후에는 변경 됨
  • 영구적인 Public IP를 설정하려면 Elastic IP 사용
  • Elastic IP는 실행 중인 인스턴스에 연동하여 사용하면 무료
    • 생성 후 사용하지 않는 경우 비용 발생

AWS 실습

간단한 웹서버를 위해 리눅스 기반 서버를 만들어본다.

인스턴스 생성(Linux AMI)

  1. 로그인 후 EC2 서비스에 들어간다.

  2. 인스턴스 시작 버튼을 누른다.

    image-20210219170654804

  3. 우분투 서버 16.04 AMI를 선택한다.

    image-20210219171351518

  4. 프리티어(무료 사용)로 사용하기 위해 인스턴스 유형중 t2 micro 인스턴스를 선택한다. (가입 후 12개월동안 매월 750시간까지 무료, 인스턴스가 2개라면 375시간씩(n개의 인스턴스의 무료 시간 = 750/n시간))

    image-20210219171754787

  5. 인스턴스 세부 정보 구성에서는 프리티어로 사용 시 기본값으로 사용한다.

  6. 스토리지는 무료로 30GB까지 사용가능 하므로 필요에 맞게 선택한다. 또한 비용부담이 무서울 경우 인스턴스 종료시 EBS(Elastic Block Store) 삭제를 꼭 체크하도록 한다.

    image-20210219172457650

  7. 관리를 위한 태그를 추가한다.(현업에서 수십~수백개의 인스턴스 관리를 위해서 사용)

    대문자 N으로 시작하는 Name 태그를 작성시 값이 인스턴스 이름이 된다.

    image-20210219172802846

  8. 모든 곳에서 접속할 수 있는 서버를 만들 것이기 때문에 보안 그룹 설정의 소스는 0.0.0.0/0으로 놔둔다. 또한 기본으로 22번 포트만 열려있다.

    image-20210219173452135

  9. 검토 후 시작하기 버튼을 누르면 키패어 생성 창이 뜬다. 기존에 생성한 키패어가 없으므로 새 키패어 생성 후 다운로드 받고 시작한다.

    image-20210219173829098

  10. 조금만 기다리면 인스턴스에 관한 모든 정보를 볼 수 있는 페이지가 로딩된다. 약 1~2분후 상태검사가 초기화 -> 상태검사 통과가 되면 생성은 완료된다.

    image-20210219175521980

ps : Windows 인스턴스를 생성할 경우에도 위의 과정과 거의 같다.

다만, 보안 그룹 설정이 약간 다르다. 유형은 RDP에 포트 번호는 3389이다.

image-20210219225741512

Linux 인스턴스 접속(Windows 환경)

만들어진 인스턴스의 퍼블릭 IP로 접속을 하기 위해 필요한 프로그램들을 설치한다.

  • SSH(Secure Shell) 접속을 위한 프로그램
  • 키 패어 pem파일 -> ppk로 변환하기 위한 프로그램(For Windows user)
  1. mobaxterm 다운 (외부에 있는 서버에 접속하기 위한 프로그램, PuTTY를 사용할 줄 안다면 PuTTY를 사용해도 된다.)

  2. PuTTYgen 다운

    • 다운로드 페이지에서 폰트가 파란색인 puttygen.exe를 다운로드

    image-20210219180752740

  3. 키패어 파일을 변환하기 위해 puttygen을 실행하고 인스턴스를 시작하며 만든 키패어 파일을 로드한다.(파일형식을 모든파일로해야 pem파일이 보인다)

    image-20210219181113546

  4. save private key버튼을 눌러서 ppk파일을 저장한다.

    image-20210219181345322

  5. 인스턴스 접속을 위해 mobaxterm을 실행 후 Session을 누른다.

  6. SSH 프로토콜로 접속하기 위해 SSH를 누른다.

    image-20210219181646511

  7. Remote host 에는 인스턴스의 퍼블릭 ip를,

    Specify username에는 체크 후 ubuntu( AMI 마다 다르므로 aws 문서 참조),

    Advanced SSH settings탭 - Use private key를 체크 후 이전에 변환한 ppk 키패어 파일을 선택하고 OK를 누른다.

    image-20210219182202439

  8. 이러한 창이 뜨고 Welcome to Ubuntu 메시지가 보인다면 접속 완료!😆

    image-20210219182408408

    Elastic IP 설정

    인스턴스를 중지 후 재실행할 때마다 퍼블릭 ip의 주소가 바뀌게 되므로 영구적인 퍼블릭 ip를 갖기 위해 Elastic ip를 설정한다.

    1. AWS 관리화면의 좌측 사이드바 - 네트워크 및 보안 탭에서 탄력적 ip를 선택한다.

    2. 탄력적 ip 주소 할당 버튼을 누르고 다음 페이지에서 바로 할당을 누른다.

      image-20210219223943299

    3. 작업 - 탄력적 ip 주소 연결을 누르고 생성했던 인스턴스에 연결한다.

      image-20210219224128372

    4. mobaxterm에 생성된 세션에서 우클릭 - Edit Session 을 누른 후 Remote host를 인스턴스에 연결한 탄력적 ip로 수정한다.

      image-20210219224355616

Windows 인스턴스 접속(Windows 환경)

  1. Windows 인스턴스를 체크하고 연결버튼을 누른다.

    image-20210219230221147

  2. RDP 클라이언트를 선택하고 원격 데스크톱 파일(.RDP)을 다운받는다.

    image-20210219234940013

  3. 암호 가져오기를 누른 후 발급받은 키 패어 파일을 넣고 암호 해독을 누른다.

  4. 해독된 암호를 복사해서 저장해놓는다. (타인에게 공개 절대 금지)

  5. 취소를 누른 후 2. 에서 다운받은 RDP파일을 실행하고 4.의 암호를 입력한다.

    image-20210219235802364

  6. 연결을 누르면 완료!😆

    image-20210220000228429

EC2 Linux 인스턴스를 활용하여 Nginx 웹서버 세팅

Nginx란? 동시접속 처리에 특화된 웹 서버 프로그램으로, 가벼움과 높은 성능을 목표로 한다. 웹 서버, 리버스 프록시 및 메일 프록시 기능을 가진다. Apache보다 동작이 단순하고, 전달자 역할만 하기 때문에 동시접속 처리에 특화되어 있다.

  1. 기존에 설치되어 있는 패키지들을 업그레이드한다.

    sudo apt-get update
       
    sudo apt-get upgrade  [y]
    

    image-20210220003655287

  2. nginx를 설치한다.

     sudo apt-get install nginx
    
  3. 잘 설치되었는지 확인한다.

    ls /var/www/html
    

    image-20210220004253189

    nginx는 이러한 서버안에 저장되어 있는 html파일을 네트워크를 통해서 클라이언트에게 전달해주는 역할을 한다.

  4. nginx는 기본적으로 80포트를 쓴다. Elastic ip:80으로 접속해보자.

    image-20210220004437180

    접속이 되지 않는다.

    왜? 인스턴스를 생성할 때 보안그룹에서 기본적으로 22번 포트만 열어놓고 나머지 포트를 막아놨기 때문에!

  5. 포트 설정을 위해 해당 인스턴스의 보안 그룹에 들어간다.

    image-20210220004925865

  6. 인바운드(외부 -> 서버) 규칙 편집을 누르고 규칙을 추가한다.

    image-20210220005105487

  7. HTTP 유형의 위치무관으로 규칙을 추가한다.

    image-20210220005244363

  8. 그 후 4. 브라우저에서 새로고침을 누르면 우분투 nginx 서버에 있는 index.nginx-debian.html를 서버로 부터 전달받아 내용을 볼 수 있다.

    image-20210220005503228 - 우분투 서버에서 본 index.nginx-debian.html 파일의 내용↓

    image-20210220005850027

  9. 기존의 index.nginx-debian.html 파일을 지우고 vim을 이용하여 간단한 나만의 html을 만들어 테스트를 해본다.

    cd /var/www/html
    ls
    sudo rm -f index.nginx-debian.html
    ls
    sudo vi index.html
    

    image-20210220010612853

    image-20210220011218865

  10. 브라우저로 elastic ip:80 으로 접속해본다.

image-20210220011234441

잘 된다! 끝😆

댓글남기기