어쩌다 IT
article thumbnail
반응형

리뷰 (Review)

더보기

용어

  • AWS 서비스 - AWS에서 제공하는 서비스
  • AWS 인스턴스 - AWS 서비스를 이용하여 사용자가 생성한 객체
  • AWS 리소스

 

IAM

  • AWS 리소스에 대한 액세스를 안전하게 제어하기 위한 역할, 권한 설정 서비스
  • 보안을 위한 글로벌 서비스
  • IAM root (관리자) 계정 - 전체 AWS 서비스 및 계정 리소스에 대한 완전한 액세스 권한 부여
  • IAM user (사용자) 계정
    • AWS와 상호 작용하기 위한 사람 또는 Application
    • 최소 권한 원칙 적용, 생성 시 기본적으로 주어진 권한은 없고, 필요한 권한만을 부여해서 사용
    • 권한 부여는 정책을 통하여 부여하며, 정책은 권한을 설명한 JSON 문서를 위미
  • IAM group (그룹)
    • IAM 사용자 모임, 그룹에 IAM 정책을 할당하면 해당 그룹 모든 사용자에게 해당 권한 부여
  • IAM policy (정책)
    • AWS 리소스와 리소스에 대한 권한을 허용 (Allow) / 거부 (Deny)하는 문서
  • IAM role (역할)
    • IAM 역할은 임시로 권한에 액세스 하기 위한 자격 증명

 

네트워크

  • 포트 번호, IP Address, 서브넷, 게이트웨이, 라우터

 

Amazon VPC

  • 가상 네트워크 서비스로 리전 단위 서비스
    • 하나의 리전을 대상으로 VPC를 생성할 수 있고, 동일 리전에 여러개 생성 가능
  • VPC를 생성하면 기본 routing table을 자동 생성
  • VPC 생성 후 DNS 호스트 활성화 설정을 해야 함
  • Subnet
    • VPC 내에 구성되는 가상 네트워크 서비스로 가용 영역 단위 서비스
    • AWS 리소스는 항상 Subnet에 소속되어 있어야 한다.
    • IPv4 CIDR 표기법으로 네트워크 범위 설정, 5개의 IP는 AWS에서 미리 예약
    • Subnet은 public subnet, private subnet으로 구분되고 라우팅 테이블 내용에 따라 결정
  • Routing Table
    • 패킷이 전송되는 경로 관리
    • Subnet에 따라 필요한 라우팅 테이블 생성
  • Internet Gateway
    • 인터넷 게이트웨이는 VPC와 연결되어 있어야 한다.

 

컴퓨팅 서비스 - EC2

 

EC2 Instance 생성 절차

더보기

