AWS

[AWS] Elastic Compute Cloud

Happy._. 2024. 6. 24. 09:40

AWS Billing Dashboard는 Root User만 접근이 가능하다.

IAM User가 Billing Dashboard에 접근하고 싶다면 Root User가 권한을 주어야 한다.

 

Budgets: 예산을 초과하는 경우 알림을 보내주는 설정

 

Budgets 설정

  1. [Create a budget]
  2. Budget setup: Use a template(simplified) 선택
  3. Templates - new: Monthly cost budget
    • Zero spend budget: 프리티어 한도 초과(0.01 달러 이상 지출 발생 시 알림)
    • Monthly cost budget: 월 예산 금액 초과 또는 초과가 예상되는 경우(예산의 85%, 100%, 100%가 예상되는 경우 알림)
  4. Budget name 설정
  5. Enter your budgeted amount 설정(달러 기준) - Monthly cost budget에 해당
  6. Email recipients: 알림을 받을 이메일
  7. [Create budget]

EC2 서버 생성

  1. [Launch Instance]
  2. Name and tags에서 Name 설정
  3. Application and OS Images(Amazon Machine Image): Ubuntu, Ubuntu Server 24.04 LTS (HVM), SSD Volume Type (Free tier eligible)
  4. Instance type: t2.micro (Free tier eligible)
  5. Key pair (login): Create new key pair를 선택해 생성 - 인스턴스에 접속 시 필요
    • Key pair name 설정
    • Key pair type: RSA
    • Private key file format: .pem
  6. [Create key pair]
  7. [Launch Instance]

생성된 인스턴스의 상세에서 확인할 수 있는 부분

  • Public IPv4 address: 외부에서 인스턴스에 접근하기 위한 IP
  • Private IPv4 address: 내부에서 인스턴스에 접근하기 위한 IP
  • Public IPv4 DSN: AWS에서 기본으로 제공하는 도메인명

💡Public IPv4 address로 접속했을 때 무한로딩이 걸리는 이유는 방화벽을 열어주지 않았기 때문이다.

EC2 서버 방화벽 설정

기본적으로 Inbound rules는 모두 닫혀있고 Outbound rules은 모두 열려있다.

22번 포트가 열려있는 이유는 keypair를 이용해서 컴퓨터(터미널)에서 AWS에 접근하기 위함이다.

 

  1. 생성된 인스턴스 상세의 [Security] 탭에서 Security groups 아래 링크 클릭
  2. [Edit inbound rules]
  3. [Add rule]
    • Type: HTTP, HTTP
    • Source: Anywhere- IPv4 - 0.0.0.0/0(모든 IP 주소)로 설정
  4. [Save rules]

외부에서 오는 요청을 처리하기 위한 설정

  1. 생성된 인스턴스 상세에서 우측 상단의 [Connect]
  2. EC2 Instance Connect의 Connection Type: Connect using EC2 Instance Connect
  3. [Connect]
  4. 이동된 콘솔 창 페이지에서 다음 명령어들을 실행
    • 패키지 업데이트 명령어: sudo apt-get update
    • nginx 설치를 위한 명령어: sudo apt-get install nginx
    • nginx 실행을 위한 명령어: sudo systemctl start nginx(명령어 입력 후 별도 메시지 출력 X)
    • nginx 실행여부 확인을 위한 명령어: sudo systemctl status nginx
      • Active: active (running) - 실행 중
  5. Public IPv4 address로 접속
  6. Welcome to nginx! 확인
    • Welcome to nginx!가 보이지 않는 경우 캐시 비우기 또는 브라우저 창을 새로 열면 확인 가능

Welcome to nginx!를 출력하는 html 파일 수정

  • html 파일이 있는 경로로 이동 명령어: cd /var/www/html(index.nginx-debian.html이 해당 파일)
  • 수정 명령어: sudo vim index.nginx-debian.html
  • 커서가 있는 위치에서 i를 누르면 입력 가능(입력이 끝난 후 ESC)
  • 저장하고 닫기: :wq

nginx 재시작하기

  • nginx 재시작 명령어: sudo systemctl restart ngix
  • Warning: The unit file, source configuration file or drop-ins of nginx.service changed on disk. Run 'systemctl daemon-reload' to reload units. 메시지가 뜨는 경우
    • sudo systemctl daemon-reload 명령어를 사용해 reload

