[AWS Skill Builder] Introduction to Amazon EC2

Suhyeon Lee·2025년 8월 13일

Amazon EC2 인스턴스의 시작, 크기 조정, 관리 및 모니터링에 대한 기본 개요 실습

Amazon Elastic Compute Cloud(Amazon EC2)

  • 클라우드에서 크기 조정 가능한 컴퓨팅 용량을 제공하는 웹 서비스
  • 개발자가 보다 쉽게 웹 규모의 클라우드 컴퓨팅을 수행할 수 있도록 설계됨
  • 간단한 웹 서비스 인터페이스 제공
    • 간편하게 필요한 용량을 얻고 구성할 수 있음
    • 컴퓨팅 리소스를 완전히 제어하고 Amazon의 검증된 컴퓨팅 환경에서 실행 가능
      • 새로운 서버 인스턴스를 확보하고 시작하는 데 필요한 시간을 몇 분으로 줄이기 때문에 컴퓨팅 요구 사항의 변경에 따라 신속하게 용량을 확장 및 축소시킬 수 있음
  • 실제 사용한 용량에 대해서만 요금을 지불 → 컴퓨팅 비용 절약
  • 개발자에게 장애 발생 시 복원력이 뛰어난 애플리케이션을 구축하고 일반적인 장애 시나리오에서 애플리케이션을 격리할 수 있는 도구를 제공

목표

  • 종료 방지 기능(termination protection)이 활성화된 웹 서버 시작하기
  • EC2 인스턴스(EC2 Instance) 모니터링
  • 보안 그룹(security group)을 수정
    • 웹 서버가 HTTP 액세스를 허용할 때 사용
  • 규모에 맞게 Amazon EC2 인스턴스의 크기를 조정
  • 종료 방지 기능 테스트
  • EC2 인스턴스 종료

아이콘 키 설명

: 다양한 유형의 지침 및 참고 사항에 대한 주의 환기용

  • ⚠ 주의: 특별한 관심이 필요한 중요한 정보
    • 놓쳤다고 해도 장비 또는 데이터에 문제가 발생할 정도로 중요하지는 않지만 특정 단계를 반복해야 할 수 있음
  • 🛑 경고: 철회할 수 없으며 명령 또는 프로세스의 실패에 영향을 줄 수 있는 작업
    • 설정 후 변경할 수 없는 구성에 대한 경고 포함
  • ✅ 예상 출력
    • 명령 또는 편집된 파일의 출력을 확인하는 데 사용할 수 있는 샘플 출력
  • 📃 참고
    • 참고, 팁 또는 중요한 가이드
  • 👀 자세히 알아보기
    • 자세한 정보를 찾을 수 있는 위치 제공
  • 💭 고려 사항
    • 자신의 환경에 개념을 적용하는 방법을 고려하거나 당면한 주제에 대한 대화를 시작하기 위해 일시 중지할 시점
  • 👍 태스크 완료
    • 실습의 결론 또는 요점

실습 시작

  • 페이지 상단에서 "실습 시작(Start Lab)" 버튼 누르기

    ⚠ 프로비저닝된 AWS 서비스가 준비될 때까지 기다리기

  • "콘솔 열기(Open Console)" 버튼으로 바뀌면 해당 버튼 누르고 실습 시작
    • 새 웹 브라우저 탭에서 자동으로 AWS Management Console에 로그인됨

      🛑 별다른 지시가 없는 한 리전(Region) 변경하지 말기

  • 실습에서 사용하지 않는 AWS 서비스에 액세스하거나 이 실습 가이드에서 제공하는 것 이외의 작업을 수행하는 경우 오류가 발생할 수 있음
    • 실습에 필요한 AWS 서비스 기능만 사용 가능

