gyeomii

[AWS] EC2 Instance 자동 중지 및 실행 본문

개발

[AWS] EC2 Instance 자동 중지 및 실행

gyeomii 2024. 1. 15. 10:27
반응형

AWS에서 EC2 자동 종료 & 실행

개요

EC2 Instance를 자동 종료 & 실행하도록 설정한다.

전체적인 순서는 다음과 같다.

  1. IAM (Identity and Access Management) 생성
  2. Lamda 적용
  3. Event Bridge Scheduler 설정

IAM 생성

  • 콘솔 홈에서 IAM을 검색한다.

  • 액세스 관리 > 정책 > 정책생성

  • JSON 선택

  • 정책편집기에 아래 정책 추가

      {
          "Version": "2012-10-17",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "logs:CreateLogGroup",
                      "logs:CreateLogStream",
                      "logs:PutLogEvents"
                  ],
                  "Resource": "arn:aws:logs:*:*:*"
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "ec2:Start*",
                      "ec2:Stop*"
                  ],
                  "Resource": "*"
              }
          ]
      }
  • 정책 생성

  • IAM > 역할 > 역할 생성

  • AWS 서비스 > Lamda 선택

  • 전 단계에서 생성한 정책 연결

  • 역할 이름 추가 후 생성

Lamda 적용

  • Lamda 검색

  • 함수 생성

  • 새로작성 > 함수 이름 > 런타임 설정 (Python 3.12)

  • 코드 작성 > Deploy

      import boto3
    
      region = 'ap-northeast-2' 
      instances = ['인스턴스 ID (i-****************)']
      ec2 = boto3.client('ec2', region_name=region)
    
      def lambda_handler(event, context):
          ec2.start_instances(InstanceIds=instances)
          print('start your instances: ' + str(instances))

    • 종료 함수는 ec2.start_instances 대신 ec2.stop_instances 로 작성하면 됌.
  • 구성 > 권한 > 편집

  • 기존역할 > 전단계에서 생성한 역할 연결

Amazon EventBridge Scheduler 설정

  • Amazon EventBridge Scheduler 검색

  • 일정이름 입력, 반복일정 > Cron 기반 일정 > Cron 표현

  • 유연한 기간을 선택하면 cron 설정한 시간 + 유연한 시간 범위 내에 실행된다

      - ex) 매일 03시 실행 + 유연한 기간 15분 : 3시 ~ 3시 15분 범위 내에 실행
  • 대상선택 > AWS Lamda 선택, Invoke > 전 단계에서 생성한 Lamda 함수 선택

  • 설정

    • 일정 완료 후 작업 : DELETE를 선택하면 완료한 일정을 삭제한다.
    • 재시도 정책 : 실패한 일정을 24시간 이내 재시도한다.
  • 일정생성

    • 설정 내용 확인 후 일정 생성
반응형

'개발' 카테고리의 다른 글

[AWS] EC2 상태이상시 Slack 연동 알림 설정  (0) 2024.01.22
AWS 이슈 (java scheduler 사용시)  (0) 2023.12.15
📌Web Application Layer  (0) 2023.09.20
JAVA에서 웹 크롤링하기(1)  (0) 2023.08.29
🕷Data Crawling 3  (0) 2023.08.23