본 기사는 Amazon WorkSpaces를 주기적으로 재부팅하기 위한 예약을 구현하는 방법에 대해 설명합니다.
Amazon WorkSpaces를 사용하는 사용 사례에 따라 해당 WorkSpaces 리소스의 정기적인 재부팅이나 특정한 시간에 중지되도록 예약하는 것이 필요할 수 있습니다.
해당 기사는 CloudWatch 규칙과 Lambda 함수를 사용하여 매달(30일 마다) WorkSpaces가 자동으로 재부팅되도록 예약하는 방법에 대해 안내합니다.
단계 1. Lambda 와 WorkSpaces API 를 위한 IAM 역할 생성
- AWS IAM 콘솔을 엽니다.
- 왼쪽 네비게이션에서 역할(Roles)을 선택하고 "역할 생성(Create Role)"를 클릭합니다.
- 사용 사례 항목에서 'Lambda'를 선택하고 다음(Next)를 클릭합니다.
- 다음 2개의 권한 정책을 검색하고 선택합니다.
- AWSLambdaBasicExecutionRole
- AmazonWorkSpacesAdmin
- 다음(Next)를 클릭합니다.
- 역할의 이름을 입력하고 "역할 만들기(Create Role)"를 클릭합니다.
단계 2. Lambda 함수 생성
- AWS Lambda 콘솔을 열고 리전을 선택합니다.
- "함수 생성(Create a function)"를 클릭합니다.
- '기본 정보' 섹션에 함수 이름을 입력합니다.
- 함수를 작성하기 위한 사용할 언어를 런타임에서 선택합니다. 본 기사에서는 'Python 3.11' 을 선택하며 관련 예제를 제공합니다.
- 권한(Permissions) 항목 하위에 "기본 실행 역할 변경(Change default execution role)"을 확장하고 "기존 역할 사용(Use an existing role)"을 선택합니다.
- 그리고 드랍 다운 메뉴로 부터 앞선 단계 1에서 생성한 역할을 선택합니다.
- "함수 만들기(Create a function""를 클릭합니다.
- 코드(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'
}
]
)
- 배포(Deploy) 버튼을 클릭합니다.
참고로,
- WorkSpaces가 재부팅될 수 있으려면, 위 Lambda 함수에 의해 재부팅이 트리거 될 때 WorkSpaces가 'Available' 또는 'Unhealthy' 상태에 있어야 합니다.
- 위 샘플 코드에서 'reboot_workspaces' 호출에 사용된 배열안에 명시할 수 있는 WorkSpaces의 ID는 최대 25개까지 입니다. 그리고 이 호출에 의한 재부팅 동작은 비동기적으로 실행됩니다.
- 위 제공된 샘플 코드는 참고 용도로 제공되는 것이며 따라서 테스트를 위해서만 사용되고, 프로덕션(Production) 환경에서 사용하지 않아야 합니다.
단계 3. CloudWatch 규칙 생성
- Amazon CloudWatch 콘솔을 열고 리전을 선택합니다.
- 왼쪽 네비게이션에서 이벤트(Events)를 확장하고 규칙(Rules)을 선택합니다.
- "규칙 생성(Create rule)"을 선택합니다.
- 규칙 이름을 입력하고 규칙 타입에서 "일정(Schedule)"을 선택합니다.
- 하단에 "규칙 생성으로 이동(Continue to create rule)"을 클릭합니다.
- 일정 패턴에서 "일정한 빈도로 실행되는 일정입니다." 항목을 선택합니다.
- 빈도를 설정합니다. 본 기사에서는 30일 마다 재부팅되도록 설정하는 예시를 제공합니다. 이에 따라 빈도를 30/일 로 설정하고 다음(Next)를 클릭합니다.
- 대상 유형은 'AWS 서비스'를 선택하고 하위 드랍 다운 메뉴에서 'Lambda 함수'를 선택합니다. 그리고 앞선 단계 2에서 생성한 Lambda 함수를 선택하고 다음(Next)를 클릭합니다.
- 다음(Next)를 클릭합니다.
- 규칙 생성(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