Task 1: Amazon EC2 인스턴스 시작

  • 종료 방지 기능이 활성화된 Amazon EC2 인스턴스를 시작
    • 종료 방지 기능(termination protection): EC2 인스턴스를 실수로 종료하는 것을 방지
    • 인스턴스에는 간단한 웹 서버를 설치하는 사용자 데이터 스크립트가 포함되어 있음
  1. AWS Management Console 상단 검색 창에서 EC2 검색해 선택
  2. "Launch Instance" 버튼 선택
  3. Name and tags 섹션의 Name 상자
    • Web Server 입력
  4. Amazon Machine Image (AMI)
    • Amazon Linux 2023 AMI 선택
      • 이 실습은 Amazon Linux 2023 AMI로만 작업함
    • Quick Start 목록에는 가장 자주 사용되는 AMI가 포함됨
    • 자체 AMI를 생성하거나, AWS Marketplace에서 AMI를 선택할 수도 있음
      • AWS Marketplace: AWS에서 실행되는 소프트웨어를 판매 또는 구매할 수 있는 온라인 저장소

👀 Amazon Machine Image (AMI)

  • 클라우드의 가상 서버인 인스턴스를 시작하는 데 필요한 정보를 제공
    • 인스턴스 루트 볼륨에 대한 템플릿
      • 예: 운영 체제 또는 애플리케이션이 있는 애플리케이션 서버
    • 시작 권한
      • 인스턴스를 시작하기 위해 AMI를 사용할 수 있는 AWS 계정을 제어함
    • 블록 디바이스 매핑
      • 시작 시 인스턴스에 연결할 볼륨을 지정
  1. Instance Type 섹션
    • Instance type 드롭다운 메뉴를 선택하고 t3.micro 선택
      • t3.micro 인스턴스 유형에는 가상 CPU 2개와 1GiB 메모리가 있음 (2vCPU  1 GiB Memory)

👀
Amazon EC2는 각 사용 사례에 맞게 최적화된 다양한 인스턴스 유형을 제공함
→ 인스턴스 유형은 CPU, 메모리, 스토리지 및 네트워킹 용량의 다양한 조합으로 구성됨
→ 애플리케이션에 따라 적합한 리소스 조합을 선택할 수 있는 유연성을 제공
→ 각 인스턴스 유형에는 하나 이상의 인스턴스 크기가 포함되므로 대상 워크로드의 요구 사항에 따라 리소스의 크기를 조정할 수 있음

  1. Key pair (login) 섹션
    • Key pair name - required 드롭다운 메뉴에서 Proceed without a key pair (Not recommended) 선택
      • 이 실습에서는 인스턴스에 로그인하지 않으므로 키 페어가 필요하지 않음

👀
Amazon EC2는 퍼블릭 키 암호화 기법을 사용하여 로그인 정보를 암호화하고 복호화함
→ 인스턴스에 로그인하려면 키 페어를 생성하고, 인스턴스를 시작할 때 키 페어의 이름을 지정하고, 인스턴스에 연결할 때 프라이빗 키를 제공해야 함

  1. Network settings 섹션

    a. "edit" 버튼 누르기
    b. VPC - required: 이름에
    Lab VPC가 포함된 VPC 선택

    c. Subnet: 이름에 Public Subnet 1이 포함된 서브넷 선택

    d. Firewall (security groups)
    • select existing security group 선택
    • Common security groups: Web Server security group 선택

👀

  • Network
    • 인스턴스를 시작할 Virtual Private Cloud(VPC)를 나타냄
    • 개발, 테스트 및 프로덕션 등 다양한 용도의 다중 네트워크를 사용할 수 있음
  • security group
    • 하나 이상의 인스턴스에 대한 트래픽을 제어하는 가상 방화벽(a virtual firewall) 역할
      • 인스턴스를 시작할 때 1개 이상의 보안 그룹을 인스턴스와 연결
    • 연결된 인스턴스와 트래픽을 주고받을 수 있게 하는 규칙을 각 보안 그룹에 추가
      • 언제든지 보안 그룹에 대한 규칙을 수정할 수 있음
      • 새 규칙은 보안 그룹과 연결된 모든 인스턴스에 자동으로 적용됨
  1. Configure storage 섹션
    • 선택되어 있는 항목을 그대로 두기
      • 기본 8GiB 디스크 볼륨을 사용하여 Amazon EC2 인스턴스를 시작
        • 이 볼륨이 루트 볼륨임
        • ‘부트’ 볼륨이라고도 함