실행중인 인스턴스 종료

  1. 종료할 인스턴스를 선택 
  2. [Instance state]
  3. [Stop instance]

💡인스턴스를 종료 후 재시작하면 Public IPv4 address가 변경된다.

     IP를 고정으로 사용하기 위해서는 Elastic IP 설정을 해줘야 한다.

Elastic IP 설정

  1. [Elastic IPs]
  2. [Allocate Elastic IP address]
  3. Network Border Group 설정
  4. Public IPv4 address pool: Amazon's pool of IPv4 addresses
  5. [Allocate]
  6. 발급된 고정 IP를 선택
  7. 우측 상단의 [Actions]
  8. [Associate Elastic IP address]
  9. Instance: 고정 IP를 사용할 인스턴스 선택
  10. [Associate]

Elastic IP 설정 해제

  1. 설정을 해제할 Elastic IP 선택
  2. [Actions]
  3. [Disassociate Elastic IP address]
  4. [Disassociate]
  5. [Actions]
  6. [Release Elastic IP address]
  7. [Release]

EC2 서버 삭제

  1. 삭제할 서버 선택
  2. [Instance state]
  3. [Stop instance]
  4. [Stop]
  5. Instance state: Stopped 변경 확인
  6. [Instance state]
  7. [Terminate instance]
  8. [Terminate]
  9. Instance state: Shutting-down 변경 확인
  10. Instance state: Terminated 변경 확인

EC2 인스턴스의 타입

t2.micro

  • t: 클래스 이름(어떤 클래스의 인스턴스 인지)
  • 2: 세대를 의미(2는 2세대)
  • micro: 클래스 내에서의 사이즈, 클수록 CPU, 메모리를 더 많이 쓸 수 있음

보안 규칙을 위한 Security Group과 Ports

  • 여러 인스턴스에 할당 가능
  • time out → 보안규칙 이슈
    • 높은 확률로 inbound에서 firewall이 열려있지 않음
  • connection refuse → EC2 내부 이슈
    • EC2에서 nginx나 application을 잘 안켰을 경우
    • EC2 내부에서 해결해야 하는 이슈
  • 모든 inbound는 디폴트로 막혀있음
  • 모든 outbound는 디폴트로 열려있음

포트(port)

  • 22: SSH(Secure Shell)로 인스턴스에 원격 접속
  • 21: FTP 파일전송 프로토콜
  • 80: HTTP 웹 접속
  • 443: HTTPS 안전한 HTTP 접속, 현재의 스탠다드

EC2에 접속하는 두가지 방법 SSH와 EC2 Instance Connect

Local에서 접속(SSH)

💡Windows에서는 WSL 추천

  1. AWS 폴더 생성
  2. keypair(.pem) 파일을 AWS 폴더로 이동
  3. 터미널 열기
  4. AWS 폴더로 이동(cd)
  5. chmod 400 <keypair 파일명.pem>
    • chmod: change mode
    • 400: 권한 설정(첫 번째 숫자: Owner용, 두 번쨰 숫자: Group용, 세 번째 숫자: 다른 유저들용)
      • 4: 읽기 권한, 2: 쓰기 권한, 1: 실행 권한
  6. ssh -i <keypair 파일명.pem> ubuntu@<Public IP>
  7. y 입력

EC2 Instance Connect는 EC2 외부 요청 처리 시 사용했던 방법

EC2 인스턴스를 백업하기 위한 Elastic Block Store(EBS)

  • EBS: EC2에 꽂아서 EC2 내용들은 다 백업할 수 있는 외장 메모리(USB 메모리 정도로 생각)
  • 인스턴스를 Terminate하면 인스턴스가 사라지는데 EBS로 백업을 했다면 인스턴스를 Terminate한 후에도 데이터를 EBS에 유지할 수 있다.
  • EBS는 하나의 인스턴스에 장착할 수 있고 하나의 인스턴스에는 여러 개의 EBS를 장착할 수 있다.
  • EBS의 경우 하나의 Availabliity Zone(하나의 Region이 아닌)에서만 뺏다 꽂았다 할 수 있다.
  • 여러 개의 EBS를 보관(시기별 백업)할 때는 EBS Snapshot을 사용한다.
    • 복원을 하는데 더 시간이 오래걸리지만 보관료가 저렴해진다.
    • EBS 여러 개 가지고 있는 것보다 저렴
    • EBS Snapshot은 EBS와 달리 다른 Region으로 보낼 수 있다.