EC2 메뉴  인스턴스  인스턴스 시작

  1. 이름 및 태그 설정
  2. Application 및 OS Image 선택
    • AMI 선택
      • AMI - 즉시 사용 가능한 O/S와 관련 패키지를 포함하고 있는 Image 파일
    • O/S type, version, 보조 기억 장치 type에 따라 적합한 AMI 선택
  3. Instance 유형
    • EC2 Instance가 동작할 H/W 구성
      • CPU 형식
      • Memory 크기
      • Instance 스토리지 유형 및 용량
      • Network 속도
    • AWS 제공 Instance 유형 종류
      • 범용 - 일반 성능
      • 컴퓨팅 최적화 - CPU 성능 최적화
      • 메모리 최적화 - 메모리 성능 최적화
      • 가속화 된 최적화 - GPU 성능 최적화
      • 스토리지 최적화 - 보조 기억 장치 최적화
    • Instance 유형 결정 기준
      • 제공하려는 서비스
      • 요금
  4. 키 페어
    • SSH Client 접속 시 사용할 공개 키 암호
    • EC2 단위로 생성하거나 미리 생성된  키 페어를 EC2 Instance 생성 시 공유 가능
    • 키 페어 생성
      • 키 페어 이름
      • 키 페어 유형 - RSA
      • 프라이빗 키 파일 형식 
        • OpenSSH 계열 (Linux / Mac OS) - .pem
        • PuTTY (Windows) - .ppk
        • VSCode와 연동할 때는 .pem 파일이 필요
  5. 네트워크 설정
    • 네트워크 설정 우측에 편집을 눌러서 default 값이 아닌 직접 설정하는 것이 좋음
    • EC2 Instance가 동작할 네트워크 (VPC / Subnet) 설정
    • VPC 결정
    • Subnet 결정
      • 인터넷 사용 유무에 따라 public / private subnet 선택
    • 퍼블릭 IP 자동 할당
      • 인터넷을 통한 외부 네트워크 연결 - 활성화
      • 내부 네트워크 간 통신만 수행 - 비활성화
  6. 방화벽 (보안 그룹)
    • 최대 5개까지의 보안 그룹 선택 가능 
    • stateful 방식
      • 상태 저장 방식
      • 송신자의 IP Address와 port 번호를 저장하고 모든 패킷 거부로 되어 있어도 송신자와는 통신이 가능
    • 보안 그룹 규칙
      • inbound 규칙
        • 외부에서 EC2 Instance에 패킷을 전송하는 규칙
        • 기본 규칙은 모든 패킷 차단
      • outbound 규칙
        • EC2 Instance에서 외부로 패킷을 전송하는 규칙
        • 기본 규칙은 모든 패킷 허용
  7. 스토리지 구성
    • EC2 Instance가 사용하는 스토리지에 대한 용량 설정 및 추가
    • 통상 O/S를 사용하기 위해서는 root file system을 구성할 수 있어야 하기 때문에
      root file system을 구성하기 위한 기본 스토리지에 대한 설정
    • EC2 Instance의 root file system을 구성하는 스토리지를 인스턴스 스토리지 볼륨이라고 한다.
    • 인스턴스 스토리지 볼륨에 저장되는 데이터의 양만큼 비용 과금
    • 추가적인 스토리지 추가 가능
  8. 고급 세부 정보
    • 스팟 인스턴스 요청 - 필요 시 선택
    • 종료 방지 - EC2 Instance가 잘못 종료되는 것을 방지하기 위한 옵션
    • 사용자 데이터
      • EC2 Instance가 생성되거나 시작할 때 자동으로 수행할 내용을 shell script 형식으로 작성

 

 

EC2 Instance 접속 방법

  • SSH (Secure SHell) 사용
    • EC2 Instance 사용은 CLI 방식으로 운영
    • SSH는 22번 포트를 사용하므로 EC2 Instance 생성 시 보안 그룹 inbound 규칙에 등록해서 사용
    • 보안을 위해 22번 포트 대신에 특정 포트를 이용해서 SSH 사용하는 경우도 있음
    • SSH Client 프로그램
  • RDP(Remote Desktop Protocol) 사용
    • Windows를 원격으로 접속 시 사용
    • Windows Server를 사용, EC2 Instance 사용은 GUI 방식으로 운영
    • RDP Client 프로그램을 설치하여 EC2 Instance 접속

 

EC2 Instance 상태

  • Pending - EC2 Instace 구동 준비 상태, 요금 미청구
  • Running - EC2 Instace 구동 상태, 요금 청구
  • Stopping - EC2 Instace 구동 중지 상태, 요금 미청구, 스토리지 비용은 청구, 인스턴스 중지
  • Shutting down - EC2 Instace 종류 준비 상태, 요금 미청구
  • Terminated - EC2 Instace 삭제, 요금 미청구, 인스턴스 종료

 

EC2 Instance IP Address

  • 퍼블릭 IPv4 주소
    • 인터넷에서 사용할 수 있는 IP Address
    • EC2 Instance가 실행 중인 상태에서만 유지 (동적 IP Address)
    • 기본적으로 EC2 Instance에 부여된 퍼블릭 IP Address는 다시 실행되면 새로운 IP Address가 부여된다.
  • 프라이빗 IPv4 주소
    • Subnet에서 설정된 IP Address CIDR 범위에서 할당된 Local IP
    • VPC 내에서만 통신이 가능한 IP Address

 