👀
Amazon EC2는 Elastic Block Store라고 하는 네트워크 연결 가상 디스크에 데이터를 저장함

  1. Advanced Details 섹션 확장
    • Termination protection 드롭다운 메뉴로 스크롤한 다음 Enable로 설정

👀

  • 종료 방지 기능 활성화
    • 인스턴스가 종료되지 않도록 함
    • Amazon EC2 인스턴스가 더는 필요하지 않은 경우 해당 인스턴스를 종료할 수 있음
      • 해당 인스턴스를 중지하고 관련 리소스를 해제한다는 것을 의미
    • 종료된 인스턴스를 다시 시작할 수는 없음
      • 따라서 인스턴스가 실수로 종료되는 것을 방지할 필요가 있음
  1. User data - optional 필드가 표시될 때까지 맨 아래로 스크롤

👀
사용자 데이터(User data)
: 인스턴스를 시작할 때 인스턴스에 사용자 데이터를 전달하여 일반적인 구성 태스크를 자동으로 수행하는 데 사용할 수 있고, 인스턴스가 시작된 후에 스크립트를 실행하는 데 사용할 수도 있음

  1. 다음 텍스트를 복사하여 User data - optional 필드에 붙여넣기
#!/bin/bash
yum -y install httpd
systemctl enable httpd
systemctl start httpd
echo '<html><h1>Hello From Your Web Server!</h1></html>' > /var/www/html/index.html
  • 이 스크립트는 다음 작업을 수행함:
    • Apache 웹 서버 설치(httpd)
    • 부팅 시 웹 서버를 자동으로 시작하도록 구성
    • 웹 서버 활성화
    • 간단한 웹 페이지 생성
  1. "Launch instance" 버튼 선택
  2. 왼쪽 창의 축소 가능한 메뉴에서 Instances 선택
  • 해당 옵션을 보려면 메뉴를 확장해야 할 수도 있음
  • 인스턴스가 pending 상태로 표시될 수 있음
    • 인스턴스가 시작되는 중임을 나타냄
    • 이후 running으로 바뀜
      • 인스턴스 부팅이 시작되었다는 의미
      • 새 인스턴스를 생성할 때 일반적으로 인스턴스에 액세스할 수 있을 때까지 약간 시간이 걸림
  1. 인스턴스에 다음이 표시될 때까지 기다리기
  • Instance state 또는 Status check 값이 변경되지 않으면 페이지를 주기적으로 새로 고침하기
  1. 새로 생성된 Web Server 옆에 있는 확인란을 선택하고 Details 탭을 선택하면 인스턴스의 세부 정보가 표시됨

📃 Details 탭에서 추가 정보를 보려면 창 구분선을 위로 끌기

  • Details 탭에 표시되는 정보
    • 인스턴스 유형
    • 보안 설정
    • 네트워크 설정 등
  • 인스턴스가 수신하는 퍼블릭 IPv4 DNS 이름(Public IPv4 address)은 인터넷에서 해당 인스턴스와 통신할 때 사용할 수 있음

👍 첫 번째 Amazon EC2 인스턴스가 성공적으로 시작되었습니다.

태스크 2: 인스턴스 모니터링

  • Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스와 AWS 솔루션의 안정성, 가용성, 성능 등을 유지하는 데 중요한 부분
  1. Status and alarms 탭 선택
    • System reachability, Instance reachability 및 Attached EBS reachability 검사를 통과한 것을 알 수 있음
  1. Monitoring 탭 선택

    • 해당 인스턴스에 대한 CloudWatch 지표를 표시

      • 인스턴스가 최근에 시작되었으므로 현재 표시할 지표가 많지 않음
      • 시간이 좀 지나면 지표 그래프 그려짐
    • 그래프를 선택하여 확장된 보기를 표시할 수 있음

