AWS클라우드기반의 Django(1. AWS 환경설정)

min seung moon·2021년 5월 25일
0

1. AWS 기본 개념

01. AWS의 등장과 클라우드 컴퓨팅

  • 출연
    • 2006년 아마존에서는 클라우드 컴퓨팅 형태의 웹 서비스를 각 기업에 제공하기 시작
    • 기존 서버를 확장하기 위해서는 신규 서버를 구매하고 해당 서버를 IDC(Internet Date Center)에 입주시켜야 했기에 많은 비용과 오랜 시간이 투자해야만 했다
    • 이와 달리 클라우드 컴퓨팅은 미리 서비스 제공사에서 대량의 서버를 미리 보유하고, 해당 서버를 각 기업및 개인에게 제공하여 사용량과 기간에 따라 요금을 부과하는 형태로 구성
    • 그래서 서비스를 이용하고자 하는 고객은 간단한 절차만 거치면 즉시 서비스를 이용할 수 있고 사용하지 않는 서비스에 대한 불필요한 지출을 최소화할 수 있게 됨
  • 클라우드 컴퓨팅이란
    • 각각의 데이터베이스, 스토리지, 애플리케이션 등 IT 서비스를 이용하고자 할 때 필요한 성능이나 용량, 기간을 이터넷을 통하여 고객 주문형으로 제공되는 서비스
    • IT 인프라 자원을 이용하는 데 있어서 거대한 서버스를 직접 관리하는 번거로움을 줄이고 많은 시간을 투자하지 않아도 된다
    • 또한 사용사용하고자 하는 서비스를 필요한 만큼만 사용하고 그애 따른 비용이 청구되기 때문에 저비용(Low-cost) 및 유연하다(Flexible)는 특징을 가지고 있다
  • 클라우드 컴퓨팅 모델
    • Infrastructure as a Service (IaaS)
      • 기본적인 IT 인프라 자원에 대한 서비스로, 컴퓨터, 스토리지, 네트워크 등을 제공하는 서비스를 뜻한다
      • IaaS는 기존에 각 기업에서 보유 중인 IT 인프라 자원과 최대한 유사한 환경의 IT 인프라를 제공할 수 있도록 높은 순준의 유연성(Flexibility)과 관리제어(Management Control)를 서비스 한다
    • Platform as a Service(PaaS)
      • PaaS는 웹 애플리케이션 개발 및 관리에 집중할 수 있는 서비스로, 하드웨어 및 운영체제에 대해 별도 관리를 하지 않아도 된다
      • 즉 애플리케이션 가동과 관련한 여러 제반 자겅ㅂ에 대한 부담을 줄이고 효율적인 관리를 가능하게 한다
    • Software as a Service(SaaS)
      • SaaS는 고객에게 제공되는 애플리케이션, 즉 소프트웨어를 제공하는 서비스를 뜻한다
      • SaaS 개발 방법이나 구성 및 백업 방법등과 같은 IT 인프라 환경을 알지 않아도 되고 소프트웨어를 사용하는 것에만 초점을 둘 수 있다
  • AWS 서비스 이용 방법
    • AWS Management Console
      • 인터넷 상에서 사용자 UI에 맞는 관리 도구를 제공
      • 스마트폰을 통해서도 제공하는 서비스
    • AWS Command Line Interface(CLI)
      • AWS 서비스를 이용하기 위한 독자적인 플랫폼
      • 명령어 등의 스크립트를 사용하여 여러 AWS 서비스를 컨트롤
    • Software Development Kits
      • 프로그래밍 언어를 통한 개발을 수행할 때, AWS를 사용할 수 있도록 각각에 맞는 API를 제공
  • AWS에서 제공하는 서비스 유형
    • 컴퓨팅 서비스(Compute)
      • EC2등 서버 자원
    • 스토리지(Storage)
    • 데이터베이스(Database)
    • 마이그레이션(Migration)
      • 서버, DB 등 마이그레이션 도구
    • 네트워크(Networking and Content Delivery)
    • 개발도구(Developer Tools)
    • 관리 도구(Management Tools)
    • 보안 도구(Security, Identify, and Compliance)
    • 분석 도구(Analytics)
    • 인공지능(Artificial Intelligence)
    • 모바일 서비스(Mobile Service)
    • 애플리케이션 서비스(Application Service)
    • 메시징(Messaging)
    • 기업 생산성(Business Productivity)
    • 실시간 스트리밍(Desktop & App Streaming)
    • 사물 인터넷(Internet of Thins)
    • 게임 개발(Game Development)

02. 리전(Region)

  • 리전(Region)이란?
    • AWS는 전 세계를 대상으로 클라우드 컴퓨팅 서비스를 제공하고 있다
    • 여기서 짚고 넘어갈 부분은, 전 세계를 대상으로 서비스를 제공하기 위해서는 AWS의 서비스 제공 영역 또한 전 세계 각 지에 널리 분포되어 있어야 한다는 사실이다
    • AWS는 이러한 서비스를제공을 위한 영역을 리전(Region)이라는 명칭을 통해서 전 세계에 서비스를 제공하고 있으며, 리전은 물리적 지역별로 분포되어 있다
  • 리전 종류
    • 지리적 리전
      • 클라우드 컴퓨팅 서비스를 제공하는 지리적 위치별로 존재하는 데이터 센터
    • 로컬 리전
      • 지리적으로 넓은 범위로 서비스를 제공해야 할 때 애플리케이션을 복제해야 하는 고객을 위한 달일 데이터 센터
      • 다른 AWS 리전과 격리되어 운영
      • 현재 로컬 리전은 한 곳으로, 일본 오사카에 구성되어 있다
  • 리전 가용 영역(Availability Zone)
    • 하나의 리전에서 서비스를 제공할 때 내결함성, 확장성, 가용성 등을 향상시키기 위해서 서비스를 분산시키기 위한 영역
    • 가용 영역은 리전별로 각각 다르게 분포
  • 현재 AWS 리전은 총 19개(지리적 리전 18개, 로컬 리전 1개)와 55개 가용 영역을 운영
  • AWS 계정을 통해서 일반적으로 사용가능한 리전은 16게
  • 리전은 계정별로 종속되지 않고 한 계정에 여러 리전 서비스를 사용 가능하다
    • 서비스 진출 분야에 따라 리전을 결정하는 경우가 많다
  • 특정 서비스의 경우에는 특정 리전에서만 구축이 가능
    • EC2, VPC 등의 서비스는 모든 리전에서 서비스 이용이 가능
    • Alexa for Business, AWS IoT 등의 AWS에 특화된 일부 서비스의 경우는 리전별로 이용이 제한

03. AWS MANAGEMENT CONSOLE

  • AWS MANAGEMENT CONSOLE은 AWS의 서비스를 이용하고 관리하기 위한 인터페이스로, AWS MANAGEMENT CONSOLE 홈페이지에서 이용할 수 있다
  • PC, Mobile에서 사용 가능
    • PC, AWS MANAGEMENT CONSOLE 홈페이지
    • Mobile, AWS CONSOLE 앱을 다운로드
      • 모바일은 현재 사용중인 서비스에 대한 조회 및 관리를 할 수 있다

2. 가상 서버 - EC2 instance

01. EC2 instance 시작

  • EC2 instance란?
    • Amazone EC2(Elastic Compute Cloud)는 AWS의 가장 대표적인 서비스
    • 개발자가 클라우드 컴퓨팅 작업을 할 수 있도록 설계 된 서비스
    • EC2는 가상화된 서버를 하나의 인스턴스 형태로 제공
    • 컴퓨팅 요구사항에 맞게 용량을 조정할 수 있다
    • 리눅스, 윈도우즈 등 다양한 운영체제를 가지고 인스턴스를 가동
    • 이를 바탕으로 애플리케이션 개발 및 로드가 가능하며, 네트워크 권한 관리도 가능
    • 서버 인스턴스를 기본 단위로 하며, 리전에 따라 다수의 EC2 인스턴스를 생성
    • EC2 인스턴스 생성을 위해서는 AWS Management Console을 통해서 생성

-1. EC2 인스턴스 시작하기


  • 초기화면으로 EC2 대시보드를 통해서 현재 운영중인 EC2 인스턴스 및 서비스에 대한 상태를 조회할 수 있고, 인스턴스, 이미지, 네트워크, 로드밸런싱, Auto Scaling 등의 리소스 별 상태도 관리할 수 있다
  • 시작하기 앞서 현재 AWS Management COnsole상의 리전부터 확인
    • 우측 상단과 같이 '서울' 리전이 현재 EC2의 리전을 나타내며, 리전 변경을 원할 경우에는 해당 부분을 클릭하여 즉시 변경 가능
    • 리전 확인 후 가운데 '인스턴스 시작' 클릭하여 생성

