セッションスクリプトを使用してユーザーのストリーミングエクスペリエンスを管理する - Amazon WorkSpaces

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

セッションスクリプトを使用してユーザーのストリーミングエクスペリエンスを管理する

WorkSpaces プールはインスタンスセッションスクリプトを提供します。ユーザーのストリーミングセッションで特定のイベントが発生したときに、これらのスクリプトを使用して独自のカスタムスクリプトを実行できます。例えば、カスタムスクリプトを使用して、ユーザーのストリーミングセッションを開始する前に WorkSpaces プール環境を準備できます。ユーザーがストリーミングセッションを完了した後に、カスタムスクリプトを使用してストリーミングインスタンスをクリーンアップすることもできます。

セッションスクリプトは WorkSpace イメージ内で指定されます。これらのスクリプトはユーザーコンテキストまたはシステムコンテキスト内で実行されます。セッションスクリプトが情報、エラー、またはデバッグメッセージの書き込みに標準出力を使用する場合は、オプションで、それらを Amazon Web Services アカウント内の Amazon S3 バケットに保存することができます。

ストリーミングセッションの開始前にスクリプトを実行する

ユーザーのアプリケーションが起動されてストリーミングセッションが開始されるまでに最大 60 秒間実行されるようにスクリプトを設定できます。これにより、ユーザーがアプリケーションのストリーミングを開始する前に WorkSpaces 、プール環境をカスタマイズできます。セッションスクリプトが実行されると、読み込みスピナーがユーザーに表示されます。スクリプトが正常に完了するか、最大待機時間が経過すると、ユーザーのストリーミングセッションが開始されます。スクリプトが正常に完了しなかった場合は、エラーメッセージがユーザーに表示されます。ただし、ユーザーはストリーミングセッションの使用を禁止されません。

Windows インスタンスでファイル名を指定するときは、ダブルバックスラッシュを使用する必要があります。例えば、次のようになります。

C:\\Scripts\\Myscript.bat

ダブルバックスラッシュを使用しない場合、.jsonファイルが正しくフォーマットされていないことを通知するエラーが表示されます。

注記

スクリプトは正常に完了したら、値 0 を返します。スクリプトが 0 以外の値を返す場合、 はエラーメッセージをユーザーに WorkSpaces 表示します。

ストリーミングセッションを開始する前にスクリプトを実行すると、次のプロセスが発生します。

  1. ユーザーは、ドメインに参加していない WorkSpaces プール WorkSpace 内の に接続します。2.0 SAML を使用して接続します。

  2. 以下のいずれかのプロセスが発生します。

    • ユーザーに対してアプリケーション設定の永続化が有効になっている場合、ユーザーのカスタマイズと Windows 設定を保存するアプリケーション設定 Virtual Hard Disk (VHD) ファイルをダウンロードしてマウントします。この場合は、Windows ユーザーのログインが必要です。

      アプリケーション設定の永続化については、 WorkSpaces プールユーザーのアプリケーション設定の永続化を有効にする を参照してください。

    • アプリケーション設定の永続化が有効になっていない場合、Windows ユーザーはすでにログインしています。

  3. セッションスクリプトが起動されます。ユーザーに対して永続的ストレージが有効になっている場合は、ストレージコネクタのマウントも開始されます。永続的ストレージについては、 WorkSpaces プールの永続ストレージの有効化と管理 を参照してください。

    注記

    ストリーミングセッションを開始するためにストレージコネクタのマウントを完了する必要はありません。セッションスクリプトが完了したとき、まだストレージコネクタのマウントが完了していなくても、ストリーミングセッションは開始されます。

    ストレージコネクタのマウント状況のモニタリングについては、セッションスクリプトで永続ストレージを使用する を参照してください。

  4. セッションスクリプトは完了するかタイムアウトします。

  5. ユーザーのストリーミングセッションが開始されます。

ストリーミングセッションの終了後にスクリプトを実行する

