

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

# カスタム App Blocks
<a name="custom-app-blocks"></a>

Elastic フリートストリーミングインスタンスは、アカウントの Amazon S3 バケットに保存されている仮想ハードディスク (VHD) ファイルにインストールされたアプリケーションを利用します。カスタムパッケージを使用した App Block では、独自の VHD ファイルを自由に作成でき、その App Block をアカウント内の Amazon S3 バケットにアップロードできます。

**Topics**
+ [VHD を作成する](create-vhd.md)
+ [Amazon WorkSpaces アプリケーションで VHD のセットアップスクリプトを作成する](create-setup-script.md)
+ [カスタム App Block を作成する](create-app-block.md)
+ [App Block、VHD、およびセットアップスクリプトを更新する](update-app-block.md)

# VHD を作成する
<a name="create-vhd"></a>

VHD は、オペレーティングシステムにマウントされると、ハードディスクのように扱われる単一のファイルです。VHD は、ドライブ文字としてマウントする、フォルダパスにマウントする、またはそれらの両方にマウントできます。VHD がマウントされると、他のハードディスクと同様に扱うことが可能になり、これには VHD へのユーザーに必要となるアプリケーションのインストールやファイルのコピーが含まれます。

App Block を作成するには、VHD を作成し、それにアプリケーションをインストールしてから、デタッチする必要があります。デタッチすると、別の PC、EC2 インスタンス、または WorkSpaces Applications Image Builder で VHD をテストして、アプリケーションが期待どおりに動作することを検証できます。それが完了したら、アカウント内の Amazon S3 バケットにアップロードして、App Block を作成します。

**注記**  
このページでは、VHD を使用してアプリケーションを配信する方法について説明します。ただし、WorkSpaces アプリケーションストリーミングインスタンスは Amazon S3 からオブジェクトをダウンロードします。Amazon S3 に保存するオブジェクトは、zip ファイル、アプリケーションインストーラー、またはアプリケーションの実行可能ファイル自体でもかまいません。セットアップスクリプトを使用して、ユーザーがアプリケーションを起動する前に、ストリーミングインスタンスで正しく設定することができます。  
WorkSpaces アプリケーションストリーミングインスタンスは、セットアップスクリプトが実行される前に VHD のダウンロードが完了するまで最大 120 秒待機します。VHD がこの期間内にダウンロードを完了しない場合、ダウンロードは停止し、セットアップスクリプトは実行されません。  
VHD の最大サイズは 1.5 ギガバイトにすることをお勧めします。圧縮することで、VHDのサイズを小さくできる可能性があります。このファイルをマウントし、アプリケーションを起動する前に、ファイルを Amazon S3 から完全にダウンロードしておく必要があるため、セットアップスクリプトを使用して、このファイルを解凍しておく必要があります。VHD のサイズが大きいほど、アプリケーションの起動とストリーミングセッションの開始にかかる時間が長くなります。

**Microsoft Windows 用の VHD を作成する**

1. Windows PC または Windows Amazon Elastic Compute Cloud (Amazon EC2) インスタンスから、管理者権限を使用してコマンドプロンプトを開きます。

1. 以下のコマンドを入力して、Microsoft **diskpart** ユーティリティを起動します。

   **diskpart**

1. 以下のコマンドを入力して、フォーマット化と初期化が行われていない VHD ファイルを作成します。ここでの *<maximum file size>* は、VHD ファイルのサイズ (MB 単位) です。

   **create vdisk file=C:\$1path\$1to\$1new\$1file.vhdx maximum=*<maximum file size>* type=expandable **

1. 以下のコマンドを入力して、新しく作成された VHD を選択します。

   **select vdisk file=C:\$1path\$1to\$1new\$1file.vhdx**

1. 以下のコマンドを入力して、新しく作成された VHD をアタッチします。

   **attach vdisk**

1. 以下のコマンドを入力して、新しく作成された VHD を初期化します。

   **convert mbr**