👀

  • Amazon EC2는 지표를 EC2 인스턴스에 대한 Amazon CloudWatch로 전송함
    • 기본(5분) 모니터링 기능이 기본적으로 활성화되어 있음
      • Basic (five-minute) monitoring is enabled by default for EC2 instances, as mentioned in the course content.
    • 세부(1분) 모니터링도 사용 가능
  1. 콘솔의 오른쪽 상단 "Actions" 메뉴 선택 → onitor and troubleshoot ▶ 선택 → Get system log 선택
  • 시스템 로그에는 문제 진단에 유용한 도구인 인스턴스의 콘솔 출력이 표시됨
    • 서비스 구성 문제와 커널 문제를 해결하는 데 특히 유용
      • 서비스 구성 문제: 인스턴스가 종료되거나 SSH daemon을 시작하기 전에 연결할 수 없게 되는 문제

✅ Amazon EC2 인스턴스의 시스템 로그 콘솔 출력

📃 시스템 로그가 표시되지 않으면 몇 분 정도 기다렸다가 로그가 표시될 때까지 로그 화면을 새로 고침하기

  1. 출력을 위아래로 스크롤하여 인스턴스 생성 시 추가한 사용자 데이터에서 httpd 패키지가 설치되었음을 확인하고 브라우저 창 하단으로 스크롤하여 Cancel 선택
  1. Web Server 옆의 확인란을 선택하고 "Actions" 메뉴를 선택한 다음 Monitor and troubleshoot ▶, Get instance screenshot를 차례로 선택

✅ Amazon EC2 인스턴스 콘솔에 화면을 연결했을 때의 모습

모니터 화면을 해당 Amazon EC2 인스턴스 콘솔에 연결할 경우 어떤 모습일지를 볼 수 있음

👀 SSH 또는 RDP를 통해 인스턴스에 연결할 수 없는 경우 인스턴스의 스크린샷을 캡처하여 이미지로 볼 수 있음 → 이렇게 하면 인스턴스 상태에 관한 가시성을 확보할 수 있으므로 더 빠르게 문제 해결 가능

  1. 브라우저 창 하단으로 스크롤하여 Cancel 선택

👍 인스턴스를 모니터링하는 몇 가지 방법을 살펴보았습니다.

태스크 3: 보안 그룹 업데이트 및 웹 서버 액세스

  • EC2 인스턴스를 시작할 때 웹 서버를 설치하고 간단한 웹 페이지를 생성한 스크립트를 제공했었음 → user data 스크립트
  • 이 태스크에서는 웹 서버의 콘텐츠에 액세스함
  1. Web Server 옆의 확인란 선택 → Details 탭 선택 → 인스턴스의 Public IPv4 address 값을 클립보드에 복사
  1. 웹 브라우저에서 새 탭을 열고 브라우저에 http://를 입력하고 방금 복사한 IP 주소를 붙여 넣은 다음, Enter 키 입력

💭 웹 서버에 액세스할 수 있습니까? 액세스할 수 없는 이유는 무엇입니까?
→ 보안 그룹이 HTTP 웹 요청에 사용되는 포트 80에서 인바운드 트래픽을 허용하지 않기 때문에 현재 웹 서버에 액세스할 수 없음
→ 이 데모에서는 보안 그룹을 방화벽으로 사용하여 인스턴스 안과 밖에서 허용되는 네트워크 트래픽을 제한함
→ 문제 해결 방법: 포트 80에서 웹 트래픽을 허용하도록 보안 그룹을 업데이트하기

  1. 브라우저 탭이 열려 있는 상태에서 EC2 Management Console 탭으로 돌아가 왼쪽 탐색 창에서 Security Groups를 선택
  1. 보안 그룹 이름이 Web Server security group인 Security group ID 옆에 있는 확인란을 선택 후 Inbound rules 탭을 선택
    • 현재 보안 그룹에는 규칙이 없음
    • "Edit inbound rules" 버튼 선택
  1. "Add rule" 버튼 선택
  1. 다음과 같이 구성하고 "Save rules" 버튼 선택
    • 새 인바운드 HTTP 규칙은 IPV4 IP 주소(0.0.0.0/0) 및 IPV6 IP 주소(::/0) 모두에 대한 항목을 생성함

