Lighstsail 인스턴스 스케줄링

4분 분량
콘텐츠 수준: 중급
0

EC2 인스턴스를 스케줄링 하여 자동으로 시작하고 끄는 방법에 대하여는 소개되어 있으나, Lighstsail 인스턴스를 스케줄링하여 자동으로 시작하고 끄는 방법에 대한 가이드가 없어 이글을 작성하게 되었습니다.

EC2 인스턴스를 스케줄링 하여 자동으로 시작하고 끄는 방법에 대하여는 아래URL에서 소개되어 있으나, Lighstsail 인스턴스를 스케줄링하여 자동으로 시작하고 끄는 방법에 대한 가이드가 없어 이글을 작성하게 되었습니다.

How do I use Lambda to stop and start Amazon Lighstsail instances at regular intervals? https://repost.aws/knowledge-center/start-stop-lambda-eventbridge

이 기사는 아래의 목차로 작성되었습니다.

  • 가. Lambda 함수에 대한 IAM 정책 및 IAM 역할 생성
  • 나. Lighstsail 인스턴스를 중지하고 시작하는 Lambda 함수 생성
  • 다. Lambda 함수 테스트
  • 라.Lambda 함수를 실행하는 EventBridge 규칙 생성

가. Lambda 함수에 대한 IAM 정책 및 IAM 역할 생성

  1. JSON 정책 편집기를 사용하여 IAM 정책을 생성합니다. 다음 JSON 정책 문서를 정책 편집기에 붙여넣습니다.

   {
    "Version": "2012-10-17",
 "Statement": [
 	{
 	"Effect": "Allow",
  	"Action": [
	"logs:CreateLogGroup",
	"logs:CreateLogStream",
	"logs:PutLogEvents"
      ],
      "Resource": "arn:aws:logs:*:*:*"
    },
    {
      "Effect": "Allow",
      "Action": [
	"lightsail:StartInstance",
	"lightsail:StopGUISession",
	"lightsail:StopInstance",
	"lightsail:StartGUISession"
      ],
      "Resource": "*"
    }
  ]
}

  1. 1.에서 생성한 정책으로 IAM 역할을 생성합니다. 중요: Lambda에 권한 정책을 연결할 때 방금 생성한 IAM 정책을 선택해야 합니다.

나. Lighstsail 인스턴스를 중지하고 시작하는 Lambda 함수 생성

  1. Lambda 콘솔을 열고 함수 생성을 선택합니다.

  2. Author from scratch를 선택하세요.

  3. Basic information에 다음 정보를 입력합니다.

함수 이름에 EC2 인스턴스를 중지하는 데 사용되는 함수로 식별되는 이름을 입력합니다. 예를 들어 저는 "StopLightsailInstances" 로 설정 했습니다. 런타임에서는 Python 3.9를 선택합니다. 권한 아래에서 기본 실행 역할 변경을 확장합니다. 실행 역할에서 기존 역할 사용을 선택합니다. 기존 역할에서 가. 에서 생성한 IAM 역할을 선택합니다.

  1. 함수 생성을 선택합니다.

  2. 코드 탭의 코드 소스 아래에서 코드 편집기의 Lambda_function 탭에 있는 편집기 창에 다음 코드를 붙여 넣습니다. 이 코드는 사용자가 Lighstsail 인스턴스를 중지합니다. 라이트세일 인스턴스를 중지하는 예제 함수 코드

예시 저는 아래의 코드에서 instanceName는' Windows_Server_2019-2' 를 입력 했고 REGION은 ap-northeast-2 로 설정 했습니다.

Code to Stop the LightSail server:

import json import boto3 def lambda_handler(event, context): client = boto3.client('lightsail', region_name='REGION') response = client.stop_instance( instanceName='NAME-OF-YOUR-LIGHTSAIL-SERVER' ) return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda!') }

