실습 1-6 _ EC2

2026. 6. 6. 14:56·클라우드 컴퓨팅/AWS

 

실습 1-6 — Public EC2 생성: 퍼블릭 서브넷에 첫 웹 서버 띄우기

지금까지 VPC·서브넷·라우팅·IGW로 인프라 골격을 완성했습니다. 이제 그 위에 실제 서버(EC2) 를 올려 웹 페이지를 띄웁니다. "보안 그룹 → 인스턴스 → 웹 서비스" 순서로 진행합니다.

📌 이번 편 한눈에

단계 핵심
보안 그룹 인스턴스 방화벽. HTTP(80) + SSH(22) 열기
EC2 시작 퍼블릭 서브넷 + 공인 IP 자동 할당 + 기존 SG
웹 설치 httpd 설치·기동 후 http로 접속 확인
퍼블릭 조건 퍼블릭 서브넷 · 공인 IP · 라우팅(→IGW) · SG 허용

개념 — EC2가 '퍼블릭'으로 동작하려면

서버 하나를 띄운다고 외부에서 접속되는 게 아닙니다. 앞선 편들에서 만든 조건이 모두 맞아야 합니다.

  1. 퍼블릭 서브넷에 배치 (라우팅 테이블에 0.0.0.0/0 → IGW)
  2. 인스턴스에 공인 IP(자동 할당 또는 EIP)
  3. 보안 그룹(SG) 이 해당 포트(80/22) 허용
  4. (서브넷 NACL이 허용 — 기본 NACL은 전부 허용)

💡 이번 편의 보안 그룹과 공인 IP 자동 할당이 3·2번을 담당합니다. 1번은 이미 IGW편에서 완성했죠.


01. 보안 그룹 생성

EC2(또는 VPC) → 보안 → 보안 그룹 → 보안 그룹 생성.

기본 세부 정보

  • 보안 그룹 이름: Public-Web-SSH-SG (생성 후 변경 불가)
  • 설명: Public Subnet Security Group
  • VPC: My-VPC 선택

인바운드 규칙 — 규칙 추가로 두 개:

유형 프로토콜 포트 소스
HTTP TCP 80 Anywhere-IPv4 (0.0.0.0/0)
SSH TCP 22 Anywhere-IPv4 (0.0.0.0/0)

입력 후 보안 그룹 생성.

 

⚠️ 보안 주의 — 실습이라 SSH(22)를 0.0.0.0/0(전 세계)으로 열었지만, 실무에선 내 IP/32로 제한이 정석입니다. SSH를 전 세계에 열면 무차별 로그인 공격 대상이 됩니다. HTTP(80)는 웹 공개이므로 Anywhere가 맞습니다.

 


02~08. EC2 인스턴스 시작

EC2 대시보드 → 인스턴스 → 인스턴스 시작.

03. 이름 및 태그 — 이름 PublicEC2



04. AMI(운영체제 이미지) — Amazon Linux 2023 kernel-6.1 AMI 선택 (프리 티어, 64비트 x86)



05. 인스턴스 유형 — t3.micro (프리 티어 사용 가능, 2 vCPU / 1 GiB)




06. 키 페어(로그인) — 본인이 생성한 키 페어 선택 (없으면 새 키 페어 생성 → .pem 안전 보관)

 

📎 키 페어의 .pem 파일은 SSH 접속의 유일한 열쇠입니다. 분실하면 그 인스턴스에 못 들어갑니다. chmod 400으로 권한을 잠가 보관하세요.


07. 네트워크 설정 — 편집을 눌러 다음을 지정 (기본값으로 두면 안 됨!):

  • VPC: My-VPC
  • 서브넷: Public-Subnet
  • 퍼블릭 IP 자동 할당: 활성화 ← 외부 접속의 핵심
  • 방화벽(보안 그룹): 기존 보안 그룹 선택 → Public-Web-SSH-SG

⚠️ 가장 흔한 실수 — "퍼블릭 IP 자동 할당"을 켜지 않으면, 퍼블릭 서브넷에 띄워도 공인 IP가 없어 외부에서 접속 불가합니다. 반드시 활성화.

08. 인스턴스 시작 — 인스턴스 시작 클릭 → 성공 메시지 → 모든 인스턴스 보기.

🖼️ [이미지] 인스턴스 시작 성공 화면

잠시 후 인스턴스가 실행 중(running) 이 되고 퍼블릭 IPv4 주소가 부여됩니다. 이 주소로 접속합니다.


09. 웹 서비스 설치 & 확인

키 페어로 인스턴스에 SSH 접속한 뒤, 아래를 순서대로 실행합니다.

# 슈퍼 유저로 전환
sudo su -

