

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 自訂應用程式區塊
<a name="custom-app-blocks"></a>

彈性機群串流執行個體會利用安裝在您帳戶中 Amazon S3 儲存貯體內的虛擬硬碟 (VHD) 檔案上的應用程式。使用自訂封裝的應用程式區塊可讓您靈活地建立自己的 VHD 檔案，並將其上傳到您帳戶內的 Amazon S3 儲存貯體。

**Topics**
+ [

# 建立 VHD
](create-vhd.md)
+ [

# 在 Amazon WorkSpaces 應用程式中建立 VHD 的設定指令碼
](create-setup-script.md)
+ [

# 建立自訂應用程式區塊
](create-app-block.md)
+ [

# 更新應用程式區塊、VHD 和安裝指令碼
](update-app-block.md)

# 建立 VHD
<a name="create-vhd"></a>

VHD 是單一檔案，掛載至作業系統時會視為硬碟。VHD 可以掛載為磁碟機代號、資料夾路徑，或兩者。掛載 VHD 後，您可以將其作為任何其他硬碟來處理，包括安裝應用程式或將使用者需要的檔案複製到其中。

若要建立應用程式區塊，您需要建立 VHD、在其中安裝您的應用程式，然後將它分離。分離後，您可以在另一部 PC、EC2 執行個體或 WorkSpaces 應用程式映像建置器上測試 VHD，以驗證應用程式是否如預期般運作。完成後，上傳到您帳戶中的 Amazon S3 儲存貯體，並建立應用程式區塊。

**注意**  
此頁面說明使用 VHD 交付您的應用程式；不過，WorkSpaces 應用程式串流執行個體將從 Amazon S3 下載任何物件。您存放在 Amazon S3 中的物件也可以是 zip 檔案、應用程式安裝程式，或應用程式可執行檔本身。您可以在使用者啟動其應用程式之前，使用安裝指令碼在串流執行個體上正確設定它。  
WorkSpaces 應用程式串流執行個體會在安裝指令碼執行之前等待最多 120 秒，讓 VHD 完成下載。如果 VHD 未在此期間內完成下載，下載將停止，且安裝指令碼將不會執行。  
我們建議的 VHD 大小上限為 1.5 GB。您可以利用壓縮來縮減 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 儲存貯體。

**分離適用 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 應用程式映像建置器上進行測試。

**建立適用 Linux 的 VHD**

1. 開啟終端機：
   + 對於 Amazon Linux 2：使用 EC2 執行個體、WorkSpaces 應用程式映像建置器或採用 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 儲存貯體。

**分離適用 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 應用程式映像建置器或 Amazon Linux 2/Ubuntu WorkSpaces Personal 上進行測試。

# 在 Amazon WorkSpaces 應用程式中建立 VHD 的設定指令碼
<a name="create-setup-script"></a>

WorkSpaces 應用程式會使用您提供的設定指令碼，在應用程式啟動之前掛載 VHD。您也可以使用安裝指令碼來完成其他必要任務，以便讓應用程式正常運作。例如，您可以從安裝指令碼設定登錄機碼、註冊 DLL、管理必要條件，或修改使用者設定檔。WorkSpaces 應用程式提供指令碼範例，您可以用來掛載 VHD。您需要根據您的 VHD 和應用程式所需修改這些指令碼。

**注意**  
使用 WorkSpaces 應用程式封裝的應用程式區塊不需要設定指令碼。不過，您可以提供選用的安裝後指令碼，以自訂應用程式安裝。