1. 以下のコマンドを入力して、VHD 全体にまたがるプライマリパーティションを作成します。

   **create partition primary**

1. 以下のコマンドを入力して、新しく作成されたパーティションをフォーマットします。

   **format fs=ntfs quick**

1. 新しく作成された VHD は、未使用のドライブ文字、ルートボリューム上のフォルダパス、またはそれらの両方にマウントできます。

   ドライブ文字をマウントするには、**assign letter=*<unused drive letter>*** を入力します。

   フォルダをマウントするには、**assign mount=*C:\$1path\$1to\$1empty\$1folder\$1to\$1mount\$1*** を入力します。
**注記**  
フォルダパスにマウントするには、フォルダがすでに存在し、空である必要があります。

1. これで、ステップ 9 で選択したドライブ文字またはフォルダマウントパスを使用して、アプリケーションを VHD にインストールできるようになりました。

VHD へのアプリケーションのインストールが完了したら、Amazon S3 バケットに安全にアップロードする前に、VHD をデタッチする必要があります。

**Microsoft Windows 用の VHD をデタッチする**

1. 以下のコマンドを入力して、Microsoft diskpart ユーティリティを起動します。

   **diskpart**

1. 以下のコマンドを入力して、VHD を選択します。

   **select vdisk file=*C:\$1path\$1to\$1new\$1file.vhdx***

1. 以下のコマンドを入力して、VHD をデタッチします。

   **detach vdisk**

1. VHD がデタッチされ、別の Windows PC、Amazon EC2 インスタンス、または WorkSpaces Applications Image Builder でテストできるようになりました。

**Linux 用の VHD を作成する**

1. ターミナルを開きます。
   + Amazon Linux 2 の場合: EC2 インスタンス、WorkSpaces Applications Image Builder、または Amazon Linux 2 を搭載した WorkSpaces を使用する
   + Ubuntu Pro 24.04 LTS の場合: EC2 インスタンスまたは Ubuntu Pro を搭載した WorkSpaces を使用します。

1. フォーマット化および初期化が行われていない VHD ファイルを作成します。

   **dd if=/dev/zero of=*<name of file>* bs=*<size of VHD>* count=1**

1. 以下のコマンドを入力して、作成された VHD にファイルシステムを追加します。

   **sudo mkfs -t ext4 *<name of file>***
**注記**  
ファイルがブロックスペシャルデバイスではないというメッセージが表示される場合があります。そのまま続行することを選択できます。

1. 以下のコマンドを入力して、マウントポイント用に使用する空のフォルダを作成します。

   **sudo mkdir */path/to/mount/point***

1. 以下のコマンドを実行して、新しく作成された VHD をファイルシステムパスにマウントします。

   **sudo mount -t auto -o loop *<name of file>* */path/to/mount/point***

1. これで、ステップ 4 で選択したフォルダマウントパスを使用して、アプリケーションを VHD にインストールできるようになりました。
**注記**  
VHD で作成されたファイルとフォルダに対するデフォルトの許可は、管理者以外のユーザーによるアプリケーションの起動やファイルの読み取りを防ぐことができます。許可を検証し、必要に応じて変更します。

VHD へのアプリケーションのインストールが完了したら、Amazon S3 バケットに安全にアップロードする前に、VHD をデタッチする必要があります。

**Linux 用の VHD をデタッチする**

1. ターミナルセッションを開き、以下のコマンドを入力します。

   **sudo umount */path/to/mount/point***

1. VHD はデタッチされ、別の Amazon Linux 2/Ubuntu Pro 24.04 LTS Amazon EC2 インスタンス、Amazon Linux 2 WorkSpaces Applications Image Builder、または Amazon Linux 2/Ubuntu WorkSpaces Personal でテストできるようになりました。

# Amazon WorkSpaces アプリケーションで VHD のセットアップスクリプトを作成する
<a name="create-setup-script"></a>