📃 프로덕션 워크로드에 대해서 ‘Anywhere’ 또는 보다 구체적으로 0.0.0.0/0 또는 ።/0을 사용하는 것은 권장 모범 실무에 해당하지 않습니다.

  1. 이전에 열었던 웹 서버 탭으로 돌아가서 페이지 새로 고침

Hello From Your Web Server! 라는 메시지 표시

👍 Amazon EC2 인스턴스로 전송되는 HTTP 트래픽을 허용하도록 보안 그룹을 수정했습니다.

태스크 4: 인스턴스 크기 조정: 인스턴스 유형 및 EBS 볼륨

  • 요구 사항이 변경됨에 따라 인스턴스가 과도하게 사용되거나 사용률이 낮아질 수 있음
    • 인스턴스가 과도하게 사용됨 → 인스턴스가 너무 작은 상태라는 의미
    • 사용률이 낮음 → 인스턴스가 너무 큰 상태라는 의미
  • 이런 경우 인스턴스 유형 변경 가능
    • 예: t3.micro 인스턴스가 워크로드에 비해 너무 작은 경우 t3.small 인스턴스로 변경
  • 마찬가지로, 디스크 크기를 변경할 수 있음

인스턴스 중지

  • 인스턴스 크기를 조정하려면 먼저 인스턴스를 중지해야 함

👀
인스턴스를 중지하면 인스턴스가 종료됨
→ 중지된 EC2 인스턴스에는 요금이 부과되지 않지만 연결된 Amazon EBS 볼륨에 대한 스토리지 요금은 그대로 청구됨

  1. EC2 Management Console의 왼쪽 탐색 창에서 Instances를 선택
  2. 아직 선택하지 않은 경우 Web Server 인스턴스 옆의 확인란을 선택
  3. Instance state ▼를 선택한 다음 Stop instance를 선택
  4. Stop 선택
    • 인스턴스가 정상적으로 종료되어 실행이 중지됨
      • 몇 분 정도 걸릴 수 있음
  5. Instance State에 Stopped가 표시될 때까지 대기

인스턴스 유형 변경

  1. 아직 선택하지 않은 경우 Web Server 인스턴스 옆의 확인란을 선택
  2. Actions ▼ 메뉴를 선택하고 Instance settings , Change instance type을 차례로 선택
  3. 다음과 같이 구성
  4. change instance type 선택
    • 인스턴스가 다시 시작되면 인스턴스 유형이 t3.micro보다 메모리가 2배 큰 t3.small로 바뀜

EBS 볼륨 크기 조정

  1. 왼쪽 탐색 창의 ▼Elastic Block Store 섹션에서 Volumes를 선택
  2. 나열된 볼륨 옆에 있는 확인란을 선택하고 Actions▼ 메뉴에서 Modify volume 선택
    • 현재 디스크 볼륨의 크기는 8GiB
  3. Size (GiB) 를 10으로 변경하고 Modify 선택
  4. Modify를 선택하여 확인하고 볼륨 크기 늘리기
  5. 새로 고침 하면 볼륨 크기가 늘어난 걸 확인할 수 있음

크기가 조정된 인스턴스 시작

  • 이제 인스턴스를 다시 시작하면 더 많은 메모리와 디스크 공간이 생김
  1. 왼쪽 탐색 창에서 Instances를 선택 → Web Server 옆의 확인란 선택 → Instance state ▼를 선택한 다음, Start instance를 선택
    • 인스턴스 유형이 t3.micro에서 t3.small로, 루트 디스크 볼륨이 8GiB에서 10GiB로 수정된 것을 확인