-2. EC2 인스턴스 생성 절차

  • 1단계 : AMI(Amazone Machine Image) 선택

    • AMI는 운영체제, 애플리케이션 서버, 애플리케이션이 포함된 서버 템플릿으로, 담으과 같이 여러 다양한 서버 템플릿을 선택할 수 있다
    • AMI는 리눅스, 윈도우즈 서버군을 포함하고 있다
    • 리눅스의 경우 Amazon 사에서 AWS에 특화된 형태로 개발된 Amazon Linux를 포함하여 모든 리눅스 제품군을 선택할 수 있으며, 윈도우즈의 경우에도 윈도우즈 서버를 제공
    • 사진에서 빠른시작, 나의 AMI, AMS Marketplace, 커뮤니티 AMI 탭을 통해서 AMI를 선택할 수 있도록 하였다
    • '빠른시작'은 서버를 처음 구축하거나 서버 구축에 익숙하지 않은 분들을 위해 범용적으로 제공하는 서버 환경
    • '나의 AMI'는 이미 구축했던 서버 환경을 복제해서 또 다른 EC2 인스턴스를 생성할 때에 사용되는 탭
    • 'AWS Market Place', '커뮤니티 AMI'는 각 OS별로 전문화된 애플리케이션 서버 환경 및 다른 사용자들이 개별적으로 구축한 환경을 제공하는 서비스로, 이 부분은 서버 구축에 전문성을 가진 사용자들이 주로 선택하는 AMI이다
    • 기업 내 서버 환경(On-Premise)을 마이그레이션(Migration)하거나 특정 서버에 대한 전문 지식을 보유한 경우라면 특정 서버를 선택하는 것이 좋지만, 서버 구축에 대한 전문 지식이 부족하거나 신규 서버를 구축할 때에는 범용성이 뛰어난 서버를 선택하는 것이 효율적이다
  • 2단계 : 인스턴스 유형 선택

    • 인스턴스 유형에서는 CPU, 메모리, 스토리지, 최적화 및 네트워크 성능 사양을 정할 수 있다
    • 프리 티어 사용자는 t2.micro를 선택하면 1년 동안 주어진 용량 내에서 무료로 사용할 수 있다
    • 인스턴스 유형은 어떤것을 선택하더라도 애플리케이션 서버를 구축하는 것에는 전혀 영향이 없으므로 사용자들이 원하는 유형을 선택하면 된다
  • 3단계 : 인스턴스 세부 정보 구성

    • 3단계는 인스턴스 생성을 위한 세부 정보를 입력하는 부분으로, 인스턴스 개수 및 네트워크, 계정 보안 등을 설정할 수 있다
    • EC2 인스턴스는 다중 인스턴스를 생성하거나 여러 가용 영역 등을 직접 지정하여 변경이 가능하지만, 이 단계에서는 기본 항목만으로도 EC2 인스턴스를 생성할 수 있다
    • 여기에서는 기본값을 유지한 상태로 다음 항목으로 이동
  • 4 단계 : 스토리지 추가

    • 스토리지의 용량 및 유형, 개수를 지정하는 부분
    • 프리 티어는 최대 30GB의 EBS 범용(SSD) 규격의 스토리지 사용이 가능하므로 프리티어 사용자는 이 점을 참고해서 스토리지의 규격을 설정하면 된다
    • 여기에서는 기본 값인 8GB 사용
  • 5 단계 : 태그 추가

    • 태그 추가는 EC2 인스턴스 내 메타데이터를 관리하기 위한 고유 명칭을 지정하는 부분이다
    • 임의의 값을 지정할 수 있으며, 지정하지 않아도 EC2 인스턴스 생성에는 문제 없다
  • 6 단계 : 보안 그룹 구성

    • 보안 그룹은 EC2 인스턴스에 대한 트래픽을 제어하는 방화벽을 뜻 한다
    • 보안 그룹을 특정 PC나 네트워크 대역별로 허용하거나 차단할 보안 유형을 지정할 수 있으며, 기존에 동일한 보안 그룹이 있을 경우 기존 유형을 선택할 수 있다
    • 반면 동일한 보안 그룹이 없을 경우에는 신규 보안 그룹을 동시에 생성한다
    • 보안 그룹은 EC2 인스턴스 생성 이후에도 추가 및 변경이 가능하므로 여기서에서는 기본 값을 유지한 다음 단계로 이동
  • 7 단계 : 인스턴스 시작 검토

    • 앞서 1단계부터 6단계까지 지정했던 설정을 다시 보여주는 부분으로, 이사잉 있을 경우 전 단계로 이동하여 수정할 수 있다
    • 재검토가 모두 완료될 경우 '시작'을 눌러서 이동

-3. EC2 인스턴스 키 페어 선택 및 생성

  • 키 페어는 SSH를 비롯하여 EC2 인스턴스에 접속할 때 사용되는 보안 키를 뜻한다
  • 예로 국내 은행 서비스를 이용 시 사용되는 공인인증서와 비슷한 개념
  • 다른 EC2 인스턴스에서 사용중인 키 페어를 동일하게 사용할 수도 있고 신규로 키 페어를 만들어서 사용할 수 있다
  • 신규로 키 페어를 생성할 경우에는 pem 확장자의 키 페어 파일을 생성하고 다운로드 경로를 제공하며, 다운로드가 완료될 경우에만 인스턴스를 시작한다
  • 다운로드된 pem 파일은 보안 유지를 위해서 관리가 잘 되어야하며, 두 번 이상 다운로드 할 수 없기 때무에 신중한 파일 보관이 필요

-4. EC2 인스턴스 생성

  • 서버 생성이 완료돤 경우 즉시 서버가 생성되어 사용자에게 제공되며, '인스턴스 보기'ㄹ,ㄹ 통하여 현재 생성된 서버의 관리 및 모니터링이 가능하다
  • EC2 인스턴스 생성이 완료되면 대시보드가 나타나며, 방금 생성된 인스턴스의 명칭 및 상태를 확인할 수있다
  • 향후에도 AWS Management Console에 접속해서 EC2를 선택한 후 실행 중인 인스턴스를 선택하면 사진 형태의 인스턴스의 상태를 조회할 수 있다


02. EC2 Instance 연결하기

  • https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/putty.html
  • EC2 Instance
    • 하나의 웹 애플리케이션을 구축하기 위해서는 애플리케이션 구축을 위한 환경구축이 선행되어야 한다
    • EC2 인스턴스는 AWS에서 제공하는 가상화 서버로, AWS에서 웹 애플리케이션을 구축하기 위한 환경을 제공한다
  • EC2 인스턴스 연결을 위한 운영체제
    • EC2 인스턴스 연결을 위해서는 먼저 운영체제가 무엇인지를 확인하고 접속 단말의 운영체제 및 사용 용도를 확인한다
    • EC2 인스턴스의 운영체제는 리눅스 기반 운영체제 및 윈도우즈 서버가 있다
    • 이번에 우분투를 선택하였기에 리눅스 운영체제의 EC2 인스턴스를 연결하는 것으로 한다
  • 리눅스 운영체제
    • 리눅스 운영체제의 EC2 인스턴스를 연결하기 위해서는 연결 용도가 무엇인지를 멈ㄴ저 결정해야 한다
    • 연결 용도는 매우 다양하지만, 엡 애플리케이션 구축을 위한 연결 형태는 다음과 같다
      • 터미널 환경에서의 서버 연결
      • 파일 전송을 위한 연결
      • 프로그램 개발 도구 사용을 위한 원격 연결
  • 대표적인 EC2 인스턴스 연결 형태
    • 서버 환경 설정을 위한 연결
    • 시스템 구축하기 위해서는 프로그램 개발이 선행되어야 하고, 프로그램을 개발하기 위해서는 해당 프로그램이 가동되는 서버 구축이 선행되어야 한다
    • 그리고 이러한 서버 구축을 위해서는 EC2 인스턴스 연결을 통해서 세부 환경을 구축할 수 있어야 한다

