세션 스크립트를 사용하여 사용자의 스트리밍 환경 관리 - Amazon WorkSpaces

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

세션 스크립트를 사용하여 사용자의 스트리밍 환경 관리

WorkSpaces Pools는 인스턴스상 세션 스크립트를 제공합니다. 이러한 스크립트를 사용하여 사용자의 스트리밍 세션에서 특정 이벤트가 발생했을 때 자체 사용자 지정 스크립트를 실행할 수 있습니다. 예를 들어 사용자 지정 스크립트를 사용하여 사용자의 스트리밍 세션이 시작되기 전에 WorkSpaces Pools 환경을 준비할 수 있습니다. 또한 사용자 지정 스크립트를 사용하여 사용자가 스트리밍 세션을 완료한 후 스트리밍 인스턴스를 정리할 수도 있습니다.

세션 스크립트는 WorkSpace 이미지 내에 지정됩니다. 이러한 스크립트는 사용자 컨텍스트 또는 시스템 컨텍스트 내에서 실행됩니다. 세션 스크립트가 표준 출력을 사용하여 정보, 오류 또는 디버깅 메시징을 쓰는 경우, Amazon Web Services 계정 내의 Amazon S3 버킷에 이러한 것을 저장할 수도 있습니다.

스트리밍 세션이 시작되기 전에 스크립트 실행

사용자의 애플리케이션이 시작되고 스트리밍 세션이 시작되기 전에 최대 60초 동안 스크립트가 실행되도록 구성할 수 있습니다. 그렇게 하면 사용자가 애플리케이션 스트리밍을 시작하기 전에 WorkSpaces Pools 환경을 사용자 지정할 수 있습니다. 세션 스크립트가 실행되면 사용자에게 로딩 회전자가 표시됩니다. 스크립트가 성공적으로 완료되거나 최대 대기 시간이 경과하면, 사용자의 스트리밍 세션이 시작됩니다. 스크립트가 성공적으로 완료되지 않은 경우 사용자에게 오류 메시지가 표시됩니다. 그러나 사용자의 스트리밍 세션 사용이 방해되지는 않습니다.

Windows 인스턴스에서 파일 이름을 지정할 때 이중 백슬래시를 사용해야 합니다. 예:

C:\\Scripts\\Myscript.bat

이중 백슬래시를 사용하지 않으면 .json 파일이 잘못 포맷되었다는 오류가 표시됩니다.

참고

스크립트가 성공적으로 완료되면 스크립트는 값 0을 반환합니다. 스크립트가 0 이외의 값을 반환하면, WorkSpaces가 사용자에게 오류 메시지를 표시합니다.

스트리밍 세션이 시작되기 전에 스크립트를 실행하면, 다음 프로세스가 발생합니다.

  1. 사용자가 도메인에 조인되지 않은 WorkSpaces Pools의 WorkSpaces에 연결합니다. SAML 2.0을 사용하여 연결합니다.

  2. 다음 중 하나가 발생합니다.

    • 사용자에게 애플리케이션 설정 지속성이 활성화된 경우, 사용자의 사용자 지정 및 Windows 설정을 저장하는 애플리케이션 설정 VHD(가상 하드 디스크) 파일이 다운로드 및 탑재됩니다. 이 경우 Windows 사용자 로그인이 필요합니다.

      애플리케이션 설정 지속성에 대한 자세한 내용은 WorkSpaces Pools 사용자에 대한 애플리케이션 설정 지속성 활성화 섹션을 참조하세요.

    • 애플리케이션 설정 지속성이 활성화되지 않은 경우, Windows 사용자가 이미 로그인한 것입니다.

  3. 세션 스크립트가 시작됩니다. 사용자에게 영구 스토리지가 활성화된 경우, 스토리지 커넥터 탑재도 시작됩니다. 영구 스토리지에 대한 자세한 내용은 WorkSpaces Pools에 대한 영구 스토리지 활성화 및 관리를 참조하세요.

    참고

    스트리밍 세션을 시작하기 위해 스토리지 커넥터 탑재를 완료할 필요는 없습니다. 스토리지 커넥터 탑재가 완료되기 전에 세션 스크립트가 완료되면, 스트리밍 세션이 시작됩니다.

    스토리지 커넥터의 장착 상태 모니터링에 대한 자세한 내용은 세션 스크립트와 함께 영구 스토리지 사용 섹션을 참조하세요.

  4. 세션 스크립트가 완료되거나 시간 초과됩니다.

  5. 사용자의 스트리밍 세션이 시작됩니다.

스트리밍 세션이 종료된 후 스크립트 실행

