Amazon WorkSpaces의 재부팅을 예약하는 방법

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

본 기사는 Amazon WorkSpaces를 주기적으로 재부팅하기 위한 예약을 구현하는 방법에 대해 설명합니다.

Amazon WorkSpaces를 사용하는 사용 사례에 따라 해당 WorkSpaces 리소스의 정기적인 재부팅이나 특정한 시간에 중지되도록 예약하는 것이 필요할 수 있습니다.

 

해당 기사는 CloudWatch 규칙과 Lambda 함수를 사용하여 매달(30일 마다) WorkSpaces가 자동으로 재부팅되도록 예약하는 방법에 대해 안내합니다.

 

단계 1. Lambda 와 WorkSpaces API 를 위한 IAM 역할 생성

  1. AWS IAM 콘솔을 엽니다.
  2. 왼쪽 네비게이션에서 역할(Roles)을 선택하고 "역할 생성(Create Role)"를 클릭합니다.
  3. 사용 사례 항목에서 'Lambda'를 선택하고 다음(Next)를 클릭합니다.
  4. 다음 2개의 권한 정책을 검색하고 선택합니다.
  • AWSLambdaBasicExecutionRole
  • AmazonWorkSpacesAdmin
  1. 다음(Next)를 클릭합니다.
  2. 역할의 이름을 입력하고 "역할 만들기(Create Role)"를 클릭합니다.

 

여기에 이미지 설명 입력

 

단계 2. Lambda 함수 생성

  1. AWS Lambda 콘솔을 열고 리전을 선택합니다.
  2. "함수 생성(Create a function)"를 클릭합니다.
  3. '기본 정보' 섹션에 함수 이름을 입력합니다.
  4. 함수를 작성하기 위한 사용할 언어를 런타임에서 선택합니다. 본 기사에서는 'Python 3.11' 을 선택하며 관련 예제를 제공합니다.
  5. 권한(Permissions) 항목 하위에 "기본 실행 역할 변경(Change default execution role)"을 확장하고 "기존 역할 사용(Use an existing role)"을 선택합니다.
  6. 그리고 드랍 다운 메뉴로 부터 앞선 단계 1에서 생성한 역할을 선택합니다.
  7. "함수 만들기(Create a function""를 클릭합니다.
  8. 코드(Code) 탭을 선택하고 WorkSpaces를 재부팅하도록 Lambda 함수의 코드를 작성합니다. 이를 위한 샘플 코드는 다음과 같습니다.

샘플 코드


import json
import boto3
def lambda_handler(event, context):
    
client = boto3.client('workspaces')
response = client.reboot_workspaces(
        RebootWorkspaceRequests=[
            {
                'WorkspaceId': 'YOUR_WORKSPACE_ID_1'
            },
            {
                 'WorkspaceId': 'YOUR_WORKSPACE_ID_2'
            }
        ]
    )

  1. 배포(Deploy) 버튼을 클릭합니다.

참고로,

  • WorkSpaces가 재부팅될 수 있으려면, 위 Lambda 함수에 의해 재부팅이 트리거 될 때 WorkSpaces가 'Available' 또는 'Unhealthy' 상태에 있어야 합니다.
  • 위 샘플 코드에서 'reboot_workspaces' 호출에 사용된 배열안에 명시할 수 있는 WorkSpaces의 ID는 최대 25개까지 입니다. 그리고 이 호출에 의한 재부팅 동작은 비동기적으로 실행됩니다.
  • 위 제공된 샘플 코드는 참고 용도로 제공되는 것이며 따라서 테스트를 위해서만 사용되고, 프로덕션(Production) 환경에서 사용하지 않아야 합니다.

 

여기에 이미지 설명 입력

 

단계 3. CloudWatch 규칙 생성

  1. Amazon CloudWatch 콘솔을 열고 리전을 선택합니다.
  2. 왼쪽 네비게이션에서 이벤트(Events)를 확장하고 규칙(Rules)을 선택합니다.
  3. "규칙 생성(Create rule)"을 선택합니다.
  4. 규칙 이름을 입력하고 규칙 타입에서 "일정(Schedule)"을 선택합니다.
  5. 하단에 "규칙 생성으로 이동(Continue to create rule)"을 클릭합니다.
  6. 일정 패턴에서 "일정한 빈도로 실행되는 일정입니다." 항목을 선택합니다.
  7. 빈도를 설정합니다. 본 기사에서는 30일 마다 재부팅되도록 설정하는 예시를 제공합니다. 이에 따라 빈도를 30/일 로 설정하고 다음(Next)를 클릭합니다.
  8. 대상 유형은 'AWS 서비스'를 선택하고 하위 드랍 다운 메뉴에서 'Lambda 함수'를 선택합니다. 그리고 앞선 단계 2에서 생성한 Lambda 함수를 선택하고 다음(Next)를 클릭합니다.
  9. 다음(Next)를 클릭합니다.
  10. 규칙 생성(Crate rule)을 클릭합니다.

 

여기에 이미지 설명 입력

 

참고 링크 :

[1] Tutorial: Schedule AWS Lambda Functions Using CloudWatch Events: https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/RunLambdaSchedule.html

[2] Create an AWS Lambda Function: https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/RunLambdaSchedule.html#create-lambda-function

[3] RebootWorkspaces: https://docs.aws.amazon.com/workspaces/latest/api/API_RebootWorkspaces.html

[4] Create a Rule: https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/RunLambdaSchedule.html#schedule-create-rule

profile pictureAWS
지원 엔지니어
게시됨 6달 전165회 조회