EC2 Instance 요금 계산

  • EC2 Instance 실행 시간 - EC2 Instance가 중지 상태인 경우 요금 계산에서 제외
  • 인스턴스 스토리지 볼륨 (EBS) 사용량 - EC2 Instance가 중지 상태인 경우라도 사용 요금 부과
  • 네트워크 사용량 - 패킷 전송에 대한 비용

 

탄력적 IP (Elastic IP, EIP)

  • 고정 IP Address
  • 5개까지의 IP를 EIP로 할당받을 수 있다.
  • EIP 사용 경우
    • EC2 Instacne에 고정 IP Address를 부여하고자 하는 경우
    • NAT Gateway를 사용하는 경우 반드시 EIP를 사용
  • EIP 요금
    • EIP가 EC2 Instance에 할당되고 실행 중일 때는 요금 미청구
    • EIP가 EC2 Instance에 할당되고 중지일 때는 요금 청구
    • EIP가 첨부된 네트워크 인터페이스가 연결되어 있으면 요금 미청구
    • 이외는 요금 청구
  • EIP 생성
더보기
  • EC2 메뉴 → 탄력적 IP → 탄력적 IP 주소 할당
    • 네트워크 경계 그룹 - 리전
    • 퍼블릭 IPv4 주소 풀 (pool) - Amazon의 IPv4 주소 풀
    • 태그 설정

 

  • 고정 IP를 사용하고자 하는 Instance에 EIP 연결
더보기
  • EC2 메뉴 → 탄력적 IP → 연결할 EIP 인스턴스 선택 → 작업 메뉴 → 탄력적 IP 주소 연결
    • 리소스 유형 - 인스턴스
    • 인스턴스 - EIP를 연결할 인스턴스 선택

 

  • EIP 삭제
더보기
  • EIP에 연결된 인스턴스나 네트워크 인터페이스가 없는 경우에만 삭제 가능
  • 탄력적 IP 메뉴에서 작업 메뉴 → 탄력적 IP 연결 해제 → 탄력적 IP 주소 릴리즈 로 삭제

 

EC2 Instance에 대한 연결

  • Linux 기반 AMI로 EC2 Instance 생성 시 - SSH Client 프로그램을 사용하여 접속
  • Windows 기반 AMI로 EC2 Instance 생성 시 - RDP Client 프로그램을 사용하여 접속
  • EC2 Instance 접속 시 login ID
  • PuTTY로 접속 시 loginID@public IP를 입력하면 로그인 ID 입력하지 않아도 됨 - ex) ec2-user@12.12.12.12

 

Amazon Linux Web Server 구축

  • sudo yum update
    • yum - RedHat 계열 Linux 배포판 패키지 매니저 프로그램
  • Web Server 구축
    • Apache Web Server 프로그램 설치
    • sudo yum -y install httpd 
      • Debian - apache2
      • RedHat - httpd 
    • Apache Web Server daemon 실행 및 자동 실행 설정
      • sudo systemctl start httpd
      • sudo systemctl enable httpd
    • Web Server 설치 후 Web Browser에 IP 입력하면 홈페이지가 접속...이 안된다.
      • 여태까지 실습 과정에서 인바운드 규칙에 22번 포트만 허용했기 때문
[ec2-user@ip-12-12-12-12 ~]$ systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2022-09-07 07:00:36 UTC; 15s ago
     Docs: man:httpd.service(8)
 Main PID: 32635 (httpd)
   Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─32635 /usr/sbin/httpd -DFOREGROUND
           ├─32636 /usr/sbin/httpd -DFOREGROUND
           ├─32637 /usr/sbin/httpd -DFOREGROUND
           ├─32638 /usr/sbin/httpd -DFOREGROUND
           ├─32639 /usr/sbin/httpd -DFOREGROUND
           └─32640 /usr/sbin/httpd -DFOREGROUND