사용자의 스트리밍 세션이 종료된 후 스크립트가 실행되도록 구성할 수도 있습니다. 예를 들어, 사용자가 WorkSpaces 클라이언트 도구 모음에서 세션 종료를 선택하거나 세션에 허용된 최대 지속 시간에 도달했을 때 스크립트를 실행할 수 있습니다. 또한 이러한 세션 스크립트를 사용하여 스트리밍 인스턴스가 종료되기 전에 WorkSpaces 환경을 정리할 수도 있습니다. 예를 들어 스크립트를 사용하여 파일 잠금을 풀거나 로그 파일을 업로드할 수 있습니다. 스트리밍 세션이 종료된 후 스크립트를 실행하면, 다음 프로세스가 발생합니다.

  1. 사용자의 WorkSpaces 스트리밍 세션이 종료됩니다.

  2. 세션 종료 스크립트가 시작됩니다.

  3. 세션 종료 스크립트가 완료되거나 시간 초과됩니다.

  4. Windows 사용자 로그아웃이 발생합니다.

  5. 해당하는 경우 다음 중 하나 또는 둘 모두가 동시에 발생합니다.

    • 사용자에게 애플리케이션 설정 지속성이 활성화된 경우, 사용자의 사용자 지정 및 Windows 설정을 저장하는 애플리케이션 설정 VHD 파일이 탑재 해제되고 계정의 Amazon S3 버킷에 업로드됩니다.

    • 사용자에게 영구 스토리지가 활성화된 경우, 스토리지 커넥터가 최종 동기화를 완료하고 탑재 해제됩니다.

  6. WorkSpace가 종료됩니다.

세션 스크립트 생성 및 지정

다음 절차를 완료하여 WorkSpaces Pools에서 WorkSpaces에 대한 세션 스크립트를 만들고 지정합니다.

  1. 사용자 지정 이미지를 생성할 Windows WorkSpaces에 연결합니다.

  2. 디렉터리가 아직 없는 /AWSEUC/SessionScripts 경우 생성합니다.

  3. 세션 스크립트 구성 템플릿을 사용하여 구성 파일이 아직 없는 /AWSEUC/SessionScripts/config.json 경우 해당 파일을 생성합니다.

  4. C:\AWSEUC\SessionScripts로 이동하여 config.json 구성 파일을 엽니다.

    세션 스크립트 파라미터에 대한 자세한 내용은 세션 스크립트 구성 파일 섹션을 참조하세요.

  5. 변경을 완료한 후, config.json 파일을 저장하고 닫습니다.

  6. 단계를 완료하여 WorkSpace에서 이미지를 만듭니다. 자세한 내용은 WorkSpaces Pools용 사용자 지정 이미지 및 번들 만들기 섹션을 참조하세요.

세션 스크립트 구성 파일

Linux 인스턴스에서 세션 스크립트 구성 파일을 찾으려면 C:\AWSEUC\SessionScripts\config.json으로 이동하세요. 파일 형식은 다음과 같습니다.

참고

구성 파일은 .json 형식입니다. 이 파일에 입력하는 텍스트가 유효한 JSON 형식인지 확인합니다.

{ "SessionStart": { "executables": [ { "context": "system", "filename": "", "arguments": "", "s3LogEnabled": true }, { "context": "user", "filename": "", "arguments": "", "s3LogEnabled": true } ], "waitingTime": 30 }, "SessionTermination": { "executables": [ { "context": "system", "filename": "", "arguments": "", "s3LogEnabled": true }, { "context": "user", "filename": "", "arguments": "", "s3LogEnabled": true } ], "waitingTime": 30 } }

세션 스크립트 구성 파일에서 다음 파라미터를 사용할 수 있습니다.

SessionStart/SessionTermination

객체의 이름을 기반으로 적절한 세션 이벤트에서 실행할 세션 스크립트입니다.

유형: 문자열

필수 항목 여부: 아니요

허용된 값: SessionStart, SessionTermination

WaitingTime

세션 스크립트의 최대 기간(초)입니다.

유형: 정수

필수 항목 여부: 아니요

제약: 최대 지속 기간은 60초입니다. 세션 스크립트가 이 기간 내에 완료되지 않으면 중지됩니다. 스크립트를 계속 실행해야 하는 경우 별도의 프로세스로 시작하세요.

Executables

실행할 세션 스크립트에 대한 세부 정보입니다.

유형: 문자열

필수 항목 여부: 예

제약: 세션 이벤트당 실행할 수 있는 최대 스크립트 수는 2개입니다(사용자 컨텍스트용 하나와 시스템 컨텍스트용 하나).

Context

세션 스크립트를 실행할 컨텍스트입니다.