여기에 이미지 설명 입력

  1. 배포를 선택합니다.

  2. 구성 탭에서 일반 구성을 선택한 후 편집을 선택합니다. 제한 시간을 10초로 설정한 다음 저장을 선택합니다. 참고: 사용 사례에 맞게 Lambda 함수 설정을 구성하십시오. 예를 들어 여러 인스턴스를 중지하고 시작하려면 제한 시간 및 메모리에 다른 값을 사용할 수 있습니다.

  3. 다른 기능을 생성하려면 1~7단계를 반복하세요. 이 함수가 EC2 인스턴스를 시작하도록 다음 단계를 다르게 완료하십시오. 3단계에서는 이전에 사용한 것과 다른 함수 이름을 입력합니다. 예를 들어 "StartLightsaiInstances"입니다. 5단계에서 다음 코드를 코드 편집기의 Lambda_function 탭에 있는 편집기 창에 붙여넣습니다.

Code to Start the LightSail server:

import json
import boto3
def lambda_handler(event, context):
    client = boto3.client('lightsail', region_name='REGION')
    response = client.start_instance(
    instanceName='NAME-OF-YOUR-LIGHTSAIL-SERVER'
)
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')

}

여기에 이미지 설명 입력

다. Lambda 함수 테스트

1.Lambda 콘솔을 열고 Functions를 선택합니다.

2.생성한 함수 중 하나(StartLightsaiInstances)를 선택합니다.

3.코드 탭을 선택합니다.

4.코드 소스 섹션에서 테스트를 선택합니다.

5.테스트 이벤트 구성 대화 상자에서 새 테스트 이벤트 생성을 선택합니다.

6.이벤트 이름을 입력하세요. 그런 다음 생성을 선택합니다.

7.참고: 테스트 이벤트의 JSON 코드를 변경하지 마세요. 해당 기능은 사용하지 않습니다.

8.기능을 실행하려면 테스트를 선택합니다. 생성한 다른 함수("StopLightsailInstances")에 대해 1~7단계를 반복합니다.

참고: 라이트세일 콘솔에서 Lambda 함수 기능대로 동작하는지 확인합니다.

라. Lambda 함수를 실행하는 EventBridge 규칙 생성

1.EventBridge 콘솔을 엽니다.

2.규칙 만들기를 선택합니다.

3."StopLightsailInstances"와 같은 규칙의 이름을 입력합니다. (선택 사항) 설명에 규칙에 대한 설명을 입력합니다.

4.규칙 유형에서 Schedule을 선택한 후 Continue in EventBridge Scheduler을 선택합니다.

5.일정 패턴에서 반복 일정을 선택합니다.

6.일정 패턴에서 발생에 대해 반복 일정(Recurring schedule)을 선택합니다.

7.일정 유형에서 필요에 맞는 유형을 선택하고 다음 단계를 완료하세요. 일정 유형이 비율 기반 일정(Recurring schedule)인 경우 비율 표현에 비율 값을 입력하고 시간 간격을 분, 시간 또는 일 단위로 선택합니다. -또는- 일정 유형이 Cron 기반 일정인 경우 Cron 표현식에 인스턴스를 중지할 시기를 Lambda에 알려주는 표현식을 입력합니다. 식 구문에 대한 자세한 내용은 규칙에 대한 일정 식을 참조해 주시기 바랍니다. 참고: 18시 30분에 중지하고 싶으실 경우 30 18 * * ? * 을 입력하면 됩니다.

8.Templated targets에서 AWS Lambda Invoke를 선택합니다.

9.기능에서 라이트 세일을 인스턴스를 중지하는 기능을 선택합니다.

10.건너뛰기를 선택하여 검토하고 생성한 다음 생성을 선택합니다.

1~10단계를 반복하여 라이트 세일 인스턴스를 시작하는 규칙을 생성합니다. 다음 단계를 다르게 완료하세요.

"StopLightsailInstances"와 같은 규칙 이름을 입력합니다. (선택 사항) 설명에 "매일 오전 7시에 Lighstsail 인스턴스를 시작합니다."와 같은 규칙에 대한 설명을 입력합니다.

7단계에서 Cron 표현식에 인스턴스 시작 시기를 Lambda에 알려주는 표현식을 입력합니다. 9단계의 함수에서 Lighstsail 인스턴스를 시작하는 함수를 선택합니다.

이글은 아래의 EC2 인스턴스의 스케줄링 하는 문서를 참고로 작성되었습니다.

[+]How do I use Lambda to stop and start Amazon EC2 instances at regular intervals? https://repost.aws/knowledge-center/start-stop-lambda-eventbridge

profile pictureAWS
지원 엔지니어
게시됨 3달 전702회 조회