-1. 터미널 환경에서의 서버 연결

  • 터미널 환경에서의 서버 연결

    • 일반적인 서버 연결 형태로, 기본 연결 형태는 SSH를 사용한다
    • 이에 따라 서버 연결을 위해서는 먼저 EC2 인스턴스의 접속 주소를 알아야 하고, SSH 포트에 대한 외부 접속이 허용되어 있는가를 확인해야 한다.
  • 1. AWS Management Console 확인

    • 서버 주소는 AWS Console에서 EC2 인스턴스를 생성했으면 바로 확인할 수 있다
    • EC2 대시보드에서 인스턴스의 퍼블릭 DNS(IPv4) 주소가 도메인 주소이며, 서버 연결 역시 해당 주소로 연결하면 된다
    • 단! 서버 주소 확인 시에는 한 가지 주의해야 할 사항이 있다.
      • EC2 인스턴스는 AWS에서 가상 서버 개념으로 사용자에게 인스턴스를 분배하는데, 이는 임의의 IP 주소 및 도메인을 할당하는 방식이다
      • 그래서 서버가 가동 중일 때에는 해당 IP 주소가 유지되지만, 서버를 종료한 후 다시 부팅할 경우에는 IP 주소 및 도메인 주소가 변경된다
      • 그러므로 서버 접속 시에는 해당 사항에 유의하여 접속
    • 다음은 SSH 포트에 대한 외부 접속 허용 여부 확인
      • EC2 인스턴스는 각 인스턴스별로 보안 그룹을 각지고 잇으며, 보안 설정 역시 보안 그룹을 단위로 이루어진다.
      • 앞서 생성했던 EC2 인스턴스에서 보안 그룹을 구성하였으며, SSH에 대해서는 외부 접속을 허용하였다
      • 그래서 SSH를 통한 적속은 가능하지만, 이의 확인 또는 변경을 위해서는 AWS Console에서 다음 작업을 수행한다
        1. EC2 대시보드에서 보안 그룹 및 인바운드 확인

    • 이미 EC2 안수톤수 샹송 사 보안 그룹을 생성했고 SSH에 대한 접근 권한도 부여해서, SSH 역시 생성된 것으로 확인
      • 하지만 추후에 해당 권한을 필요로 하지 않을 경우에는 AWS Console에서 해당 권한을 편집하여 제거하거나 변경할 수 있다
    • 서버 연결을 위해서 EC2 인스턴스의 서버 도메인 주소 및 SSH 포트 외부 적속 허용 여부까지 완료하였다
      • 하지만 이것만으로 EC2 인스턴스 접속을 위한 모든 준비를 마친 상태는 아니다
      • AWS는 단순히 SSH만으로는 연결이 불가능하며, 앞서 생성한 접속 인증 키 페어를 사용해야만 접속이 가능하다
      • 터미널 환경에서의 서버 연결 역시 해당 키 페어 파일은 반드시 가지고 있어야 한다
    • 터미널 환경에서의 EC2 인스턴스 연결은 전용 클라이언트 프로그램을 사용하여 연결이 이루어지며, 이번에는 Putty를 사용하여 연결해 볼 것이다
  • 2. SSH 클라이언트를 사용한 연결

    • SSH 클라이언트는 리눅스 운영체제에 일반적으로 설치가 되어 있는 프로그램 중 하나이다
    • 즉! SSH를 사용한 연결은 리눅스 운영체제에서 EC2 인스턴스에 연결하는데 일반적으로 사용하는 방법으로 볼 수 있다
    • EC2 인스턴스 연결을 위해서는 먼저 키 페어 파일에 대한 권한 설정 한 후 SSH로 연결한다
      • 또한 키 페어 파일 권한은 파일이 함부로 수정되는 일이 없어야 하므로 사용자만 읽을 수 있도록 설정한다
    • SSH 클라이언트를 사용한 EC2 연결 순서는 다음과 같다
      • 키 페어 파일의 권한을 사용자만 읽을 수 있는 권한으로 설정
      chmod 400 books.pem
      • SSH 명령어를 사용하여 EC2 인스턴스에 연결
      ssh -i "books.pem" ubuntu@.....amazonaws.com
    • 주의사항
      • 위 순서에서 키 페어 파일의 권한은 반드시 사용자만 읽기 가능한 권한(400)을 사용해야 한다
      • 그 이유는 키 페어 파일 권한을 다르게 할 경우에는 EC2 인스턴스 인증 시 AWS에서 접속을 거부하기 깨문이다
      • 만약에 권한을 일반적인 권한(644)으로 부여했을 경우에는 접속을 거부하므로 참고하도록 한다
  • 3. Putty를 사용한 연결

    • Putty는 무료 SSH 클라이언트 프로그램으로, 윈도우즈에서 일반적으로 사용하는 SSH 클라이언트 프로그램이다(리눅스에서도 사용은 가능 하지만 리눅스는 더욱 간편한 SSH 연결 프로그램이 내장되어 있다)
    • Puttygen을 사용한 신규 키 페어 파일 생성






-2. 파일 전송을 위한 연결

  • 터미널 환경에서의 EC2 인스턴스 연결은 서버 환경 설정을 위한 대부분의 작업을 할 수 있다지만 경우에 다라서는 특정 파일을 전송해야 하는 경우도 있다
    • 이 때 파일 전송 클라이언트 사용하면 해당 작업을 원활히 수행할 수 있다
  • 파일 전송은 일반적으로 FTP 프로토콜을 사용하지만 EC2 인스턴스 연결은 FTP 프로토콜이 아닌 SCP(Secure Copy Protocol)를 사용한다
    • SCP는 리눅스 운영체제에서는 SCP 클라이언트를 사용하며, 윈도우즈 운영체제에서는 WinSCP 클라이언트를 사용하여 접속할 수 있다
  • WinSCP 사용

-3. 프로그램 개발 도구 사용을 위한 원격 연결

  • 웹 애플리케이션 구축을 위해서 프로그램 개발은 반듯기 필요하다
    • 하지만 지금까지 소개된 터미널 클라이언트를 사용한 연결이나 파일 전송을 통한 EC2 인스턴스 연결만으로는 프로그램을 개발하고 이를 배포하는 데 어려움이 있다
    • 그렇기 때문에 IDE 도구 또는 소스 코드 개발 도구를 사용해서 프로그램을 개발하고, 원격 접속을 통해서 이를 실시간으로 반영할 수 있어햐 한다
  • EC2 인스턴스 접속은 키 페어 파일을 필요로 하기 때문에, 프로그램 개발 도구 역시 SSH 기반의 키 페어 파일을 사용하는 기능이 포함되어 있어야 한다
    • 현재는 다양한 기능을 지원하는 프로그램 개발 도구가 다수 존재하기 때문에 SSH 키 페어 파일 지원이 가능한 개발 도구라면 사용하는 데에는 문제가 없다
    • 그 중에서도 대표적으로 사용되는 개발도구를 예로 들도록 한다
  • 이번에는 Python 언어 기반 Django 웹 어플리케이션 구축을 목적으로 하므로 Python 개발 도구를 중심으로 다루도록 한다
    • 텍스트 에디터 그리고 이클립스를 예제로 소개하고자 한다(개인적으로 vscode도)
    • 키 페어 파일을 지원하는 클라이언트라면 동일 방식으로 가능
  • EditPlus
    • EditPlus는 대표적인 프로그래밍 소스 코드 입력을 위한 윈도우용 문서 편집기 프로그램이다
    • 단! 쉐어웨어라는 점에서 무료로는 30일 평가판만 이용이 가능하며, 정식 버전을 위해서는 구매를 별도로 진행해야 하는 담점이 있다
    • EditPlus는 'FTP 설정'메뉴를 통해서 원격 서버에 접속할 수 있다
    • 실제 접속은 FTP 프로토콜이 아닌 SSH 프로토콜을 사용하여 접속하는 방식으로 되어 있으며, 접속은 다음과 같이 진행


    • Pageant 실행
      • 키 페어 파일을 사용하기 위해서는 Pageant를 사용해야 한다
      • Pageant는 Putty 설치 시 같이 설치되며, Putty외 다른 프로그램에서 SSH 키 페어 파일을 사용하기 위해서 키 페어 파일을 로드하는 프로그램이다






  • Eclipse
    • Eclipse는 대표적인 프로그래밍 IDE Tool이다
    • Eclipse에서는 Java를 포함한 다양한 프로그래밍 언어를 사용할 수 있으며, EditPlus와 같이 단순한 소스 코드만 개발하는 프로그램이 아닌 대형 프로젝트 단위의 개발도 가능하다
    • 또한 Eclipse는 무료로 사용할 수 있으며, 수많은 플로그인과의 연동을 통해서 추가 확장성까지도 유효하게 제공하고 있다
    • Eclipse는 버전마다 지원하는 플러그인이 다르므로 Remote System Explorer(RSE)를 제공하는지 확인이 필요
    • 버전에 맞는 플러그인 선택



    • 다운 시간에 따라 늦게 알림창이 뜰 수 있어요!












  • Visual Studio Code
    • 제 생각에는 가장 많이 사용되기도 하고 제가 주로 사용하여 개인적으로 올립니다!
    • F1, Ctrl + Shift + P로 커맨드 창에서 "Remote-SSH:Open Configuration File ..." 선택해서 ssh config 파일을 열고 내용을 추가



    • 제가 이미 연결을 해서 운영체제는 Linux로 선택해주세요!