유형: 문자열

필수 항목 여부: 예

허용된 값: user, system

Filename

실행할 세션 스크립트의 전체 경로입니다. 이 파라미터가 지정되지 않은 경우, 세션 스크립트가 실행되지 않습니다.

유형: 문자열

필수 항목 여부: 아니요

제약: 파일 이름 및 전체 경로의 최대 길이는 1,000자입니다.

허용된 값: .bat, .exe, .sh

참고

Windows PowerShell 파일을 사용할 수도 있습니다. 자세한 내용은 Windows PowerShell 파일 사용 섹션을 참조하세요.

Arguments

세션 스크립트 또는 실행 파일의 인수입니다.

유형: 문자열

필수 항목 여부: 아니요

길이 제한: 최대 길이는 1,000자입니다.

S3LogEnabled

이 파라미터의 값이 True로 설정되어 있으면, 세션 스크립트가 생성하는 로그를 저장하기 위해 Amazon Web Services 계정 내에 S3 버킷이 생성됩니다. 기본적으로 이 값은 True로 설정됩니다. 자세한 내용은 이 주제 뒷부분의 세션 스크립트 출력 로깅 섹션을 참조하세요.

유형: 부울

필수 항목 여부: 아니요

허용된 값: True, False

Windows PowerShell 파일 사용

Windows PowerShell 파일을 사용하려면 filename 파라미터에서 PowerShell 파일의 전체 경로를 지정합니다.

"filename": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",

그런 다음 arguments 파라미터에서 세션 스크립트를 지정합니다.

"arguments": "-File \"C:\\path\\to\\session\\script.ps1\"",

마지막으로 PowerShell 실행 정책이 PowerShell 파일이 실행되도록 허용하는지 확인합니다.

세션 스크립트 출력 로깅

구성 파일에서 이 옵션이 활성화된 경우, WorkSpaces Pools는 표준 출력에 작성된 세션 스크립트에서 출력을 자동으로 캡처합니다. 이 출력은 계정의 Amazon S3 버킷에 업로드됩니다. 문제 해결 또는 디버깅을 위해 로그 파일을 검토할 수 있습니다.

참고

세션 스크립트가 값을 반환하거나 WaitingTime에 설정된 값이 경과되면 둘 중 더 빠른 시간을 기준으로 로그 파일이 업로드됩니다.

세션 스크립트와 함께 영구 스토리지 사용

WorkSpaces 영구 스토리지가 활성화되면 세션 시작 스크립트가 실행될 때 스토리지가 마운트되기 시작합니다. 스크립트가 마운트된 영구 스토리지를 사용하는 경우 커넥터를 사용할 수 있을 때까지 기다릴 수 있습니다. WorkSpaces는 Windows WorkSpaces의 Windows 레지스트리에 있는 스토리지 커넥터의 마운트 상태를 다음 키에서 유지합니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Amazon\AWSEUC\Storage\<provided user name>\<Storage connector>

레지스트리 키 값은 다음과 같습니다.

  • 제공된 사용자 이름 - 액세스 모드를 통해 제공되는 사용자 ID입니다. 액세스 모드와 각 모드의 값은 다음과 같습니다.

    • 사용자 풀 - 사용자의 이메일 주소입니다.

    • 스트리밍 URL - UserID입니다.

    • SAML - NameID입니다. 사용자 이름에 슬래시가 포함된 경우(예를 들어 도메인 사용자의 SAMAccountName), 슬래시는 "-" 문자로 대체됩니다.

  • 스토리지 커넥터 - 사용자가 사용할 수 있는 영구 스토리지 옵션용 커넥터입니다. 스토리지 커넥터 값은 다음과 같습니다.

    • HomeFolder

각 스토리지 커넥터 레지스트리 키에는 MountStatus DWORD 값이 포함되어 있습니다. 다음 표에는 MountStatus에 사용할 수 있는 값이 나와 있습니다.

참고

이러한 레지스트리 키를 보려면 Microsoft .NET Framework 버전 4.7.2 이상이 이미지에 설치되어 있어야 합니다.

설명
0

이 사용자에게 스토리지 커넥터가 활성화되어 있지 않음

1

스토리지 커넥터 탑재를 진행 중

2

스토리지 커넥터가 탑재됨

3

스토리지 커넥터 탑재에 실패함

4

스토리지 커넥터 탑재가 활성화되어 있지만 아직 탑재되지 않음

세션 스크립트 로그를 저장하기 위해 Amazon S3 버킷 스토리지 활성화