# 외부 인터넷 연결 확인 (IGW·라우팅·공인 IP가 맞으면 성공)
ping -c 3 www.google.com

# http 데몬(웹서버) 설치
yum install httpd -y          # Amazon Linux 2023은 dnf도 가능

# 웹서버 기동 & 상태 확인
systemctl start httpd
systemctl status httpd

# 시작 페이지 수정
echo "Hello AWS EC2 Web Service" > /var/www/html/index.html

확인 — 브라우저(Chrome)에서 http://<EC2 퍼블릭 IP> 로 접속.

⚠️ https가 아니라 http 로 접속해야 합니다. 우리는 80번 포트(HTTP)만 열었고 TLS 인증서를 설치하지 않았기 때문입니다. 브라우저가 자동으로 https로 바꾸면 접속이 안 되니, 주소창에 http://를 명시하세요.


검증 사고법 — 안 될 때 어디부터?

증상 점검
SSH 접속 안 됨 공인 IP 있나 / SG 22 허용 / 키페어 맞나 / 라우팅(→IGW)
ping google.com 실패 IGW 연결·라우팅·공인 IP (인프라 문제)
브라우저 접속 타임아웃 SG 80 허용·NACL·라우팅 (방화벽/경로 차단)
브라우저 즉시 거부 httpd 미기동 (systemctl start httpd)
https로 안 됨 정상 — http://로 접속

💡 타임아웃 = 방화벽/경로, 즉시 거부 = 서비스 미기동. 이 한 줄이 트러블슈팅의 핵심입니다.


마치며

퍼블릭 서브넷에 EC2를 띄우고 웹 페이지까지 띄웠습니다. 이 인스턴스는 곧 프라이빗 서버로 들어가는 관문(Bastion) 역할도 하게 됩니다. 기억할 한 줄:

"퍼블릭 서브넷 + 공인 IP + SG 허용 + 라우팅(→IGW), 넷이 다 맞아야 외부에서 보인다."

다음 편에서는 프라이빗 서브넷 + NAT 게이트웨이를 만들고, 이 PublicEC2를 Bastion으로 삼아 프라이빗 EC2에 SSH로 들어가는 구조를 완성합니다.


 

저작자표시 (새창열림)

'클라우드 컴퓨팅 > AWS' 카테고리의 다른 글

실습 1-8 _ Private EC2  (0) 2026.06.06
실습 1-7 _ Private Subnet & Private RT  (0) 2026.06.06
실습 1-5 _ IGW & RT Table  (0) 2026.06.06
실습 1-4 _ 라우팅 테이블 - 2  (0) 2026.06.06
실습 1-3 _ Subnet  (0) 2026.06.06
'클라우드 컴퓨팅/AWS' 카테고리의 다른 글
  • 실습 1-8 _ Private EC2
  • 실습 1-7 _ Private Subnet & Private RT
  • 실습 1-5 _ IGW & RT Table
  • 실습 1-4 _ 라우팅 테이블 - 2
hyeseong-dev
hyeseong-dev
안녕하세요. 백엔드 개발자 이혜성입니다.
  • hyeseong-dev
    어제 오늘 그리고 내일
    hyeseong-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (301) N
      • 여러가지 (108)
        • 알고리즘 & 자료구조 (73)
        • 오류 (4)
        • 이것저것 (29)
        • 일기 (1)
      • 프레임워크 (39)
        • 자바 스프링 (39)
        • React Native (0)
      • 프로그래밍 언어 (39)
        • 파이썬 (31)
        • 자바 (3)
        • 스프링부트 (5)
      • 컴퓨터 구조와 운영체제 (3)
      • DB (17)
        • SQL (0)
        • Redis (17)
      • 클라우드 컴퓨팅 (17) N
        • 도커 (2)
        • AWS (15) N
      • 스케쥴 (65)
        • 세미나 (0)
        • 수료 (0)
        • 스터디 (24)
        • 시험 (41)
      • 트러블슈팅 (1)
      • 자격증 (1)
        • 정보처리기사 (0)
        • 정보보안기사 (1)
        • 네트워크관리사 (0)
      • 재태크 (0)
        • 암호화폐 (0)
        • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    mybatis
    Redis
    OOP
    파이썬
    Spring WebFlux
    FastAPI
    시험
    항해99
    Spring Boot
    취업리부트
    Docker-compose
    EC2
    완전탐색
    AWS
    #개발자포트폴리오 #개발자이력서 #개발자취업 #개발자취준 #코딩테스트 #항해99 #취리코 #취업리부트코스
    WebFlux
    ecs
    reactor
    프로그래머스
    DP
    그리디
    Python
    SAA
    RDS
    spring
    celery
    docker
    자바
    백준
    java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeseong-dev
실습 1-6 _ EC2
상단으로

티스토리툴바