ユーザーのストリーミングセッションの終了後にスクリプトを実行するように設定することもできます。例えば、ユーザーが WorkSpaces クライアントツールバーからセッションの終了を選択した場合や、セッションの最大許容期間に達した場合にスクリプトを実行できます。これらのセッションスクリプトを使用して、ストリーミングインスタンスが終了する前に環境をクリーンアップすることもできます WorkSpaces。たとえば、スクリプトを使用してファイルロックを解除したり、ログファイルをアップロードしたりできます。ストリーミングセッションの終了後にスクリプトを実行すると、以下のプロセスが発生します。

  1. ユーザーの WorkSpaces ストリーミングセッションは終了します。

  2. セッション終了スクリプトが起動されます。

  3. セッション終了スクリプトが完了またはタイムアウトします。

  4. Windows ユーザーのログアウトが発生します。

  5. 以下のうち該当する一方が実行されるか、両方が同時に実行されます。

    • ユーザーに対してアプリケーション設定の永続化が有効になっている場合、ユーザーのカスタマイズと Windows 設定を保存するアプリケーション設定VHDファイルはアンマウントされ、アカウントの Amazon S3 バケットにアップロードされます。

    • ユーザーに対して永続的ストレージが有効になっている場合、ストレージコネクタは最後の同期を完了し、マウント解除されます。

  6. WorkSpace は終了します。

セッションスクリプトを作成および指定する

WorkSpaces プール WorkSpaces で のセッションスクリプトを作成して指定するには、次の手順を実行します。

  1. カスタムイメージ WorkSpace を作成する Windows に接続します。

  2. C:\AWSEUC\SessionScripts に移動し、config.json 設定ファイルを開きます。

    セッションスクリプトパラメータについては、セッションスクリプト設定ファイル を参照してください。

  3. 変更が終了したら、config.json ファイルを保存して閉じます。

  4. からイメージを作成する手順を完了します WorkSpace。詳細については、「 WorkSpaces プールのカスタムイメージとバンドルを作成する」を参照してください。

セッションスクリプト設定ファイル

Windows インスタンスでセッションスクリプト設定ファイルを見つけるには、 に移動します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

オブジェクトの名前に基づいて該当するセッションイベントで実行するセッションスクリプト。

: 文字列

必須: いいえ

使用できる値: SessionStartSessionTermination

WaitingTime

セッションスクリプトの最大期間 (秒単位)。

タイプ: 整数

必須: いいえ

制約: 最大期間は 60 秒です。セッションスクリプトは、この期間内に完了しない場合、停止されます。スクリプトを引き続き実行する必要がある場合は、別のプロセスとして起動してください。

Executables

実行するセッションスクリプトの詳細。

: 文字列

必須: はい

制約: セッションイベントごとに実行できるスクリプトの最大数は 2 です (1 つはユーザーコンテキスト用、もう 1 つはシステムコンテキスト用)。

Context

セッションスクリプトを実行するコンテキスト。

: 文字列

必須: はい

使用できる値: usersystem

Filename

実行するセッションスクリプトへの完全パス。このパラメータを指定しない場合、セッションスクリプトは実行されません。

: 文字列

必須: いいえ

制約: ファイル名と完全パスの最大長は 1,000 文字です。

使用できる値: .bat.exe.sh

注記

Windows PowerShell ファイルを使用することもできます。詳細については、「Windows PowerShell ファイルの使用」を参照してください。

Arguments

セッションスクリプトまたは実行可能ファイルの引数。

: 文字列

必須: いいえ

長さの制限: 最大長は 1,000 文字です。

S3LogEnabled

このパラメータの値が True に設定されていると、セッションスクリプトによって作成されたログを保存するための S3 バケットが Amazon Web Services アカウント内に作成されます。デフォルトでは、この値は True に設定されます。詳細については、このトピックの後半の「セッションスクリプト出力のログ記録」セクションを参照してください。

タイプ: ブール

必須: いいえ