생성된 인스턴스의 Storage 탭에서 Block devices에 생성되어 있는 Volume을 볼 수 있는데 이게 Elastic Block Store이다.

  1. 새로운 Volume 생성
  2. [Volumes]
  3. [Create volume]
  4. Volume type: General Purpose SSD (gp2)
  5. Size (GiB): 원하는 사이즈로 설정
  6. Availability Zone: 인스턴스와 동일하게 설정
  7. [Create volume]
  8. 생성된 Volume 선택
  9. [Actions]
  10. [Attach volume]
  11. Instance: 연결할 인스턴스 선택
  12. [Attach volume]
  13. 인스턴스 상세로 이동해 Storage 탭에서 인스턴스에 붙은 EBS를 확인

 

💡EBS의 옵션 중 Delete on termination는 인스턴스를 삭제할 때 같이 삭제할 것인지 여부

인스턴스를 생성할 때 Configure storage에서 [Advanced]를 누르고 Volume 토클을 열면 옵션을 선택할 수 있다.

 

EBS Snapshot 사용(시간별 백업을 만들기 위함)

  1. Snapshot을 생성한 EBS를 선택
  2. [Actions]
  3. [Create snapshot]
  4. Description 작성
  5. [Create snapshot]
  6. 생성된 Snapshot은 Elastic Block Store의 Snapshots에서 확인 가능
  7. 생성된 Snapshot 선택
  8. [Actions]
  9. [Create volume form snapshot] → snapshot을 다시 volume으로 만들 수 있음
    • volume을 지워도 snapshot으로 다시 volume을 만들 수 있음
  10. [Copy snapshot] → 다른 Region으로 이동할 수 있음

EC2 인스턴스를 복사하기 위한 Amazon Machine Image(AMI)

Amazon Machine Image

  • EC2 인스턴스를 생성할 때 사용되며 운영 체제와 애플리케이션, 라이브러리 등이 포함
  • 이러한 이미지를 사용하면 개발자는 이미 구성된 환경을 더 쉽게 설정
  • AMI는 Amazon에서 제공하는 것뿐만 아니라 개발자가 직접 생성
    • EC2를 가져다 이미지화해 보관을 해서 직접 쓸 수 있음(AMI = 설치CD)
  • 개발자는 자신이 구성한 인스턴스를 이미지로 만들어서 사용할 수 있으며, 이를 다른 사람과 공유

EBS와 AMI의 차이

EBS

  • Amazon EBS는 EC2 인스턴스에서 사용되는 스토리지 볼륨
  • 인스턴스에 연결되어 인스턴스에 데이터를 저장하고 보존하는 데 사용
  • EBS 스냅샷은 EBS 볼륨의 이미지

AMI

  • EC2 인스턴스를 시작할 때 사용되는 이미지
  • 이미 설치된 운영 체제와 애플리케이션을 포함하여 인스턴스를 구성하는 데 필요한 모든 정보를 포함
  • AMI를 사용하여 손쉽게 EC2 인스턴스를 시작하고, 중지하고, 삭제하고, 복제하고, 복원할 수 있음
  • AMI는 EBS 스냅샷을 사용하여 생성될 수 있음
    • AMI를 생성할 때 EBS 스냅샷을 사용하면 인스턴스를 시작할 때 EBS 볼륨이 생성
    • 해당 볼륨에는 이전 인스턴스와 동일한 데이터가 저장

AMI 생성

  1. 이미지를 생성할 인스턴스를 우클릭
  2. [Image and templates]
  3. [Create image]
  4. Image name 설정 후 나머진 default
  5. [Create Image]
  6. 생성된 Image는 Images의 AMIs에서 확인 가능
  7. 생성된 Iamge 선택 후 [Launch instance form AMI]
  8. 인스턴스 Name 등 설정 후 [Launch instance]

 

 

'AWS' 카테고리의 다른 글

[AWS] Simple Storage Service (S3)  (0) 2024.06.25
[AWS] Relational Database Service (RDS)  (0) 2024.06.25
[AWS] Elastic Load Balancer (ELB)  (0) 2024.06.25
[AWS] Identity and Access Management  (0) 2024.06.18