세션 스크립트 구성에서 Amazon S3 로깅을 활성화하면, WorkSpaces Pools가 세션 스크립트에서 표준 출력을 캡처합니다. 출력은 Amazon Web Services 계정 내 S3 버킷에 주기적으로 업로드됩니다. 모든 AWS 리전에 대해 WorkSpaces Pools는 계정 및 리전에 고유한 버킷을 계정에 생성합니다.

이러한 S3 버킷을 관리하기 위해 구성 작업을 수행하지 않아도 됩니다. WorkSpaces 서비스에서 모두 관리합니다. 각 버킷에 저장된 로그 파일은 전송 중에는 Amazon S3의 SSL 엔드포인트를 이용하고, 정지 상태일 때는 Amazon S3 관리형 암호화 키를 이용하여 암호화됩니다. 버킷의 이름은 다음과 같은 특정 형식으로 지정됩니다.

wspool-logs-<region-code>-<account-id-without-hyphens>-random-identifier
<region-code>

세션 스크립트 로그에 대해 활성화된 Amazon S3 버킷 스토리지를 사용하여 WorkSpaces Pools가 생성되는 AWS 리전 코드입니다.

<account-id-without-hyphens>

Amazon Web Services 계정 식별자입니다. 임의의 ID를 통해 해당 리전의 다른 버킷과 충돌이 없도록 보장합니다. 버킷 이름의 첫 번째 부분인 wspool-logs은 계정이나 리전 간에 변경되지 않습니다.

예를 들어 계정 번호 123456789012에서 미국 서부(오리건) 리전(us-west-2)의 이미지에 세션 스크립트를 지정하면, WorkSpaces Pools는 표시된 이름을 사용하여 해당 리전의 계정 내에 Amazon S3 버킷을 만듭니다. 충분한 권한이 있는 관리자만 이 버킷을 삭제할 수 있습니다.

wspool-logs-us-west-2-1234567890123-abcdefg

세션 스크립트를 비활성화해도 S3 버킷에 저장된 로그 파일이 삭제되지 않습니다. 로그 파일을 영구적으로 삭제하려면 사용자 또는 적절한 권한이 있는 다른 관리자가 Amazon S3 콘솔이나 API를 이용해 이를 수행해야 합니다. WorkSpaces Pools에는 실수로 버킷을 삭제하는 것을 방지하는 버킷 정책이 추가되었습니다.

세션 스크립트가 활성화되면 시작되는 각 스트리밍 세션에 고유한 폴더가 생성됩니다.

계정 내 S3 버킷에 로그 파일이 저장되는 폴더의 경로는 다음 구조를 사용합니다.

<bucket-name>/<stack-name>/<fleet-name>/<access-mode>/<user-id-SHA-256-hash>/<session-id>/SessionScriptsLogs/<session-event>
<bucket-name>

세션 스크립트가 저장되는 S3 버킷의 이름입니다. 이름 형식은 본 섹션의 앞부분에서 설명했습니다.

<stack-name>

세션이 시작된 스택 이름입니다.

<fleet-name>

세션 스크립트를 실행 중인 WorkSpaces Pools 이름입니다.

<access-mode>

사용자의 ID 메서드입니다. custom은 WorkSpaces API 또는 CLI용이며, federated는 SAML용, userpool은 사용자 풀의 사용자용입니다.

<user-id-SHA-256-hash>

사용자별 폴더 이름입니다. 이 이름은 사용자 식별자에서 생성한 소문자 SHA-256 해시 16진법 문자열을 이용해 생성됩니다.

<session-id>

사용자의 스트리밍 세션의 식별자입니다. 각 사용자 스트리밍 세션은 고유한 ID를 생성합니다.

<session-event>

세션 스크립트 로그를 생성한 이벤트입니다. 이벤트 값은 SessionStartSessionTermination입니다.

다음 폴더 구조 예는 test-stack 및 test-fleet에서 시작된 스트리밍 세션에 적용됩니다. 세션은 ID가 testuser@mydomain.com인 사용자 AWS 계정 ID의 API123456789012와 미국 서부(오레곤) 리전()test-stack의 설정 그룹을 사용합니다.us-west-2

wspool-logs-us-west-2-1234567890123-abcdefg/test-stack/test-fleet/custom/a0bcb1da11f480d9b5b3e90f91243143eac04cfccfbdc777e740fab628a1cd13/05yd1391-4805-3da6-f498-76f5x6746016/SessionScriptsLogs/SessionStart/

이 폴더 구조 예에는 사용자 컨텍스트 세션 시작 스크립트용 로그 파일 하나와, 시스템 컨텍스트 세션 시작 스크립트용 로그 파일 하나가 포함되어 있습니다(해당하는 경우).