WorkSpaces Applications は、アプリケーションの起動前に指定したセットアップスクリプトを使用して VHD をマウントします。セットアップスクリプトは、アプリケーションを動作させるために必要なその他のタスクを完了するために使用することもできます。例えば、レジストリキーの設定、DLL の登録、前提条件の管理、またはセットアップスクリプトからのユーザープロファイルの変更を行うことができます。WorkSpaces Applications には、VHD のマウントに使用できるスクリプト例が用意されています。これらのスクリプトは、お使いの VHD とアプリケーションのニーズに合わせて変更する必要があります。

**注記**  
WorkSpaces Applications パッケージングのアプリケーションブロックには、セットアップスクリプトは必要ありません。ただし、オプションでセットアップ後のスクリプトを使用することで、アプリケーションのインストールをカスタマイズできます。

サンプルスクリプトをダウンロードするには、次のリンクを使用します。
+ [Ubuntu Pro 24.04 LTS および Amazon Linux 2 bash スクリプト](samples/Linux-mount-vhd-script2.zip)
+ [Microsoft Windows PowerShell スクリプト](samples/Windows-mount-vhd-script3.zip)
**注記**  
WorkSpaces アプリケーションと Microsoft Windows オペレーティングシステムは、ドライブ文字 A から E を予約します。これらのドライブ文字に VHDsやネットワーク共有をマウントしないでください。

WorkSpaces Applications は、セットアップスクリプトと VHD をフリートストリーミングインスタンスのディレクトリにダウンロードし、セットアップスクリプトを実行します。セットアップスクリプトは、完全な管理者権限を用いてオペレーティングシステム上で実行されます。セットアップスクリプトは、Microsoft Windows の`SYSTEM`コンテキストで実行され、Amazon Linux 2 または Ubuntu Pro 24.04 LTS の`root`ユーザーとして実行されます。

VHD とセットアップスクリプトのファイルシステムの場所は以下のとおりです。
+ Ubuntu Pro 24.04 LTS: 

  `/opt/appstream/AppBlocks/appblock-name/`  
**`appblock-name` **  
VHD とセットアップスクリプトに対応する App Block の名前です。
+ Amazon Linux 2: 

  `/opt/appstream/AppBlocks/appblock-name/`  