03. EC2 Instance 설정 및 관리(AWS Management Console)

  • EC2 인스턴스 환경 설정 방법
    • 1. AWS Management Console
      • GUI 환경에서 설정하는 방법
    • 2. AWS CLI(Command Line Interface)
      • 커멘드 창에서의 명령어를 통해서 설정하는 방법
  • 1. 대시보드 조회
    • EC2 인스턴스 생성 후 대시보드를 보면 다음 현황이 조회된다
    • 여기에서 생성된 EC2 인스턴스는 1개지만, 단순히 인스턴스만 생성된 것이 아니라 볼륨, 키 페어 및 보안 그룹도 동시에 생성되었다
    • 볼륨은 EC2 인스턴스 생성 시 동시에 생성했던 스토리지의 볼륨을 나타내는 것
    • 키 페어는 EC2 인스턴스 연결을 위해 생성했던 키 페어
    • 보안 그룹은 2개가 나오는데, 이는 인스턴스 생성 시 네트워크(VPC:Virtual Private Cloud)에 대한 보안 그룹과 EC2 인스턴스에 대한 보안 그룹으로 구성되어 있다
  • 2. 인스턴스 상태 조회
    • 먼저 인스턴스를 누르면 인스턴스에 대한 상태를 조회할 수 있다
    • 여기에서는 인스턴스 유형, 가용 영역, 현재 상태, 보안 그룹, 도메인 주소(IPv4), IP 주소 등 EC2인스턴스의 상태 및 구성을 조회한다
    • 현재 보유 즁인 EC2 인스턴스에 대한 특정 작업을 수행하기 위해서는 작업을 수행할 EC2 인스턴스를 먼저 선택한다
    • 그 다음 '작업'을 눌러서 다음과 같이 상태 설정 등의 작업을 수행한다
    • 아래 사진에서는 현재 실행 중인 EC2 인스턴스에 대한 상태를 변경할 때 다루는 화면이다 '중지''재부팅'은 가상 서버의 전원을 내리거나 재부팅할 때 사용되는 메뉴이며, '종료'는 서버 자체를 더 이상 운영하지 않고 삭제가 필요할 때 사용하는 메뉴이다
    • 다음으로 '볼륨'을 누르면 EC2 인스턴스가 사용되는 스토리지를 간단히 조회할 수 있으며, 크기, 볼륨 유형 및 스냅샷 등에 대한 정보를 볼 수 있다.
    • 현재 보유 중인 EC2 인스턴스의 볼륨 관련 작업을 수행하기 위해서는 역시 해당 볼룸 선택 후 '작업'을 눌러서 수행한다
    • 볼룸 작업은 사진과 같이 볼륨 이름 및 용량 수정, 분리 등의 작업을 수행할 수 있다
  • 3. 보안 그룹 설정
    • 보안 그룹은 EC2 인스턴스가 사용되는 네트워크(VPC)에 대한 보안 그룹EC2 인스턴스의 보안 그룹 2개가 있다
    • 보안 그룹은 대부분 EC2 인스턴스 한 개당 하나의 보안 그룹을가지고 있다
      • 그러나 여러 EC2 인스턴스가 같은 네트워크에 위치해 있으며, 같은 보안 규칙을 사용할 경우에는 1개의 보안 그룹에 여러 EC2 인스턴스를 연결할 수 있다
    • 보안 그룹은 보안 그룹이 속한 네트워크(VPC) 및 그룹 이름, 설명 등의 정보를 조회할 수 있으며, 각 네트워크에 대한 인바운드/아웃바운드 규칙을 설정할 수 있다
    • '인바운드'는 외부에서 내부로 접속을 요청할 때 사용되는 보안 규칙이다
      • 유형, 프로토콜, 포트범위, 소스 등을 나타내며, 초기에 EC2 인스턴스 생성 시 SSH에 대한 접근 권한만 허용할 경우 아래 사진과 깉이 SSH에 대한 접근 권한만 표시된다
      • 보안 그룹의 인바운드는 기본적으로 모든 외부로부터의 접속을 차단하게 되어 있으나, 특정 포트 및 특정 IP에 대한접속을 허용할 경우에는 아래 사진과 같이 항목을 입력함으로써 접속을 허용한다
    • '아웃바운드'는 반대로 보안 규칙을 사용하는 EC2 ㅇ인스턴스 내부에서 외부로의 접속을 요청할 때 사용되는 규칙이다
      • 기본값은 모든 트래픽 모든 IP 주소(0.0.0.0/0)에 대한 외부 접속을 허용한다
      • 사진은 모든 트래픽/프로토콜/범위/주소에 대한 접속을 허용을 위한 규칙을 나타낸다
    • EC2 인스턴스에 연결된 보안 그룹에 대한 작업을 수행하기 위해서는 '작업'을 눌러서 나오는 메뉴를 수행한다
      • 인바운드 및 아웃바운드 규칙은 각 탭에서 편집이 가능하기 때문에 보안 그룹을 삭제하거나 새로 복사할 경우에 작업을 수행할 수 있다
  • 그 외에도 로드 밸런싱, Auto Scaling에 대한 설정도 조회 및 작업을 수행할 수 있다
    • 로드 밸런싱, Auto Scaling은 EC2 인스턴스를 모니터링하고 사용량을 자동으로 조절한다

3. 관계형 데이터베이스 - RDS

01. RDS 소개 및 시작하기

  • Amazon RDS(Relational Database Service)는 AWS 환경에서 관계형 데이터베이스를 설정 및 운영 할 수 있는 서비스이다
    • RDS는 범용적으로 사용되는 MySQL, SQL 서버, Oracle, Post-greSQL, MariaDB 등을 선택해서 사용할 수 있으며, MySQL 및 PostgreSQL과 호환되며 Amazon 클라우드에 최적화된 DB인 Amazon Aurora도 제공하고 있다
    • RDS는 다른 AWS 환경과 마찬가지로 사용 비용에 따라 그에 맞는 용량을 제공하고 있으며, 빠른 성능, 고가용성 및 보안 제공을 지원하고 있다

-1. DB인스턴스 시작하기

  • RDS를 시작하기 위해서는 서비스 목록의 데이터베이스에서 선택하거나 서비스 검색을 RDS로 입력하고 선택

  • RDS 역시 EC2 인스턴스와 동일하게 먼저 현재 AWS Management Console 상의 리전부터 확인
  • 리전 확인 후 가운데 '데이터베이스 생성' 클릭
  • 1. 엔진 선택
    • 엔진은 크게 Amazone Aurora, MySQL, MariaDB, PostgreSQL, Oracle, MS SQL 서버를 제공하며, DB 엔진을 선택한 다음에 '다음 단계'로 이동
    • Amazon Aurora 역시 PostgreSQL과 MySQL이 호환되는 DB 엔진으로, AWS에 최적화가 되어 있고 MySQL 보다도 더욱 뛰어난 성능을 한다
      • 하지만 프리 티어에서는 Amazon Aurora를 사용할 수 없다
      • 엔진 선택 시 하단의 'RDS 프리티어 적용되는 옵션만 사용'을 체크하면 Amazon Aurora가 비활성화되고 관련된 메시지가 추가로 나타나는 것을 확인할 수 있다
  • 2. DB 세부 정보 지정
    • DB 생성을 위한 인스턴스 하양 및 설절을 입력하는 부분
      • 인스턴스 사양에서는 라이선스 모델, DB 엔진 버전, DB 인스턴스 용량 및 성능을 지정할 수 있고, 설정에서는 DB 식별자, 계정 이름, 비밀번호를 입력할 수 있다
    • MySQL의 라이선스는 GPL(General Public License) 한 가지만 선택할 수 있으므로 GPL을 그대로 유지하고, DB 엔진 버전은 MySQL 5.7 또는 MySQL 8.0 버전으로 선택
    • 프리티어를 선택하면 DB 인스턴스 및 스토리지는 t2.micro(1 CPU, 1GB RAM), 20 GB 용량으로 제한되므로 해당 부분을 그대로 둔다
      • 다중 AZ는 가용 영역(Availability Zone)이 여러 개일 경우 다른 가용 영역에 복제 본을 생성하고 백업을 용이하게 할 것인지를 물어보는 부분이다
      • 아래 사진에서는 별도의 가용 영역을 설정하지 않았기 때문에 비활성화되어 있지만, 만약 여러 개의 가용 영역을 설정하였다면 해당 항목을 선택할 수 있다
  • 설정은 DB 생성 시 일반적으로 사용되는 정보로, DB 인스턴스 식별자 및 사용자 이름, 암호를 입력한다
    • DB 인스턴스 식별자는 DB 인스턴스의 명칭을 입력하고, 마스터 사용자 이름 및 암호는 DB 인스턴스 접속 시 필요한 계정이므로 반드시 상기하고 있어야 한다

  • 3. 고급 설정 구성
    • 네트워크, 보안, 백업, 유형 등 다양한 고급 설정을 구성하는 부분
    • 가장 먼저 나오는 부분은 VPC 네트워크 구성과 관련된 설정이다
      • '퍼블릭 액세스 가능성' 부분은 DB 접속을 외부에서 수행할 것인지, 내부에서 수행할 것인지를 나타내는 부분이다
      • '아니오'로 선택되어 있다면, RDS 인스턴스에 지정된 VPC 내에서 DB 접속이 가능한 반면 외부 네트워크에서 DB를 접속 할 수 없다
      • '예'로 선택되어 있다면, RDS 인스턴스에 지정된 VPC 외의 외부 네트워크를 통해서 접속할 수 있다
    • VPC 보안 그룹은 EC2 인스턴스 생성에 따른 보안 그룹과 같은 개념으로, RDS에 대한 인바운드 아웃바운드 규칙 등을 설정할 수 있다
      • 여기에서는 기존에 생성된 RDS 및 보안 규칙이 없는 관계로 '새로운 VPC 보안 그룹 만들기'를 선택
    • 데이터베이스 옵션은 첫 번째 DB 이름 및 접속 포트, 파라미터 그룹, IAM DB 인증을 설정한다
      • 첫 번째 DB 이름을 입력하지 않더라도 데이터베이스 생성 후 특정 이름의 DB를 생성할 수 있으므로, 선택적으로 입력할 수 있다
      • 파라미터 그룹은 MySQL 환경 설정에 사용되는 파라미터 그룹을 나타내는 것으로, 파라미터 그룹을 생성하면 AWS Console를 통해서 해당 DB에 대한 파라미터를 설정한다
      • IAM DB는 DB 접속 시 추가 인증 정보 설정 여부를 나타내는 것으로, IAM부분에서 자세히 다룬다
    • 암호화 부분은 DB엔진에 따라 설정할 수 있으나, MySQL에서는 암호화를 지원하지 않으므로 생략
    • 백업은 RDS에 대한 자동 백업을 설정하는 부분이고, 확장 모니터링은 CPU, 메모리 등 50개 이상의 측정치 정보를 얻는 기능으로, DB에 대한 세부 모니터링이 가능하다
    • 르고 내보내기는 AWS의 모니터링 서비스인 CloudWatch 서비스로 DB로그를 내보내는 기능으로, 4가지 유형의 로그를 내보낼 수 있다
    • 유지 관리는 마이너 버전이 출시(Release)될 때마다 AWS에서 자동으로 업그레이드를 수행하는 지를 물러보는 옵션이며, 삭제 방지는 DB가 실수로 삭제되는 것을 방지하는기능이다