使用できる値: TrueFalse

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 Pool は標準出力に書き込まれたセッションスクリプトからの出力を自動的にキャプチャします。この出力はアカウントの Amazon S3 バケットにアップロードされます。トラブルシューティングやデバッグの目的でログファイルを確認できます。

注記

ログファイルは、セッションスクリプトが値を返したときか、WaitingTime に設定された時間を経過したときの、どちらか早いほうでアップロードされます。

セッションスクリプトで永続ストレージを使用する

永 WorkSpaces 続ストレージを有効にすると、セッション開始スクリプトの実行時にストレージのマウントが開始されます。スクリプトがマウントされている永続的ストレージに依存している場合は、コネクタが使用可能になるまで待つことができます。 は WorkSpaces、Windows の Windows レジストリのストレージコネクタのマウントステータスを次のキーで WorkSpaces 維持します。

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

レジストリキーの値は以下のとおりです。

  • 提供されたユーザー名 — アクセスモードで提供されたユーザー ID。アクセスモードと各モードの値は以下のとおりです。

    • ユーザープール — ユーザーの E メールアドレス。

    • ストリーミング URL — UserID

    • SAML — NameID 。ユーザー名にスラッシュ (ドメインユーザーの などSAMAccountName) が含まれている場合、スラッシュは「-」文字に置き換えられます。

  • ストレージコネクタ — ユーザーに対して有効になっている永続的ストレージオプションに対応するコネクタ。ストレージコネクタの値は以下のとおりです。

    • HomeFolder

各ストレージコネクタレジストリキーには MountStatusDWORD値が含まれています。次の表に、 に指定できる値を示しますMountStatus

注記

これらのレジストリキーを表示するには、Microsoft が必要です。NET イメージにインストールされているフレームワークバージョン 4.7.2 以降。

説明
0

ストレージコネクタはこのユーザーに対して有効になっていない

1

ストレージコネクタのマウントが進行中

2

ストレージコネクタのマウントに成功した

3

ストレージコネクタのマウントに失敗した

4

ストレージコネクタのマウントは有効ですが、まだマウントされていません

セッションスクリプトログに対して Amazon S3 バケットストレージを有効にする

セッションスクリプト設定で Amazon S3 ログ記録を有効にすると、 WorkSpaces Pool はセッションスクリプトからの標準出力をキャプチャします。出力は、Amazon Web Services アカウント内の S3 バケットに定期的にアップロードされます。すべての AWS リージョンについて、 WorkSpaces プールはアカウントとリージョンに固有のバケットをアカウントに作成します。

これらの S3 バケットを管理するための設定タスクを実行する必要はありません。これらは WorkSpaces サービスによって完全に管理されます。各バケットに保存されているログファイルは、Amazon S3 のSSLエンドポイントを使用して転送中に暗号化され、Amazon S3-managed暗号化キーを使用して保管時に暗号化されます。バケットは、以下にあるような特定の形式で命名されます。

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

これは、セッションスクリプトログに対して Amazon S3 バケットストレージを有効にして WorkSpaces プールを作成する AWS リージョンコードです。

<account-id-without-hyphens>

ご自身の Amazon Web Services アカウント ID ランダムな ID は、そのリージョン内のその他バケットとの競合が発生しないことを確実にします。バケット名の最初の部分 appstream-logs は、複数のアカウントやリージョンにまたがる場合でも変更されません。

例えば、アカウント番号 の米国西部 (オレゴン) リージョン (us-west-2) のイメージでセッションスクリプトを指定すると123456789012、 WorkSpaces Pool は表示された名前でそのリージョンのアカウント内に 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 プールの名前。

<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 から始まるストリーミングセッションに当てはまります。セッションではtestuser@mydomain.com、ユーザー ID APIの 、 の AWS アカウント ID123456789012、および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/

このフォルダ構造の例には、ユーザーコンテキストセッション開始スクリプト用の 1 つのログファイルと、必要に応じてシステムコンテキストセッション開始スクリプト用の 1 つのログファイルが含まれています。