使用下列連結來下載範例指令碼：
+ [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 應用程式會將安裝指令碼和 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 和安裝程式碼對應的應用程式區塊名稱。
+ Amazon Linux 2：

  `/opt/appstream/AppBlocks/appblock-name/`  
**`appblock-name` **  
VHD 和安裝程式碼對應的應用程式區塊名稱。
+ Microsoft Windows：

  `C:\AppStream\AppBlocks\appblock-name\`  
**`appblock-name` **  
VHD 和安裝程式碼對應的應用程式區塊名稱。

WorkSpaces 應用程式會在物件上維護檔案名稱。例如，如果您的應用程式區塊命名為 `MyApps`，且 VHD 命名為 `apps.vhd` 和安裝指令碼命名為 `mount-apps.ps1`，則 Windows 串流執行個體上的完整路徑為：
+ VHD

  `C:\AppStream\AppBlocks\MyApps\apps.vhd`
+ 安裝指令碼

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

WorkSpaces 應用程式在機群串流執行個體上執行時，會從設定指令碼擷取標準錯誤和標準輸出，並將輸出上傳到您帳戶中的 Amazon S3 儲存貯體。您可以使用這些日誌來識別和解決安裝指令碼可能發生的問題。儲存貯體使用特定格式命名，如下所示：

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

**`region-code` **  
這是在其中建立彈性機群 AWS 的區域代碼。

**`account-id-without-hyphens` **  
 AWS 您的帳戶識別符。隨機 ID 可確保與該區域中的其他儲存貯體不發生衝突。儲存貯體名稱的第一部分 appstream-logs，在帳戶或區域之間不會變更。

例如，如果您在美國西部 （奧勒岡） 區域 (us-west-2) 於帳號 123456789012 建立彈性機群，WorkSpaces 應用程式會在您該區域中的帳戶內建立 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` **  
安裝程式碼對應的應用程式區塊名稱。

以下範例資料夾結構適用於從 `test-fleet` 啟動的串流工作階段。工作階段來自 AWS 帳戶 ID 為 123456789012，而應用程式區塊名稱在美國西部 （奧勒岡） 區域 (us-west-2) 為 testappblock：

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

此範例資料夾結構包含一個用於標準輸出的日誌檔，以及一個用於標準錯誤的日誌檔。

**Topics**
+ [

# Amazon WorkSpaces 應用程式中的應用程式區塊設定指令碼執行
](script-execution.md)

# Amazon WorkSpaces 應用程式中的應用程式區塊設定指令碼執行
<a name="script-execution"></a>

下列圖表指出安裝指令碼在程序中執行的位置。執行順序取決於，與彈性機群相關聯的堆疊上是否啟用了「應用程式設定持續性」。

**注意**  
WorkSpaces 應用程式使用您的 VPC 詳細資訊，從 Amazon S3 儲存貯體下載 VHD 和設定指令碼。您的 VPC 必須提供 Amazon S3 儲存貯體的存取權。如需詳細資訊，請參閱[將 Amazon S3 VPC 端點用於 WorkSpaces 應用程式功能](managing-network-vpce-iam-policy.md)。

應用程式設定持續性已啟用：

![\[應用程式設定持續性已啟用。\]](http://docs.aws.amazon.com/zh_tw/appstream2/latest/developerguide/images/app-settings-enabled.png)


應用程式設定持續性已停用：

![\[應用程式設定持續性已停用。\]](http://docs.aws.amazon.com/zh_tw/appstream2/latest/developerguide/images/app-settings-disabled.png)


# 建立自訂應用程式區塊
<a name="create-app-block"></a>

建立 VHD 和設定指令碼並上傳至 中的 S3 儲存貯體後，您可以使用 WorkSpaces 應用程式主控台來建立應用程式區塊資源 AWS 帳戶。若要深入了解如何在 Amazon S3 儲存貯體中存放 VHD 和安裝指令碼，請參閱 [將應用程式圖示、安裝指令碼、工作階段指令碼和 VHD 儲存在 S3 儲存貯體中](store-s3-bucket.md)。

**注意**  
您必須擁有 IAM 許可才能對 Amazon S3 儲存貯體中的 VHD 和安裝指令碼物件執行 `S3:GetObject` 動作，以建立應用程式區塊資源。

**建立應用程式區塊資源**

1. 在 https：//[https://console.aws.amazon.com/appstream2](https://console.aws.amazon.com/appstream2) 開啟 WorkSpaces 應用程式主控台。

1. 在左側導覽選單中，選擇**應用程式**、**應用程式區塊**和**建立應用程式區塊**。

1. 針對應用程式區塊封裝，選取**自訂**。

1. 針對**應用程式區塊詳細資訊**，輸入應用程式區塊的唯一名稱識別符。或者，您也可以指定以下内容：
   + **顯示名稱**：易記的應用程式區塊名稱。
   + **說明**：應用程式區塊的說明。

1. 針對**指令碼設定**下的 **S3 中的虛擬硬碟物件**，輸入代表 VHD 物件的 S3 URI，或選擇**瀏覽 S3**，以導覽至您的 S3 儲存貯體並尋找 VHD 物件。

1. 針對**指令碼設定**下的 **S3 中的安裝指令碼物件**，輸入代表安裝指令碼物件的 S3 URI，或選擇**瀏覽 S3**，以導覽至您的 S3 儲存貯體並尋找安裝指令碼物件。

1. 針對**指令碼設定**下的**安裝指令碼可執行檔**，輸入您的安裝指令碼所需的可執行檔。
**注意**  
如果您的安裝指令碼可以直接執行，則輸入安裝指令碼的檔案名稱。如果您的安裝指令碼需要依賴另一個可執行檔 (例如 Microsoft PowerShell) 來執行，則輸入該可執行檔的路徑。  
Microsoft Windows 上 Microsoft PowerShell 的路徑：  
`C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe`

1. 或者，您可以選擇針對**指令碼設定**下的**安裝指令碼可執行檔引數**，輸入須提供給安裝指令碼可執行檔以執行安裝指令碼的引數。
**注意**  
如果您使用的是 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. 針對**指令碼設定**下的**執行持續時間 (以秒為單位)**，輸入安裝指令碼的逾時持續時間。
**注意**  
以秒為單位的執行持續時間是 WorkSpaces 應用程式等待安裝指令碼執行的時間，然後再繼續。如果您的安裝指令碼未在此期間內完成，則會對您的使用者顯示錯誤，且應用程式會嘗試啟動。安裝指令碼會在執行持續時間過後終止。

1. (選用) 針對**標籤**，為應用程式區塊資源建立標籤

1. 檢閱您輸入的資訊，然後選擇**建立**。

1. 如果您的應用程式區塊成功建立，您會在主控台頂端看到成功訊息。如果發生錯誤，您會看到描述性的錯誤訊息，並且需要嘗試再次建立應用程式區塊。

# 更新應用程式區塊、VHD 和安裝指令碼
<a name="update-app-block"></a>

應用程式區塊不可變，而且一旦建立就不允許您進行變更。如果您需要對 VHD 或安裝指令碼進行回溯相容的更新，建議您將檔案的新版本上傳到 Amazon S3 儲存貯體，覆寫目前的版本。新的彈性機群串流工作階段將會下載並使用最新版的物件。

如果您需要對 VHD 或安裝指令碼進行回溯不相容的更新，建議您將它們作為新物件上傳到 Amazon S3 儲存貯體，並建立新的應用程式區塊和應用程式資源。然後，您可以在變更時段或其他中斷的過程中，管理對使用者的部署。