-2. RDS 설정 및 관리

  • RDS 생성이 완려된 후에는 생성된 인스턴스에 대한 요약 및 모니터링 정보를 AWS Console에서 확인할 수 있다

  • 1. DB 인스턴스 요약 정보

    • DB 인스턴스를 생성한 후, 대시보드를 들어가면 다음 현황이 조회된다
    • 여기에서 생성된 DB 인스턴스는 1개이고, 하나의 인스턴스에연결된 파라미터 그룹, 옵션 그룹, 서브넷 그룹 역시 각각 1개씩 생성되어 있다
      • 이에 반해 스냅샷, 최근 이벤트는 1개 이상이 있는데, 이는 DB 인스턴스를 생설할 때 DB 백업본인 스냅샷을 7일 주기로 자동 생성하기로 함에 따라 스냅샷 및 이벤트가 자동으로 생성되기 때문인 것에 기인한다
    • 먼저 DB인스턴스를 누르면 인스턴스 목록이 나오며, 각 인스턴스를 누를 경우 인스턴스에 대한 세부 정보가 나타난다
      - DB인스턴스는 EC2 인스턴스와 달리 웹 브라우저별로 다르게 표시되며, 이번에 Chrome과 Internet Explore(IE) 2가지 브라우저에서 조회하는 방법을 간단히 다룬다
    • Chorme에서는 인스턴스를 조회하면 요약, 연결, 모니터링, 로그 및 이벤트, 구성, 유지 관리 및 백업, Tags와 같은 7가지 유형 정보를 한눈에 볼 수 있다
    • 반면 IE에서는 각 항목을 크게 3가지 탭으로 구분하여 나타내고 있으며, 상다의 '모니터링 표시'를 눌러서 모니터링 세부 내역을 조회할 수 있다
    • 첫 번째 탭에서는 경보 및 최근 이벤트, 모니터링 주요 항목을 나타내며, 두 번째 탭에서는 구성, 세부 정소, 세 번째 탭에서는 복제를 나타낸다
      • 또한 상단의 모니터링 표시를 누르면 다음과 같이 모니터링 그래프 및 세부 내용이 표시된다
    • DB 인스턴스에 대한 특정 작업을 수행하기 위해서는 '작업'버튼(IE는 '인스턴스 작업'버튼)을 눌러서 수행할 수 있으며, 수행 내용은 중지 및 재부팅, 복제본 생성, 복구, 스냅샷 생성, 마이그레이션 등이 있다
    • 다음은 스냅샷 부분이다. 스냅샷은 DB 인스턴스 생성 시 스냅샷을 자동 생성할 경우 선택된 주기별로 DB 백업을 생성하며, 스냅샷을 통해서 특정 시점으로 복구 할 수 있다
  • 2. RDS 파라미터 그룹

    • 그룹은 크게 서브넷 그룹, 파라미터 그룹, 옵션 그룹으로 구분된다
      - 서브넷 그룹은 DB 인스턴스가 속한 네트워크 서브넷 설정을 위한 용도
      - 파라미터 그룹은 DB 인스턴스의 DB 환경 설정을 위한 파라미터를 지정하고 설정하는 그룹
      - 옵션 그룹은 DB 인스턴스와 강화된 보안 설정을 위한 그룹
    • 파라미터 그룹을 들어가면 DB 생성 시 기본 생성된 파라미터 그룹이 있다
      • 하지만 기본 설정과 다른 환경을 설정하고 싶을 경우에는 추가 파라미터 글룹 생성을 해야한다
      • AWS에서는 DB 환경 설정을 위한 기본(Default) 파라미터 그룹을 보유하게 되어 있으며, 기본 파라미터 그룹은 변경자체가 불가능하므로 신규 환경 설정을 위해서 임의의 이름을 가진 파라미터 그룹을 생성한다

    • 파라미터 그룹 생성은 그룹 패밀리, 이름, 설명을 입력하게 되어 있다
      • 기본 파라미터 그룹은 DB 인스턴스 생성시 자동으로 생성되지만, 신규로 생성되는 파라미터 그룹은 DB 인스턴스와는 독립적으로 구성할 수 있다
      • 그래서 신규로 생성되는 파라미터 그룹은 같은 유형의 DB 인스턴스 여러 개에 동시 적용할 수 있다
    • 위와 같이 파라미터 그룹 패킬리는 mysql8.0 그룹 이름 및 설명은 원하는 이름 및 설명으로 작성한다
      • 만약 그룹 패밀리를 다른 DB 또는 버전으로 입력할 경우에는 앞서 생성했던 DB 인스턴스가 아닌 다른 유형의 DB 인스턴스에만 적용되므로 이에 유의한다
      • 파라미터 그룹 이름 생성 시에는 영문자 및 숫자, 하이폰(-)으로만 생성되므로 이 점도 더불어 유의
    • 신규 파라미터 그룹이 생성되면, 다음과 같이 신규 생성된 파라미터를 조회할 수 있다
    • 파라미터 그룹을 들어가면 DB에서 사용되는 모든 파라미터를 관리할 수 있으며, MySQL 8.0은 기준으로 총 404개의 파라미터를 관리할 수 있다
    • 파라미터를 생성하고 편집하는 방법은 다음과 같다
      • 먼저 생성하고자 하는 파라미터 명을 검색한 후 '파라미터 편집'을 눌러서 설정값을입력한다
      • 예제로 생성된 DB 인스턴스의 Character Set을 모두 'UTF-8'로 설정하기를 진행해 볼 것이다
      • 검색어에 'charactere_set'을 입력하면 해당 문자가 들어간 파라미터 이름이 조회된다
        • 총 7개가 조회된다
      • 다음 '파라미터 편집'을 눌러서 편집 모드로 변환한다
      • 모든 검색 결과에 나타난 '값'부분에 'UTF-8'을 선택한다
      • 그런 다음 '변경 사항 저장'을 눌러서 신규 등록된 파라미터를 저장
        - 파라미터 그릅은 저장된다고 즉시 적용되는 것이 아니다
        - 앞서 언급했듯이 파라미터 그룹은 DB 인스턴스와는 독립적으로 관리되므로, 신규 생성된 파라미터그룹은 DB 인스턴스에 적용하기 위해서는 해당 인스턴스에서 사용하고자 하는 파라미터 그룹을 지정해야 한다
        - 파라 미터 그룹 지정은 다음과같다, 먼저 사용하고자 하는 DB 인스턴스를 선택한 후 , 인스턴스 수정을 선택
      • 인스턴스 수정 후 '데이터베이스 옵션' 탭을 가면 'DB 파라미터 그룹' 부분이 있으며, 해당 부분을 방금 생성했던 파라미터 그룹으로 지정한다
      • 수정이 안료되면 하단의 '계속'을 눌러서 진행하고 DB 적용 시기를 지정한다
      • 만약 DB 적용을 즉시 할 때 해당 DB를 다른 곳에서 사용 중이라면 해당 정보가 모두 손실될 수 있으므로 DB 적용 여부는 신중히 결정해서 진행한다


      • 지금까지 RDS 설정 및 관리에 대해서 간단히 다루었다

