IaC: EC2 인스턴스 Start/Stop 자동화

발행: (2026년 5월 7일 PM 08:30 GMT+9)
5 분 소요
원문: Dev.to

Source: Dev.to

IaC: EC2 인스턴스에서 시작/중지 자동화 커버 이미지

개발용 EC2 인스턴스에서 작업하고 싶었는데, 필요 이상으로 오래 켜두어 지갑이 아프게 된 경험이 있을 겁니다, 특히 더 비싼 인스턴스 유형을 실험하고 싶을 때는 더욱 그렇습니다.

특정 상황에 인스턴스가 필요할 수도 있습니다; AWS 콘솔을 통해 설정하고 나면 모든 것을 수동으로 삭제하는 번거로움이 뒤따릅니다. 코드형 인프라(IaC)의 장점이 매우 크다고 생각하며, 이는 빈번하고 재현 가능한 좋은 사용 사례라고 봅니다.

이 스택은 개발/테스트 환경을 위해 설계되었으며 인스턴스 유형, 스토리지, 인스턴스 격리 여부, 종료 및 시작 시간, 시간대 등에 대해 높은 유연성을 제공합니다. 부족한 부분이 있으면 언제든지 필요한 수정 및 배포가 가능합니다.

EC2 예약을 위한 IaC 아키텍처 스택

무엇이 필요합니까?

  • AWS 계정
  • Node.js + npm
  • AWS CLI 설치
  • 자격 증명 구성 (aws configure)
  • 레포지토리를 클론합니다 (레포지토리)
  • 계정/리전에서 CDK 부트스트랩 (설정되지 않은 경우)

전제 조건을 모두 충족하고 프로젝트의 npm 의존성을 설치한 후, 가장 기본적인 명령을 실행할 수 있습니다:

cdk deploy

이 명령은 기본값을 배포합니다 (모두 최소 테스트 비용을 고려, 예: 인스턴스 t2.micro, rootVolume 20 GB, 등).

기본적으로 인스턴스는 Running 상태이며, 작업 시간은 월요일부터 금요일까지 오전 9시부터 오후 7시까지 예약됩니다.

인스턴스에 연결하려면 ID를 가져와 다음을 실행합니다:

aws ssm start-session --target 

매개변수로 구성 가능한 항목

  • InstanceType: t2.micro(무료 티어)부터 고성능 컴퓨팅 인스턴스까지.
  • MachineImage: 기본값은 Amazon Linux 2023이며, 특정 AMI ID를 주입할 수 있습니다.
  • RootVolumeSize / DataVolumeSize: 시스템과 데이터용 스토리지를 별도로 관리합니다.
  • ScheduleStartCron / ScheduleStopCron: AWS 표준 cron 구문을 사용합니다. 기본값은 근무 시간(오전 9시‑오후 7시)입니다.
  • 시간대: America/Argentina/Buenos_Aires로 사전 설정되어 있습니다.
  • AssignPublicIp: 기본값은 false; 인스턴스는 프라이빗 서브넷에 배치됩니다.

사용자 정의 매개변수로 배포 예시

cdk deploy \
  -c instanceType=r6i.8xlarge \
  -c rootVolumeSize=50 \
  -c dataVolumeSize=500 \
  -c scheduleStartCron="cron(0 13 ? * MON-FRI *)" \
  -c scheduleStopCron="cron(0 21 ? * MON-FRI *)" \
  -c project=big-data-analytics \
  -c environment=staging

이 명령은 다음을 배포합니다:

  • r6i.8xlarge 유형의 인스턴스.
  • rootVolume EBS 볼륨 50 GB.
  • dataVolumeSize EBS 볼륨 500 GB.
  • 월요일부터 금요일까지 오후 1시 (13 h) ART에 시작하도록 예약.
  • 월요일부터 금요일까지 오후 9시 (21 h) ART에 중지하도록 예약.
  • 비용 추적 및 관리용 태그: project=big-data-analyticsenvironment=staging.

고려사항

  • EBS Volume Root: 안전한 자동 전원 차단 및 켜기를 허용하며, 데이터 손실이 없습니다.
  • Delete on Termination: 스택을 삭제하면 EBS 볼륨도 함께 삭제됩니다. 스택을 삭제한 후에도 볼륨을 유지해야 하는지 평가하세요.
  • Timezone: EventBridge Scheduler 규칙의 기본 시간대는 America/Argentina/Buenos_Aires이며, 다른 파라미터가 제공되지 않으면 이 시간대가 사용됩니다.

여기까지 읽어 주셔서 감사합니다. 직접 시도해 보세요!

모든 피드백을 환영합니다. 코드는 GitHub 저장소에서 확인하세요.

0 조회
Back to Blog

관련 글

더 보기 »

Infragraph가 지원하는 HCP Terraform

소개: 클라우드로 마이그레이션하는 것은 인프라 관리를 단순화해야 하지만, 실제로 데이터는 여러 사일로에 흩어져 있는 경우가 많다. Los e...