CPU 사용량이 낮을 때 EC2 자동 중지, HTTPS 요청 시 자동 시작 — 인스턴스가 꺼져 있을 때 “프론트 도어”를 유지하는 방법?

발행: (2025년 12월 13일 오후 03:28 GMT+9)
3 min read
원문: Dev.to

Source: Dev.to

달성하고 싶은 목표

  • EC2 인스턴스가 유휴 상태일 때 자동으로 중지 (예: CPU 사용률 < 5%).
  • 들어오는 HTTPS 요청이 API에 도달하면:
    1. 인스턴스가 중지돼 있으면 자동으로 시작되어야 함.
    2. 요청은 결국 해당 EC2 인스턴스에서 실행 중인 애플리케이션에 의해 처리되어야 함.

지금까지 수행한 작업

  • StopInstances를 트리거하는 CloudWatch 알람을 사용해 EC2 인스턴스를 자동 중지.
  • EC2 인스턴스를 시작할 수 있는 IAM 권한을 가진 Lambda 함수를 생성.
  • API Gateway를 통해 해당 Lambda를 노출(HTTP API → Lambda → Start EC2); API 호출 시 인스턴스가 시작됨.

문제점

  • API Gateway 엔드포인트는 EC2 엔드포인트가 아니다. 인스턴스가 중지돼 있을 때:
    • HTTPS 요청이 Lambda를 트리거하고 EC2 인스턴스를 시작한다.
    • 인스턴스 부팅이 완료돼도 원래 요청은 애플리케이션으로 전달되지 않는다.
  • 결과적으로 요청이 도착했을 때 EC2 인스턴스가 꺼져 있었기 때문에 요청이 사라진다.

질문

EC2 인스턴스 앞에 “프런트 도어”(프록시, ALB, API Gateway 등)를 두어 다음을 구현할 실용적인 방법이 있는가:

  1. 들어오는 HTTPS 요청이 인스턴스가 중지돼 있으면 시작하도록 트리거하고,
  2. 요청이 다음 중 하나가 되도록:
    • 인스턴스가 준비되면 애플리케이션으로 전달, 또는
    • “서비스가 시작 중이니 X초 후에 다시 시도해 주세요”와 같은 친절한 메시지로 응답.

고려한 옵션

  • Application Load Balancer
  • API Gateway + Lambda
  • 리버스 프록시 구성

어떤 패턴이 가장 좋은지, 지연 시간, 복잡성, 사용자 경험 측면에서의 트레이드오프가 무엇인지 확신이 서지 않는다.

원하는 내용

  • 권장 아키텍처 또는 기존 AWS 패턴.
  • 구현 팁.
  • 콜드 스타트 지연 시간 및 UX 고려 사항에 대한 의견.

감사합니다!

Back to Blog

관련 글

더 보기 »

AWS 모듈 3: Go와 Lambda

Mac을 떠나지 않고 Linux용으로 컴파일했으며 비용은 $0.06였습니다. 시리즈: AWS Zero to Architect - 모듈 3 읽는 시간: 20분 구현 시간: 120분...