-3. RDS - MySQL 연결하기

  • DB 인스턴스 연결은 생성된 DB 엔진에 따라서 연결 방법 또한 다르다
    • 예를 들어서 Oracle DB의 경우에는 Toad, PL/SQL Developer 등의 프로그램을 사용하여 연결하지만, MySQL의 경우에는 MySQL Workbench 등의 프로그램을 사용한다
    • MySQL을 사용하므로 공식 사이트에서 무료로 배포되는 프로그램인 MySQL Workbench를 사용한 연결 방법을 다루도록 한다
  • 1. MySQL Workbench설치 및 실행
    • 먼저 MySQL Workbench는 MySQL 홈페이지(https://www.mysql.com/products/workbench)에서 무료로 다운로드 받을 수 있다








    • + 버튼을 누르면 접속 창이 뜬다
    • 새창이 나오면 DB 인스턴스 주소, 포트, 그리고 사용자 계정 및 비밀번호를 입력한다
      • DB 인스턴스의 주소 및 포트는 RDS 설정 및 관리 부분의 DB 인스턴스에서 엔드포인트 주소를 참조하며, 사용자 계정 및 비밀번호는 DB 인스턴스 생성 시 입력했던 마스터 사용자 이름 및 암호를 입력한다
    • 엔드포인트 및 포트 입력은 아래 사진을 참고하며, 마스터 사용자 이름(Username)은 DB 인스턴스 생성 시 입력했던 계정을 입력한다
    • 모든 입력이 완료되고 접속을 시도하면 비밀번호를 입력하는 창이 나온다
      • 비밀번호는 DB 인스턴스 생성 시 입력했던 마스터 암호를 입력한다
    • 암호 입력까지 마친 후, 접속 확인을 위해서 'Test Connection'을 눌러서 확인한다
    • 만약 Cannot 메시지 창이 뜬다면 '퍼블릭 액세스 가능성'을 확인해봐야 된다

      • 예로 했다면 오류가 없겠지만 아니오로 하면 연결이 안될 수 있다
      • 예로 변경하고 수정!

      • 만약 현재 다른 수행 중인 작업이 없을 경우에만 '즉시 적용'을 선택하고, 그렇지 않을 경우 '예약된 다음 유지 기간에 적용'을 선택

    • 하지만 RDS 인스턴스 퍼블릭 액세스 가능성을 무조건 '예'로 하는 것은 보안에 취약하다는 문제가 있으므로 신중한 고려가 필요하다
      • 외부로부터의 접속이 가능한 경우에는 원격으로 DB작업을 수행할 수 있지만, RDS 인스턴스도 외부에 노출되어 있기 때문에 해킹 및 보안 위험성도 높은 상태이기 때문이다
    • 이를 보안하기 위한 방법은 크게 두가지 이다!
    • 첫 번째 '퍼블릭 액세스 가능성'을 '아니오'로 선택한 다음 VPC 네트워크를 사용하는 EC2 인스턴스 등을 접속한 후 내부에서 RDS 인스턴스에 접속하는 방법
      • 하지만 이 방법은 사용하는데 많은 제한이 따르므로 상황에 따라서 신중히 고려해야 한다
    • 두 번째는 IAM(Idenfity And Management) DB 인증이다
      • IAM DB 인증을 사용할 경우에는 AWS 계정 내에 별도의 사용자를 생성하고, 사용자별로 RDS 인스턴스에 대한 권한을 부여 할 수 있으므로, 더욱 세분화된 보안 관리가 가능하다
    • 만약 위 방법으로도 안될 경우 보안 규칙 확인



    • 보안 규칙을 확인하고 재 실행!
    • EC2 인스턴스 키 페어 파일을 가지고 인스턴스를 연결하므로 일정 수준의 보안을 보장할 수 있다
      • 하지만 RDS 인스턴스는 '퍼블릭 액세스 가능성'에 대한 보안이 다소 취약한면이 있기 때문에, 이를 있는 그대로 사용하는 것보다는 외부 접속을 차단하거나 IAM DB 인증을 사용하여 보완할 수 있어야 한다

4. 애플리케이션 플랫폼 서비스 - Elastic Beanstalk

01. 개요

-1. 개요

  • AWS Elastic Beanstalk는 AWS의 인프라와 상관없이 애플리케이션을 신속히 배포하고 관리할 수 있는 서비스이다
    • 애플리케이션을 업로드하면 이에 대한 용량, 조정, 로드 밸런싱, 애플리케이션 상태 등에 대한 모니터링을 통해서 배포된 서비스에 대한 안정성 및 확장성을 제공한다
  • Elastic Beanstalk를 이용하기 위해서는 서비스 목록 컴퓨팅에서 선택한다
  • Elastic Beanstalk를 들어가면 신규 애플리케이션 생성을 위한 화면을 제공한다
    • 여기에서는 기존 보유 중인 애플리케이션 배포 및 신규 애플리케이션 생성이 가능하다
    • 시작하기를 눌러서 애플리케이션 생성을 진행한다

-2. Sample App 생성


  • 애플리케이션 생성은 몇 분이 걸리며, 모든 진행을 마치면 애플리케이션 정상저긍로 생성된다
  • 애플리케이션 생성이 완료되면다음과 같이 애플리케이션에 대한 상태를 조회할 수 있다


  • 애플리케이션 생성이 완료되었으면, Test-env의 URL 주소를눌러 들어가고 해당 주소로 들어가면 다음과 같은 샘플 웹 애플리케이션 화면을 조회할 수 있다

02. AWS Console에서의 구성 및 환경 설정

  • AWS Elastic Beanstalk의 구조는 크게 환경과 애플리케이션으로 구분된다
    • 애플리케이션을 AWS Console에서 생성할 경우에는 기본적으로 '환경명-env'라는 이름으로 생성되는데, 이 이름은 추후 변경 가능하다
    • 위세서 생성된 애플리케이션을 예로 들면 'test'라고 된 부분은 애플리케이션 환경이고, 'test-env'는 애플리케이션으로, 하나의 환경에는 여러개의 애플리케이션을 생성 할 수 있다
  • 애플리케이션을 들어간 후, '구성' 탭을 누르면 다음과 같은 애플리케이션 설정 화면이 나타난다
  • Elastic Beanstalk 애플리케이션을 생성하면, 생성된 애플리케이션에 대한 EC2 인스턴스와 EC2 인스턴스에 연결되는 보안 그룹도 더불어 자동으로 생성된다
    • 이는 웹 애플리케이션의 생성과 배포를 위해서 생성된 가상 서버이다
    • 가상 서버는 초기에 환경 및 애플리케이션을 생성할 다시의 내용을 기반으로 하여 EC2 인스턴스 및 보안 그룹을 생성하고 해당 애플리케이션에 할당하는 역할을 하는데, 이를 프로비저닝(Provisioning)이라고 한다
  • 구성 탭의 '인스턴스' 부분을 보면, 인스턴스 유형 및 이미지 등 여러 정보가 기재되어 있다
    • 해당 인스턴스는 애플리케이션 생성 시 프로비저닝된 EC2 인스턴스에 대한 정보로, EC2 인스턴스에서는 웹 애플래이케션에 대한 서버 관리 및 모니터링 등을 수행할 수 있다
    • 애플리케이션에 대한 모니터링 역시 모니터링 서비스인 AWS Cloud Watch를 통해서 이루어진다

  • 모니터링은 CloudWatch를 통해서 5분마다 모니터링된 결과를 Elastic Beanstalk에서도 볼 수 있게 하였으며, CPU 사용률, 네트워크 입출력 등의 결과를 조회할 수있다
  • 앞에서 수행한 예제에 따라 현재까지 샘플 애플리케이션을 생성하고 배포하는 부분을 다루어보았다
    • 하지만 Django 웹 애플리케이션을 개발 및 배포하기 위해서는 직접 개발한 소스 코드 또는 프로그램을 기반으로 배포가 이루어져야 한다
  • 이에 따라 개발 환경에서 개발된 웹 애플리케이션을 배포하기 위해서, AWS Management Con-sole이 아닌 AWS CLI(Commnad Line Interface) 및 AWS EB CLI(Elastic Beanstalk Command Line Interface)를 사용하여 배포하는 방법을 Chapter22에서 구체적으로 다룬다

5. AWS 계정 보안 관리 - IAM

01. IAM 개요 및 소개

  • IAM(Identify and Access Management)는 AWS에서 생성 및 관리하고 있는 모든 서비스를 안전하게 제어하기 위한 계정 관리 서비스이다
  • IAM을 이용하기 위해서는 서비스 목록의 보안, 자격 증명 및 규정 준수에서 선택하거나 서비스 검색을 IAM으로 입력하고 선택한다
  • IAM 대시보드에는 현재 접속한 계정의 보안 상태가 조회된다
    • 별 다른 변경사항이 없다면 루트 액세스 키 삭제에는 체크가 되어 있고, 나머지는 체크가 되어 있지 않다는 것을 확인할 수 있다
    • 각 항목에 대해서는 아래 내용을 통해서 살펴본다

02. 루트 액세스 키 삭제 및 MFA 활성화

-1. 루트 액세스 키 삭제

  • 루트 액세스 키 삭제는 신규로 계정을 생성하면 기본적으로 체크가 되어 있다.
    • 하지만 이는 루트 액세스 키 자체를 처음부터 생성하지 않았기 때문에 삭제 상태로 표시가 된 것이다
  • AWS 계정 생성 시 입력했던 이메일 주소 및 비밀번호는 루트 계정으로, AWS의 모든 권한에 접근할 수 있다
    • 또한 루트 액세스 키를 생성하면 누구든지 AWS를 쉽게 접근할 수 있다
    • 이러한 루트 액세스 키는 AWS에 대한 계정 및 서비스 관리를 위해서만 일시적으로생성하는 용도로 사용되어야 하며, 해당 작업을 모두 마치고 나면 다시 삭제하는 것이 루트 액세스 키를 관리하는 올바른 방법이 될 수 있다
      • 상단 우측 계정 '내 보안 자격 증명'에서 확인

-2. 루트 계정에서 MFA 활성화

  • MFA(Multi-Factor Authorization)는 인증 할 때 여러 매체를 활용하는 인증 방식이다
    • 즉, 로그인 시 이메일 주소 및 비밀번호를 사용한 인증에 그치지 않고, 추가 인증 수단을 이용한 인증 방식이다
    • MFA를 활성화하기 위해서는 먼저 'MFA 관리'로 들어간다
    • 중간에 보안 자격증명 관련 메시지가 나타나는데, 이는 AWS에 대한 별도 사용자를 만들지 않았기 때문에 나타나는 메시지이며, 사용자 생성과 관련해서는 아래에서 별도로 다룬다
    • 해당 문구에 대해서는 'Continue to Security Credentials'를 선택하여 계속 진행한다
    • 보안 자격 증명에서 'MFA 활성화'를 선택한다
  • MFA 디바이스는 가상 MFA 디바이스, U2F 보안 키, 다른 하드웨어 및 MFA 디바이스가 나온다
    • U2F 보안키다른 하드웨어 및 MFA 디바이스는 Yubico 및 Gemalto에서 제공하는 보안키로 제품에 따라 최소 $12.99 최대 $40.00에 제공된다
    • 반면 가상 MFA 디바이스는 무료로 제공된다
    • Google Authenticator 앱을 다운받아서 사용할 수 있으며, 안드로이드 및 아이폰 모두 호환 가능하다
    • 가상 MFA 디바이스를 선택하면 아래와 같이 QR코드 및 MFA 코드를 입력하는 부분이 나타난다
      • 이 부분은 Google authenticator를 실행해야 하므로, 앱을 다운로드 받는다
    • 다운로드는 Google Play Stoer나 App Storre에서 다운로드가 가능하다
    • Authenticator를 실행하면 시작하기 화면이 나타나며, '바코드 스캔'을 선택한다
    • 바코드 스캔을 선택하면 카메라로 찍는 화면이 나타나며, QR코드를 스캔한다
    • 스캔이 완료되면 Authenticator 앱에서 6자리 숫자가 나타난다
    • OTP와 같은 개념으로 일정 시간이 지나면 숫자가 갱신되므로 연속된 MFA 코드를 입력한다
    • 모든 등록이 완료되면 아래와 같이 가상 MFA 할당이완료된다
    • MFA 할당이 완료되면 로그인 할 때마다 아이디와 비밀번호 입력 후, MFA 코드를 입력해야 한다
    • MFA 코드는 Authenticator 앱을 실행하면 바로 확인할 수 있으며, 해당 코드를 입력하면 로그인이 완료된다
    • 로그인이 완료되면 메인 화면으로 진입할 수 있으며, AWS의 서비스를 기존과 동일하게 이용할 수 있다

03. 개별 IAM 사용자 생성 및 비밀번호 정책

-1. 개별 IAM 사용자 생성

  • AWS 계성 생성 후 IAM에서 별 다른 사용자 설정을 하지 않았으면, AWS 계정에 대한 루트(Root)계정으로 모든 서비스를 이용할 수 있다
    • 물론 루트 계정 서비스는 개인 혼자서 프로그램 개발, 서버 관리 및 서비스 제공 등 모든 부분을 담당한다면 루트 계정만으로 모든 서비스를 엑세스 할 수 있다
    • 그러나 AWS 계정이 달인 사용자가 아니라 여러 사용자 또는 비즈니스에서 사용하는계정일 경우에는 루트 계정으로 모든 서비스를 액세스하는 것은 보안상 문제가 생길 수 있다
    • 그러므로 AWS에서는 각 서비스에 대한 권한별로 IAM 사용자를 생성해서 필요한 권한만 부여하는 것을 권장하고 있으며, 이에 따른 사용자 생성 역시 필요하다
    • 개별 IAM 사용자 생성은 IAM 대시보드에서 '사용자 관리'를 누른다
    • 처음에는 생성된 사용자가 없기 때문에 빈 화면이 나올 것이다. '사용자 추가'를 눌러서 사용자를 생성한다
  • 사용자 이름 및 액세스 유형 및 비밀번호, 재설정 필요 부분을 설정한다
    • 액세스 유형은 프로그래밍 개발 도구 상에 필요한 액세스 키를 부여받은 후 로그인하는 방식과 AWS Management Con-sole 액세스 방식 두가지가 있으며, 필요에 따라서 모두 설정할 수 있다
    • 비밀번호 재설정의 경우에는 사용자 생성 시 임의의 비밀번호를 만든 후 해당 사용자가 처음에 로그인할 때 비밀본호를 직접 생성하도록 유도하는 방식이다
  • 다음은 권한 설정이다
    • 사용자 권한을 설정하기 위해서는 같은 유형의 사용자를 나타낸 수 있는 그룹을 생성하는 것을 AWS에서 권장하고 있다
    • 기존 생성된 그룹이 있을 경우에는 사용자 속성에 따라 그룹에 사용자를 추가하면 된다
    • 만약에 생성된 그룹이 없거나 새로운 그룹이 필요할 경우에는 '그룹 생성'을 통해서 그룹을 생성한다
    • 그룹 생성은그룹 이름을 입력하고, 해당 그룹이 AWS에서 사용할 수 있는 권한을 나타낸다
    • 루트 계정과 동일하게 모든 서비스에 액세스 하기를 원한다면 'Administrator Access'를 선택하고, 서비스별 액세스가 필요할 경우에는 정책 이름 및 유형 설명을 확인하여 그에 맞는 서비스를 선택한다
    • 지금 예제에서는 루트 ㄱ{정과 동일한 관리자 계정을 생성할 예정이므로 'Administrator Access'를 선택한 후 그룹을 생성한다
    • 그룹 생성이 완료되면 생성된 그룹이 목록에 나타나며, 해당 그룹 선택 후 다음 단계로 이동한다
      • 기존 사용자에서 권한 복사, 같은 권한을 가진 사용자를 생성할 때 사용되는 기능으로, 이미 여러 유형의 사용자가 존재하고 해당 사용자 중 한명과 같은 권한을 부여하고자 할 때 사용되는 기능
      • 기존 정책 직접 연결, 그룹 생성 시 권한 생성하는 부분과 동일하게 서비스별로 설정된 정책에 대한 액세스 권한을 선택하는 부분이다, 그룹과는 별개로 AWS 내의 특정 권한을 부여하고자 할 때 선택
  • 태그는 선택 사항이며 사용자에 대한 추가 정보를 Key-Value 형태의 태그로 입력하고자 할 때 사용
  • 모든 사항 입력이 완료되면 사용자 생성을 수행한다
  • 사용자 추가가 완료되면 특정 사용자에 대한 정보가 요약된 형태로 나타난다
    • 해당 사용자는 루트 계정과는 별계의 계정 및 주소를 사용하여 로그인이 가능하다
  • AWS Management Console 액세스 권한도 추가 부여하였으며, 해당 사용자는 사용자 추가에 나타난 주소를 사용하여 액세스가 가능하다
    • 로그인 시도는 위 사진에 나타난 'https://804752489855.signin.aws.amazon.com/console' 링크를 클릭하여 로그인을 시도한다
    • 해당 주소로 들어가면 기존과 동일한 로그인 화며이 나오지만 '계정' 부분이 새롭게 추가된 것을 확인할 수 있다
    • 이는 각 AWS 계정별고유 계정 번호로, 고유 계정 번호 및 사용자 이름, 암호 입력이 모두 이루어져야 정상적으로 로그인할 수 있다
    • 사용자를 생성했을 때 '비밀번호 재설정 필요'를 체크했다면, 비밀번호 변경을 위한 화면이 추가로 나타난다.
    • 루트 계정에서 사용자를 생성했을 때에는 사용자가 루트 계정 관리자가 지정한 비밀번호로 최초 액세스가 가능하다
    • 하지만 향후에는 해당 사용자가 직접 사용해야할 계정이므로 사용자가 직접 비밀번호를 설정 후 관리하도록 한다
    • 사용자 계정으로 로그인이 완료되면 AWS Management Console 메인 화면이 나타나며, 부여된 권한별로 서비스를 이용할 수 있다

-2. 그룹을 사용한 권한 할당

  • 그룹은 개별 IAM 사용자 생성 시 사용자별로 같은 권한을 나타낼 수 있는 그룹을 뜻한다
  • IAM 사용자 생성 시 그룹 생성도 동시에 진행하였다면, 그룹을 사용한 권한 할당도 이미이루어졌을 것이다
  • 반대로 별도의 그룹을 생성을 하지 않았을 경우에도 직접 그룹을 생성할 수 있으므로 동일하게 그룹 관리가 가능하다

-3. IAM 비밀번호 정책 적용

  • 사용자별 비밀번호에 대한 정책을 나타내는 부븐으로, IAM에서는 이에 대한 세부 항복별로정책을 적용할 수 있다

  • 지금까지 IAM에서 제공하는 주요 서비스에 대해서 알아보았다
  • IAM을 사용하면 계정 관리를 더욱 체계적이고 안전하게 수행할 수 있으며, 계정에 대한 권한 및 액세스 방식을 설정하여 더욱 강화된 보안으로 서비스를 수행할 수 있다
  • 단일 사용자 계정이라도기본적인 보안 정책 적용은 필요하지만, 다중 사용자 또는 기업체에서 사용할 계정이라면 사용자 및 그룹 권한 설정은 필수로 수행해야 하며 비밀번호 정책도 주기적으로 관리할 수 있어야 한다

6. AWS 주요 서비스

01. 스토리지 관리 서비스 - S3

-1. 개요

  • S3(Simple Storeage Service)는 AWS의 스토리지 관리를 위한 대표적인 서비스이다
    • AWS에서는 S3를 '어디서나 원하는 양의 데이터를 저장하고 검색할 수 있도록 구축된 객체 스토리지'로 정의하였으며, 내구성, 보안, 유연한 데이터 관리 등을 강력한 장점으로 꼽았다
    • S3를 이용하기 위해서는 서비스 목록의 스토리지에서 선택하거나, 서비스 검색을 S3로 입력하고 선택한다
  • S3를 들어가면 하나의 버킷이 나온다
    • 버킷(Bucket)은 사전적 의미로는 양동이를 뜻하지만, '여러 가지 사물을 하나에 담는다'는 뜻으로도 많이 사용된다(예 : 버킷 리스트)
    • AWS에서의 S3는 이 의미를 차용하여 버킷을 단위로 하는, 수많은 리소스를 저장하는공간으로도 볼 수 있다
    • 버킷은 리전 단위로 존재하며, 반대로 하나의 리전에는 여러 버킷을 생성하고 관리할 수 있다
    • AWS의 주요 서비스 및 환경 설정을 하면 S3 버킷은 최소 1개 이상은 자동으로 생성되어 있다

-2. 버킷 생성

  • 기존에 존재하는 버킷이 아닌 새로운 버킷을 생성하기 위해서는 '버킷 만들기'를 사용하여 생성할 수 있으며, 버킷 생성을 위한 첫 화면은 아래와 같다

  • 첫 번째 화면은 이름 및 리전을 지정하는 부분이며, 이미 존재하는 버킷과 같은 설정으로 버킷을 복사할 수 있다
    • 특히 버킷 이름은 본인 계정뿐만 아니라 모든 AWS 동일 리전 내에서는 같은 이름을 사용하면 안되므로, 가능하면 도메인 형태로 버팃을 생성하여 차별을 두는 것을 권장한다
  • 두 번째는 버킷에 대한 권한 설정을 나타내는 부분이다
    • 버킷에는 모든 객체를 저장할 수 있따
    • 그렇기 때문에 일부 필요에 다라 보안이 요구되는자료를 저장하고 관리하기 위해서는 버킷에 대한 액세스 설정도 확인 후 액세스 여부를 결정할 수 있어야 한다
  • 다음 부분은 버킷 옵션을 구성하는 부분이다
    • '버전 관리'를 통해서 객체에 대한 모든 버전을 자동 보관할 수도 있고, 버킷에 대한 액세스 요청을 기록할 수 있다
    • 그 외에도 태그, 로깅, 암호화 등도 설정 할 수 있다
  • 마지막으로 버킷 생성을 위한 정보를 확인하고, 문제가 없으면 '버킷 만들기'를 눌러서 버킷 생성을 완료한다
    • 버킷이 생성되면 버킷 목록에 신규로 생성된 버킷이 나타난다

-3. 버킷 파일 업로드

  • 선택된 버킷을 들어가면 다음과 같이 업로드를 권장하는 화면이 나타난다
    • 비록 버킷은 생성되었지만, 버킷 내에 아직 어떠한 객체도 없는 상태이므로 업로드를 진행하도록 한다
  • 객체 업로드는 일반 파일 업로드와 마찬가지로 파일을 선택하여 업로드를 진행할 수 있다
    • 하지만 일반 업로드와 달리, 해당 파일에 대한 액세스 권한을 부여하고 보관 기관, 암호키 부여 등의 기능도 더불어 수행한다
  • 버킷 내 객체 업로드가 완료되면 일반 파일 탐색기와 유사한 유형으로 조회되며, 버킷 속성 변경 및 파일 이동, 삭제 등의 기능을 사용할 수 있디






  • S3를 이용하면 단순히 파일 및 객체를 저장하는 기능뿐 아니라 각 객체에 대한 보안 및 액세스 설정, 로그 저장, 스냡샷 저장을 위한 기능도 지원한다
  • Django 웹 애플리케이션 구축하는데 있어서 S3는 다양한 용도로 활용이 이루어진다
    • S3는 Elastic Beanstalk을 활용한 Django 웹 애플리케이션 배포 시 배포 파일을 관리하는 용도로 사용되고, 게시판 구축에서 사용되는 첨부 파일을 저장하는 용도로 사용된다

02. 도메인 관리 서비스 - Route 53

-1. 개요

  • Route 53은 클라우드 DNS 서비스로, 신규 도메인 등록이나 기존에 보유 중인 도메인과 AWS 자원 연결, 도메인에 대한 트래픽 및 모니터링을 수행하는 DNS 관련 종합 서비스를 뜻한다
  • Route 53은 서비스 목록의 네트워킹 및 콘텐츠 전송에서 선택한다
    • 하지만 전체 서비스의 하단에 있기 때문에 서비스 목록에서 선택하는것보다는 검색창에 Route 53을 입력하고 선택하는 것을 권장한다
  • Route 53은 크게 네 가지 기능이있으며, 이는 다음과 같다
    • DNS Management : Route 53에 등록된 도메인 주소 관리
    • Traffic Management : 라우팅에 대한 트래픽 시각도구 및 정책 관리
    • Avaliability Monitoring : 가용성 및 상태 검사, 장애 조치 모니터링
    • Domain Registration : 신규 도메인 등록 및 호스팅 서비스
    • 여기에서 주로 사용되는 것은 DNS Management로, 이미 등록된 도메인을 어떠한 형태로 관리 하고 있는지를 나타낸다

-2. 도메인 관리

  • 도메인 관리는 호스팅 영역을 기준으로 관리되며, 아래와 같이 나타난다

  • 도메인 주소를 클릭하면, 호스팅 영역 내에서 해당 도메인에 대한 세부 구성 형태가 나타나 있다
  • 여기에서 Type이란 도메인 유형을 타나낸것으로, 처음에 호스팅 영역을 생성하면 기본적으로 NS(Name Server)와 SOA(Start Of Authority)가 자동으로 생성된다
    • NS는 호스팅 영역에 대한 신뢰할 수 있는 네임서버를 나타내며, SOA는 도메인에 대한 기본 식별 정보를 나타낸다
  • 또한 Type A는 IPv4 형태의 AWS 자원에 대한 엔드포인트 주소를 직접 연결하는 항모긍로, (저는 생성이 안되었네요) 위 도메인을 각각의 주소를 연결되어 있다고 나타내고 있다
  • Domain Registration을 통해서 도메인을 구매하였다면 모든 절차는 다 마친다
    • 하지만 외부 도메인을 AWS에 등록하는 경우에는 Route 53에 나타난 네임서버를 DNS 제공 없체의 네임서버로 등록하여야 한다
    • 만약 네임서버 등록이 되지 않을 경우에는 Route 53의 DNS 주소를 제대로 사용할 수 없으므로, 이 점을 주의하여 사용한다

03. AWS 가상 네트워크 서비스 - VPC

-1. 개요

  • VPC(Virtual Private Cloud)는 가상 네트워크를 제공하는 서비스이다
    • 사용자 계정별로 내부 네트워크 설ㄹ정을 위한 IP 주소 할당, 서브넷 설정, 보안 설정 등의 기능을 수행하며, 외부 네트워크 와의 연결을 위한 여러가지 관리 기능도 수행한다
    • VPC는 AWS 계정 생성 후 EC2 인스턴스 등의 서비스 자원을 생성하면 기본적으로 생성ㄷ죄며, AWS의 모든 서비스 자원은 사용자별로 VPC에 할당이 되어 서비스가 이루어진다
  • VPC를 이용하기 위해서는 서비스 목록의 네트워킹 및 콘텐츠 전송에서 선택한다
    • 하지만 전체 서비스의 하단에 있기 때문에 서비스 목록에서 선택하는 것보다는 검색창에 VPC를 입력하고 선택하는것을 권장

-2. VPC 주요 구성

  • VPC 초기화면을 들어가면 다음과 같이 VPC 서비스가 조회된다
  • 리전별 리소스와 같이 VPC를 직접 생성한 적은 없었지만, 현재까지 EC2 인스턴스와 RDS 인스턴스를 생성하였다
    • AWS 서비스를 생성함으로써 VPC, 라우팅 테이블 등의 기본 네트워크 역시 1개 이상 씩 생성된 것도 더불어 확인할 수 있다
    • 여기에서는 서브넷과 보안 그룹에 대한 부분만 추가적으로 확인한다
    • 서브넷은 다른 요소와는 다르게 4개로 나타난다
      • 이는 서울 리전의 가용 영역이 4개이기 때문에 서브넷 또한 4개로 나타나는 것이다
      • 서브넷 부분의 세부 내용을 보면 다음과 같이 IP 영역대별로 서브넷도구분되어 있음을확인할 수 있다
      • 물론 이는 기본 설정이며, 사용자가 네트워크를 구성함에 따라 추가 서브넷을 생성하고 관리할 수 있다
  • 보안 그룹 역시 1개가 아닌 4개로 되어 있는 것도 확인할 수 있다
    • 하지만 보안 그룹은 EC2 인스턴스 RDS 인스턴스를 생성함에 따라서 각각의 보안 그룹이 생성되었고 VPC 생성 시 기본 보안 그룹도 보유하고 있으므로, 총 4개의 보안 글부이 조회된다
    • 이들보안그룹은 각 인스턴스가 삭제되더라도 자동으로 같이 삭제되는 것은 아니며, 여러 인스턴스에 대해서 하나의 보안 그룹을 사용할 수도 있다
    • 그러므로 AWS의 인스턴스를 생성하고 관리할 때 보안 그룹을 어떻게 할당할 것인가에 대해서도 고려할 수 있어야 한다
  • VPC는 네트워크를 전문적으로 수행하는 사람들을 위한 AWS 서비스이다
    • 그렇기에 필요에 따라 추가적인 문서 참조가 필요하다
profile
아직까지는 코린이!

0개의 댓글