**`appblock-name` **  
VHD とセットアップスクリプトに対応する App Block の名前です。
+ Microsoft Windows:

  `C:\AppStream\AppBlocks\appblock-name\`  
**`appblock-name` **  
VHD とセットアップスクリプトに対応する App Block の名前です。

WorkSpaces Applications は、オブジェクト上のファイル名をそのまま維持します。例えば、App Block の名前が `MyApps` で、`apps.vhd` という名前の VHD と `mount-apps.ps1` という名前のセットアップスクリプトがある場合、Windows ストリーミングインスタンス上のフルパスは以下のようになります。
+ VHD

  `C:\AppStream\AppBlocks\MyApps\apps.vhd`
+ セットアップスクリプト

  `C:\AppStream\AppBlocks\MyApps\mount-apps.ps1`

WorkSpaces Applications は、フリートストリーミングインスタンスで実行されたときにセットアップスクリプトから標準エラーと標準出力をキャプチャし、アカウント内の Amazon S3 バケットに出力をアップロードします。これらのログを使用して、セットアップスクリプトで発生する可能性のある問題を特定し、解決することができます。バケットは、以下にあるような特定の形式で命名されます。

```
appstream-logs-region-code-account-id-without-hyphens-random-identifier
```

**`region-code` **  
これは、Elastic フリートが作成される AWS リージョンコードです。

**`account-id-without-hyphens` **  
 AWS アカウント識別子。ランダムな ID は、そのリージョン内のその他バケットとの競合が発生しないことを確実にします。バケット名の最初の部分である appstream-logs は、アカウントおよびリージョンに応じて変化するものではありません。

たとえば、アカウント番号 123456789012 で米国西部 (オレゴン) リージョン (us-west-2) に Elastic フリートを作成すると、WorkSpaces Applications は、表示された名前でそのリージョンのアカウント内に Amazon S3 バケットを作成します。適切なアクセス許可を持つ管理者のみが、このバケットを削除できます。

```
appstream-logs-us-west-2-1234567890123-abcdefg
```

アカウントの S3 バケットでログファイルが保存されているフォルダへのパスは、以下の構造になります。

```
bucket-name/fleet-name/instance-id/appblock-name/
```

**`bucket-name` **  
セッションスクリプトログが保存されている Amazon S3 バケットの名前です。名前の形式については、このセクションで先ほど説明しました。

**`Instance-id` **  
セットアップスクリプトが実行されたストリーミングインスタンスの一意の識別子です。

**`appblock-name` **  
セットアップスクリプトに対応する App Block の名前です。

以下のフォルダ構造の例は、`test-fleet` で始まるストリーミングセッションに該当します。セッションの AWS アカウント ID は 123456789012 で、アプリケーションブロック名は米国西部 (オレゴン) リージョン (us-west-2) の testappblock です。

`appstream-logs-us-west-2-1234567890123-abcdefg/test-fleet/i-084427ab4a1cff7f5/testappblock/`

このフォルダ構造の例には、標準出力用のログファイルが 1 つ、および標準エラー用のログファイルが 1 つ含まれています。

**Topics**
+ [Amazon WorkSpaces アプリケーションでのアプリケーションブロック設定スクリプトの実行](script-execution.md)

# Amazon WorkSpaces アプリケーションでのアプリケーションブロック設定スクリプトの実行
<a name="script-execution"></a>

以下の図は、セットアップスクリプトがプロセスのどこで実行されるかを示しています。実行順序は、Elastic フリートに関連付けられたスタックでアプリケーション設定の永続化が有効になっているかどうかに応じて異なります。

**注記**  
WorkSpaces Applications は VPC の詳細を使用して、Amazon S3 バケットから VHD とセットアップスクリプトをダウンロードします。VPC は Amazon S3 バケットに対するアクセス権を提供する必要があります。詳細については、「[WorkSpaces アプリケーションの機能に Amazon S3 VPC エンドポイントを使用する WorkSpaces](managing-network-vpce-iam-policy.md)」を参照してください。

アプリケーション設定の永続化が有効:

![\[アプリケーション設定の永続化が有効化されています。\]](http://docs.aws.amazon.com/ja_jp/appstream2/latest/developerguide/images/app-settings-enabled.png)


アプリケーション設定の永続化が無効:

![\[アプリケーション設定の永続化が無効化されています。\]](http://docs.aws.amazon.com/ja_jp/appstream2/latest/developerguide/images/app-settings-disabled.png)


# カスタム App Block を作成する
<a name="create-app-block"></a>

VHD とセットアップスクリプトを作成して の S3 バケットにアップロードしたら、WorkSpaces アプリケーションコンソールを使用してアプリケーションブロックリソースを作成できます AWS アカウント。Amazon S3 バケットでの VHD とセットアップスクリプトの保存に関する詳細については、[S3 バケットにアプリケーションアイコン、セットアップスクリプト、セッションスクリプト、および VHD を保存する](store-s3-bucket.md) を参照してください。

**注記**  
App Block リソースを作成するには、Amazon S3 バケット内の VHD オブジェクトとセットアップスクリプトオブジェクトで `S3:GetObject` アクションを実行するための IAM 許可が必要です。

**App Block リソースを作成する**

1. [https://console.aws.amazon.com/appstream2](https://console.aws.amazon.com/appstream2) で WorkSpaces アプリケーションコンソールを開きます。

1. 左側のナビゲーションメニューから、**[Applications]** (アプリケーション)、**[App Block]**、**[Create app block]** (App Block を作成する) の順にクリックします。

1. App Block パッケージの場合は、**[カスタム]** を選択します。

1. **[App block details]** (App Blockの詳細情報) に、App Block 用の一意の名前識別子を入力します。オプションで、以下を指定することもできます。
   + **[Display name]** (表示名) – App Block のフレンドリー名です。
   + **[Description]** (説明) – App Block の説明です。

1. **[Script settings]** (スクリプト設定) にある **[Virtual hard disk object in S3]** (S3 内の仮想ハードディスクオブジェクト) では、VHD オブジェクトを表す S3 URI を入力するか、**[Browse S3]** (S3 を参照する) をクリックして S3 バケットに移動し、VHD オブジェクトを見つけます。

1. **[Script settings]** (スクリプト設定) にある **[Setup script object in S3]** (S3 内のセットアップスクリプトオブジェクト) では、セットアップスクリプトオブジェクトを表す S3 URI を入力するか、**[Browse S3]** (S3 を参照する) をクリックして S3 バケットに移動し、セットアップスクリプトオブジェクトを見つけます。

1. **[Script settings]** (スクリプト設定) にある **[Setup script executable]** (セットアップスクリプト実行可能ファイル) には、セットアップスクリプトに必要な実行可能ファイルを入力します。
**注記**  
セットアップスクリプトが直接実行できる場合は、セットアップスクリプトのファイル名を入力します。セットアップスクリプトが、実行において別の実行可能ファイル (Microsoft PowerShell など) に依存する場合は、その実行可能ファイルへのパスを入力します。  
Microsoft Windows 上の Microsoft PowerShell へのパス  
`C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe`

1. オプションで、**[Script settings]** (スクリプト設定) にある **[Setup script executable arguments]** (セットアップスクリプト実行可能ファイルの引数) に、セットアップスクリプトを実行するためにセットアップスクリプト実行可能ファイルに提供する必要がある引数を入力します。
**注記**  
Microsoft PowerShell スクリプトを使用している場合は、「-File」パラメータには、セットアップスクリプトの名前を実行可能な引数として指定する必要があります。また、実行ポリシーがスクリプトの実行を許可することを確認してください。詳細については、[about\$1Execution\$1Policies](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.2) と [PowerShell とは](https://docs.microsoft.com/en-us/powershell/scripting/overview?view=powershell-7.2)を参照してください。

1. **[Script settings]** (スクリプト設定) にある **[Execution duration in seconds]** (実行時間 (秒単位)) には、セットアップスクリプトのタイムアウト時間を入力します。
**注記**  
秒単位の実行期間は、WorkSpaces アプリケーションがセットアップスクリプトの実行を待機してから続行する時間です。セットアップスクリプトがこの時間内に完了しない場合は、ユーザーにエラーが表示され、アプリケーションの起動が試行されます。実行時間経過後、セットアップスクリプトを終了します。

1. (オプション) **[Tags]** (タグ) で、App Block リソース用のタグを作成します。

1. 入力した情報を確認して、**[Create]** (作成) をクリックします。

1. App Block が正常に作成された場合は、コンソールの上部に成功メッセージが表示されます。エラーが発生した場合は、説明的なエラーメッセージが表示されるので、App Block を再度作成する必要があります。

# App Block、VHD、およびセットアップスクリプトを更新する
<a name="update-app-block"></a>

App Block リソースはイミュータブルで、作成後に変更することはできません。VHD またはセットアップスクリプトに対して下位互換性のある更新を行う必要がある場合は、ファイルの新しいバージョンを Amazon S3 バケットにアップロードして、現在のバージョンを上書きすることをお勧めします。新しい Elastic フリートのストリーミングセッションは、オブジェクトの最新バージョンをダウンロードして、それらを使用します。

VHD またはセットアップスクリプトに対して下位互換性のない更新を行う必要がある場合は、それらを新しいオブジェクトとして Amazon S3 バケットにアップロードして、新しい App Block とアプリケーションリソースを作成することをお勧めします。そうすることで、ユーザーへのデプロイを変更時間枠またはその他停止の一環として管理することができます。