Sep 07 07:00:36 ip-12-12-12-12.ap-northeast-2.compute.internal systemd[1]: Sta...
Sep 07 07:00:36 ip-12-12-12-12.ap-northeast-2.compute.internal systemd[1]: Sta...
Hint: Some lines were ellipsized, use -l to show in full.

보안 그룹 변경

  • 보안 그룹은 EC2 Instance에 대한 방화벽 역할
  • 보안 그룹의 인바운드 규칙을 서비스에 맞게 조정
  • Web Service를 위해 필요한 port 번호
    • 80번 - HTTP
    • 443번 - HTTPS
  • 보안 그룹 변경 또는 추가
더보기
  • EC2 메뉴 → 보안 그룹 → 기존 보안 그룹 선택 → 인바운드 규칙 수정
  • EC2 메뉴 → 보안 그룹 → 보안 그룹 생성
    • 보안 그룹 이름
    • 설명
    • VPC 선택
    • 인바운드 규칙 추가
  • 추가된 보안 그룹을 EC2 Instance에 추가
    • EC2 메뉴 → 인스턴스 → EC2 Instance 선택 → 작업 메뉴 → 보안 → 보안 그룹 변경
      • 연결된 보안 그룹 영역에서 추가한 보안 그룹 선택 후 추가

 

EC2 Instance를 이용한 Application 개발 환경 - 실습 환경은 Web Application

  • EC2 Instance에서 직접 Application 개발 / 배포
    • EC2 Instance에서 수행하는 Linux의 editor 프로그램을 이용하여 Application 개발
      • vi index.html → Web Application 개발
    • 배포하기 위한 디렉토리에 Application 복사
      • sudo cp index.html /var/www/html → Web Application 배포
  • 사용자 Host에서 Application 개발 후 배포
    • FTP를 이용한 Application 전송
    • Git을 이용한 git repository 공유
      • 완료된 Application을 GitHub repository에 push
      • EC2 instance에서 GitHub repository 내용 pull
        • git package 설치 - sudo yum -y install git
        • GitHub repository clone - git clone <repository 주소>
        • 배포하기 위한 디렉토리에 Application 복사
          • sudo * /var/www/html → Web Application 배포
[ec2-user@ip-12-12-12-12 work]$ git clone https://github.com/Workspace-goorm.git
Cloning into 'Workspace-goorm'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (4/4), done.
[ec2-user@ip-12-12-12-12 work]$ cd Workspace-goorm/
[ec2-user@ip-12-12-12-12 Workspace-goorm]$ ls
calc.js  index.html
[ec2-user@ip-12-12-12-12 Workspace-goorm]$ sudo cp * /var/www/html
[ec2-user@ip-12-12-12-12 Workspace-goorm]$ ls /var/www/html
calc.js  index.html
[ec2-user@ip-12-12-12-12 Workspace-goorm]$

2주차 쯤에 만들었던 계산기 이용

 

  • VSCode를 이용하여 EC2 Instance 연결을 통해 직접 Application 개발 - SSH 이용 → 은 내일 이어서

TIF

EC2 Instance 생성, 탄력적 IP (EIP)를 통한 고정 IP Adress 할당, 웹 서버 구축 및 배포까지

AWS를 통한 배포의 전반적인 흐름을 살펴본 하루였다.

처음부터 하나하나 같이 진행했기에 큰 어려움 없이 순조롭게 실습이 진행되었고 유익한 시간이었다.

앞으로도 계속 다루겠지만 익숙해질 수 있도록 해야겠다.

 

클라우드 엔지니어 관련 채용 공고들을 보면 하나같이 경력직이다.

물론 초반에 강사님도 말씀하셨듯 DevOps 개발자, 클라우드 엔지니어 등은 신입을 거의 안 뽑는다.

기타 부수적인 것들도 준비해서 경력을 쌓을 수 있도록 준비가 필요해 보인다.

 

 

2022. 09. 06 에 작성된 글입니다.

반응형
profile

어쩌다 IT

@jwlish

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!