📃 수정되는 EBS 볼륨은 Modifying, Optimizing, Complete라는 일련의 상태를 거침

👍 Amazon EC2 인스턴스의 크기 조정 작업을 완료했습니다.

태스크 5: 종료 방지 테스트

  • 더 이상 필요하지 않은 인스턴스는 삭제할 수 있음
    • 이를 인스턴스 종료라고 함
  • 인스턴스가 종료된 후에는 인스턴스에 다시 연결하거나 인스턴스를 재시작할 수 없음
  • 종료 방지 기능을 사용하는 방법 익히기
  1. 왼쪽 탐색 창에서 Instances를 선택 → Web Server 옆의 확인란 선택 → Instance state ▼를 선택한 다음, Terminate (delete) instance를 선택
  2. Terminate (delete)를 선택

그러면 페이지 상단에 다음과 같은 오류 메시지가 표시됨:

위의 오류는 예상된 것으로, 인스턴스가 의도치 않게 종료되는 것을 방지하는 보호 장치임
→ 인스턴스를 종료하려면 종료 방지 기능을 비활성화해야 함

  1. Actions ▼ 선택 → Instance settings 선택 → Change termination protection 선택
  2. Enable 옆의 확인란을 선택 취소하고 save 선택
    • 이제 인스턴스 종료 가능
  3. 인스턴스 콘솔 화면 새로 고침
  4. Web Server 옆의 확인란 선택 → Instance state ▼ 선택 → Terminate (delete) instance 선택 → Terminate (delete) 선택

✅ Web Server 인스턴스의 Instance state가 약 30초 후에 Terminated로 바뀔 것 (페이지를 몇 번 새로 고쳐야 할 수 있음)

  • 조금 기다리면 Terminated로 바뀜

👍 종료 방지 기능을 성공적으로 테스트한 후 인스턴스를 종료했습니다.

QUIZ

  1. Which of the following is an example of resizing an EC2 instance type?
    • Changing from t3.micro to t3.small
      • Changing the instance type from t3.micro to t3.small is an example of resizing an EC2 instance to increase its capacity.
  2. What type of monitoring is enabled by default for EC2 instances?
    • Basic monitoring
      • Basic (five-minute) monitoring is enabled by default for EC2 instances, as mentioned in the course content.
  3. What is the primary purpose of enabling termination protection for an Amazon EC2 instance?
    • To prevent accidental termination of the instance
      • Termination protection is designed to prevent users from accidentally terminating an EC2 instance, which helps maintain the availability of important resources.
  4. What is the primary difference between stopping and terminating an EC2 instance?
    • Stopping is temporary, terminating is permanent
      • Stopping an instance is a temporary action that allows you to start it again later, while terminating permanently deletes the instance.
  5. What precaution can you take to prevent accidental termination of an EC2 instance?
    • Enable termination protection
      • Enabling termination protection (setting the 'disableApiTermination' attribute) prevents accidental termination of an EC2 instance.

결론

다음을 성공적으로 수행했습니다.

  • 종료 방지 기능이 활성화된 웹 서버를 시작했습니다.
  • EC2 인스턴스를 모니터링했습니다.
  • 웹 서버가 HTTP 액세스를 허용할 때 사용하는 보안 그룹을 수정했습니다.
  • 규모에 맞게 Amazon EC2 인스턴스의 크기를 조정했습니다.
  • 종료 방지 기능을 테스트했습니다.
  • EC2 인스턴스를 종료했습니다.

실습 종료

다음 단계에 따라 콘솔을 닫고 실습을 종료하기:
1. AWS Management Console로 돌아가기

2. 페이지 오른쪽 상단에서 AWSLabsUser를 선택하고 Sign out을 선택

3. "실습 종료"를 선택한 다음 실습을 종료할 것임을 확인

profile
2 B R 0 2 B

0개의 댓글