

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 应用程序管理器
<a name="app-blocks-applications"></a>

使用弹性实例集时，您可以创建应用程序块和应用程序。*应用程序块* 代表一个虚拟硬盘（VHD），它存储在您账户的 Amazon S3 存储桶中，其中包含启动用户将使用的应用程序所需的应用程序文件和二进制文件。*应用程序* 包含挂载 VHD 后启动应用程序所需的详细信息。以下几节介绍了如何创建和管理这些资源。

**Topics**
+ [应用程序块](app-blocks.md)
+ [应用程序块生成器](app-block-builder.md)
+ [应用程序](applications-elastic.md)
+ [将应用程序图标、设置脚本、会话脚本和 VHD 存储在 S3 存储桶中](store-s3-bucket.md)
+ [将应用程序关联到弹性实例集](associate-elastic.md)
+ [其他资源](additional-resources-app-blocks.md)

# 应用程序块
<a name="app-blocks"></a>

应用程序块代表一个虚拟硬盘（VHD），它存储在您账户的 Amazon S3 存储桶中，其中包含启动用户将使用的应用程序所需的应用程序文件和二进制文件。应用程序块还包括通知操作系统如何处理 VHD 文件的设置脚本。

应用程序块支持两种不同类型的打包：
+ 自定义 - 选择此选项可手动创建应用程序包（VHD）。有关更多信息，请参阅 [自定义应用程序块](custom-app-blocks.md)。
+ WorkSpaces 应用程序-选择此推荐选项，使用应用区块生成器创建您的应用程序包。有关更多信息，请参阅 [WorkSpaces 应用程序应用程序块](appstream-app-blocks.md)。

**Topics**
+ [自定义应用程序块](custom-app-blocks.md)
+ [WorkSpaces 应用程序应用程序块](appstream-app-blocks.md)
+ [不受支持的应用程序](app-blocks-unsupported.md)

# 自定义应用程序块
<a name="custom-app-blocks"></a>

弹性实例集流实例使用安装在虚拟硬盘（VHD）文件上的应用程序，这些文件存储在您账户的 Amazon S3 存储桶中。采用自定义打包的应用程序块可让您灵活地创建自己的 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 运行之前，Applications 流媒体实例最多会等待 120 秒让 VHD 完成下载。如果 VHD 未在这段时间内完成下载，则下载将停止，设置脚本也不会运行。  
我们建议 VHD 的最大大小为 1.5GB。您或许可以通过压缩来减小 VHD 的大小。挂载文件之前，您必须使用设置脚本对其进行解压缩，因为在挂载和启动应用程序之前，需要从 Amazon S3 完全下载该文件。应用程序启动和直播会话开始所需的时间越 VHDs大。

**为 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 应用程序映像生成器或 WorkSpaces 由亚马逊 Linux 提供支持 2
   + 对于 Ubuntu Pro 24.04 LTS：使用 EC2 实例或 WorkSpaces 由 Ubuntu Pro 提供支持

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 现已拆卸，可以在另一个亚马逊 Linux 2/Ubuntu Pro 24.04 LTS Amazon EC2 实例、亚马逊 Linux WorkSpaces 2 应用程序映像生成器或亚马逊 Linux 2/Ubuntu Personal 上进行测试。 WorkSpaces 

# 在 Amazon WorkSpaces 应用程序中为 VHD 创建安装脚本
<a name="create-setup-script"></a>

WorkSpaces 应用程序使用您提供的安装脚本在应用程序启动之前装载 VHD。您还可以使用设置脚本来完成使应用程序正常运行所需的其他任务。例如，您可以通过安装脚本配置注册表项 DLLs、注册、管理先决条件或修改用户配置文件。 WorkSpaces 应用程序提供了可用于装载 VHD 的脚本示例。您将需要修改这些脚本以满足 VHD 和应用程序的需求。

**注意**  
使用应用程序打包的应用程序块不需要安装脚本。 WorkSpaces 但是，您可以提供可选的设置后脚本来自定义应用程序安装。

使用以下链接下载示例脚本：
+ [Ubuntu Pro 24.04 LTS 和亚马逊 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 下载到队列流媒体实例上的目录中，然后运行安装脚本。设置脚本在具有完全管理员权限的操作系统上运行。安装脚本在微软 Windows 的`SYSTEM`上下文中运行，在亚马逊 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_cn/appstream2/latest/developerguide/images/app-settings-enabled.png)


应用程序设置持久性已禁用：

![\[应用程序设置持久性已禁用。\]](http://docs.aws.amazon.com/zh_cn/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://console.aws.amazon.com/appst WorkSpaces ](https://console.aws.amazon.com/appstream2) ream2 上打开应用程序控制台。

1. 从左侧导航菜单中，选择**应用程序**、**应用程序块**和**创建应用程序块**。

1. 对于应用程序块打包，请选择**自定义**。

1. 对于**应用程序块详细信息**，请键入应用程序块的唯一名称标识符。或者，您也可以指定以下内容：
   + **显示名称** - 应用程序块的易记名称。
   + **描述** - 应用程序块的描述。

1. 对于**脚本设置**下的 **S3 中的虚拟硬盘对象**，要么输入代表 VHD 对象的 S3 URI，要么选择**浏览 S3** 导航到您的 S3 存储桶并找到 VHD 对象。

1. 对于**脚本设置**下的 **S3 中的设置脚本对象**，要么输入表示设置脚本对象的 S3 URI，要么选择**浏览 S3** 导航到您的 S3 存储桶并找到设置脚本对象。

1. 对于**脚本设置**下的**设置脚本可执行文件**，请输入设置脚本所需的可执行文件。
**注意**  
如果您的设置脚本可以直接执行，请输入设置脚本的文件名。如果您的安装脚本依赖于其他可执行文件（例如 Microsoft PowerShell）来执行，请输入该可执行文件的路径。  
 PowerShell 在微软 Windows 上通往微软的路径：  
`C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe`

1. 或者，对于**脚本设置**下的**设置脚本可执行文件参数**，请输入需要提供给设置脚本可执行文件用于执行设置脚本的参数。
**注意**  
如果您使用的是 Microsoft PowerShell 脚本，则必须指定带有安装脚本名称的 “-File” 参数作为可执行参数。此外，请确保执行策略允许您的脚本运行。[要了解更多信息，请参阅[关于\$1execution\$1Polic](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.2) ies和什么是？ 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 存储桶，并创建新的应用程序块和应用程序资源。然后，您就可以在更改时段或其他中断期间管理向用户的部署。

# WorkSpaces 应用程序应用程序块
<a name="appstream-app-blocks"></a>

弹性实例集流实例使用安装在虚拟硬盘（VHD）文件上的应用程序，这些文件存储在您账户的 Amazon S3 存储桶中。对于采用自定义打包的应用程序块，您可以灵活地创建自己的 VHD 文件并将其上传到您账户中的 Amazon S3 存储桶。或者，对于带有应用程序打包的 WorkSpaces 应用程序块，您可以利用应用程序块生成器，它可以处理应用程序的打包，创建 VHD 文件并将其上传到您的 Amazon S3 存储桶。

通过使用 Applications 打包的应用程序块，您不仅无需手动构建 VHD 文件，而且还无需设置脚本。 WorkSpaces 它扩展了应用程序与弹性队列的兼容性，并减少了创建应用程序块所需的手动管理步骤。 WorkSpaces 应用程序无需任何设置脚本即可使用 WorkSpaces 应用程序打包自动处理应用程序块的设置。但是，您仍然可以提供可选的设置后脚本来根据需要自定义安装。

**Topics**
+ [概述](appstream-app-blocks-overview.md)
+ [不受支持的应用程序](appstream-app-blocks-unsupported.md)
+ [创建 WorkSpaces 应用程序应用程序块](appstream-app-blocks-create.md)
+ [激活应用程序块](appstream-app-blocks-activate.md)
+ [使用现有的应用程序包创建应用程序块](appstream-app-blocks-create-VHD.md)
+ [测试应用程序块](appstream-app-blocks-test.md)
+ [在 Amazon 应用程序中关联 WorkSpaces 应用程序块](appstream-app-blocks-associate.md)
+ [在 Amaz WorkSpaces on 应用程序中取消关联应用程序块](appstream-app-blocks-disassociate.md)

# 概述
<a name="appstream-app-blocks-overview"></a>

要使用应用程序打包创建 WorkSpaces 应用块，您需要使用应用区块生成器启动直播会话。启动会话后，您可以下载应用程序安装程序并启用录制选项。从那时起，Applications 将使用 WorkSpaces 应用程序重定向技术记录在应用程序块生成器上所做的文件系统和注册表更改。

应用程序重定向使用 Windows 筛选器驱动程序框架来拦截和重定向文件系统和注册表更改。此重定向与正在安装的应用程序无缝连接。应用程序将继续与 C: 驱动器上的原始文件位置进行交互。例如，如果在设置了应用程序重定向的计算机上运行 TestApplication “” 的安装程序，则该安装程序将默认安装到 C:\$1Program Files\$1 TestApplication。但在后台，所有文件和文件夹都将重定向到已挂载的虚拟硬盘（VHD），并将创建一个从原始文件位置到实际文件位置的链接。在计算机上，似乎仍 TestApplication 会安装在 C:\$1Program Files\$1 TestApplication。

记录所有安装更改后，VHD 文件将上传到您账户中的 Amazon S3 存储桶。

当用户使用 Elastic 队列请求会话时， WorkSpaces 应用程序会下载 VHD 文件，设置应用程序，运行安装后的设置脚本（可选），然后开始应用程序流式传输。

**注意**  
应用程序重定向技术不记录 %USERPROFILE% 下的任何文件系统更改，但在 %APPDATA% 和 %LOCALAPPDATA% 目录下创建的新目录除外。  
应用程序重定向技术不记录当前用户 HKEY\$1CURRENT\$1USER（HKCU）下的任何注册表更改。

# 不受支持的应用程序
<a name="appstream-app-blocks-unsupported"></a>

在以下情况下，应用程序在安装或运行时可能会失败：
+ **在安装过程中进行基于位置检查的应用程序**：如果应用程序的安装过程验证了已安装文件的实际位置，则可能会导致失败。由于 WorkSpaces 应用程序会将文件重定向到应用程序块 VHD，因此只有指向实际文件的链接才会保留在原始位置。

如果您不确定您的应用程序是否属于这些类别中的任何一个，则可以使用 WorkSpaces 应用程序打包来创建应用程序块。此过程涉及在应用程序块生成器实例上安装您的应用程序。如果无法在应用程序块生成器实例上安装应用程序，可以采取以下措施：
+ 检查日志。您的应用区块生成器实例的错误日志文件可在 C:\$1\$1 AppStreamAppBlocks\$1 ErrorLog 中找到。此日志记录所有安装失败，包括 RegKeys/File 操作处理。如果您在 ErrorLog 中看到以下任何日志，则表明应用程序块生成器当前不支持对您的 WorkSpaces 应用程序进行打包：
  + “无法创建符号链接”
  + “服务不支持文件重命名”

  如果没有 errorLog 文件，或者此文件为空，请查看应用程序安装日志以确定失败的原因。
+ 报告问题。选择**报告问题**按钮，该按钮位于应用程序块生成器的应用程序生成器助手中。选择此选项将从您的 WorkSpaces 应用程序区块生成器实例中收集所有应用程序日志，并将其提交给 WorkSpaces 应用程序团队寻求帮助。
+ 使用自定义打包创建应用程序块：如果您无法使用应用程序块生成器打包应用程序，可以尝试使用自定义打包方法来创建应用程序块。有关更多信息，请参阅 [自定义应用程序块](custom-app-blocks.md)。
+ 如果您需要更多帮助，请联系 AWS Support。有关更多信息，请参阅 [AWS 支持 中心](https://console.aws.amazon.com/support/home#/)。

在为 WorkSpaces 应用程序使用应用程序打包时，请务必考虑这些潜在的局限性，并相应地进行规划。

# 创建 WorkSpaces 应用程序应用程序块
<a name="appstream-app-blocks-create"></a>

按照以下步骤创建应用程序打包类型的 WorkSpaces 应用块。

## 步骤 1：配置应用程序块
<a name="appstream-app-blocks-create-step1"></a>

**配置应用程序块**

1. 在 [https://console.aws.amazon.com/appst WorkSpaces ](https://console.aws.amazon.com/appstream2) ream2 上打开应用程序控制台。

1. 从左侧导航菜单中，选择**应用程序管理器**、**应用程序块**和**创建应用程序块**。

1. 对于应用程序块打包，请选择**WorkSpaces 应用程序**。

1. 对于**应用程序块详细信息**，请键入应用程序块的唯一名称标识符。或者，您也可以指定以下内容：
   + **名称** - 应用程序块的唯一名称。
   + **显示名称**（可选）- 应用程序块的易记名称。
   + **描述**（可选）- 对应用程序块的描述。

1. （可选）带有 WorkSpaces 应用程序打包的应用程序块不需要安装脚本。您可以选择为安装后步骤提供以下**高级选项**：
   + 对于 **S3 中的设置后脚本对象**，要么输入表示设置后脚本对象的 Amazon S3 URI，要么选择**浏览 S3** 导航到您的 Amazon S3 存储桶并找到设置脚本对象。
   + 对于**设置后脚本可执行文件**，请输入设置后脚本所需的可执行文件。
**注意**  
如果您的设置脚本可以直接执行，请输入设置脚本的文件名。如果您的安装脚本依赖于其他可执行文件（例如 Microsoft PowerShell）来执行，请输入该可执行文件的路径。  
 PowerShell 在微软 Windows 上通往微软的路径：  
`C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe`  
或者，对于**脚本设置**下的**设置脚本可执行文件参数**，请输入需要提供给设置脚本可执行文件用于执行设置脚本的参数。
**注意**  
如果您使用的是 Microsoft PowerShell 脚本，则必须指定带有安装脚本名称的 “-File” 参数作为可执行参数。此外，请确保执行策略允许您的脚本运行。[要了解更多信息，请参阅[关于\$1execution\$1Polic](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.2) ies和什么是？ PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/overview?view=powershell-7.2) 。  
对于**脚本设置**下的**执行持续时间(秒)**，请输入设置脚本的超时持续时间。
**注意**  
以秒为单位的执行持续时间是 WorkSpaces 应用程序在继续运行安装脚本之前等待多长时间。如果您的设置脚本未在这段时间内完成，则系统会向您的用户显示一条错误消息，并且应用程序将尝试启动。设置脚本将在执行持续时间结束后终止。

1. 在**导入设置**下，选择**创建新的应用程序块应用程序文件**。在**导入设置**下的 **S3 位置**中，输入代表存储桶的 Amazon S3 URI，或者选择**浏览 S3** 导航到您的 Amazon S3 存储桶并选择相应的存储桶。Amazon S3 存储桶列表是全局列表，列出了所有区域的所有存储桶。请确保在要创建应用程序块的区域中选择存储桶。有关设置存储桶权限的更多信息，请参阅[将应用程序图标、设置脚本、会话脚本和 VHD 存储在 S3 存储桶中](store-s3-bucket.md)。

1. 选择应用程序块生成器。只有未与其他应用程序块关联的应用程序块生成器才可用。如果列表为空，则要么创建一个新的应用程序块生成器，要么取消关联现有的应用程序块生成器以供使用。应用程序块生成器是一种可重复使用的资源，可用于创建应用程序包。
**注意**  
如果未在此处选择应用程序块生成器，您仍然可以在**非活动**状态下创建应用程序块，并稍后激活该应用程序块。有关更多信息，请参阅 [激活应用程序块](appstream-app-blocks-activate.md)。

1. （可选）对于**标签**，为应用程序块资源创建标签。

1. 选择**下一步**。

1. 检查您输入的信息，然后选择以下选项之一：
   + 如果未在步骤 7 中选择应用程序块生成器，请选择**创建应用程序块**。
   +  如果在步骤 7 中选择了应用程序块生成器，请选择**启动应用程序块生成器**。然后继续执行步骤 2，使用应用程序块生成器流式传输会话创建您的应用程序包。

此时，您的应用程序块资源已创建，但它处于**非活动**状态，无法用于弹性实例集。

## 步骤 2：创建应用程序包
<a name="appstream-app-blocks-create-step2"></a>

使用应用程序块生成器流实例来打包您的应用程序并激活应用程序块。使用应用程序块生成器创建的应用程序块将具有 WorkSpaces 应用程序打包，应用程序包将上传到您的 Amazon S3 存储桶中 AWS 账户。

**创建应用程序包**

1. 流式传输会话开启后，应用程序生成器助手会自动启动。如果无法启动，请使用桌面图标手动启动。

1. 初始屏幕提供了有关应用程序打包过程的说明。

1. 使用以下选项之一，将应用程序安装程序引入应用程序块生成器流式传输会话：
   + 从 Web 下载应用程序安装程序。
   + 使用您的流式传输会话文件接口。
   + 使用机器角色从其他 AWS 服务下载应用程序安装程序。

1. 安装完所有必需的应用程序安装程序后，请停止在实例上运行的所有其他应用程序，然后选择**开始录制**。应用程序块生成器开始录制系统更改，并且屏幕上显示**正在录制**。

1. 开始逐个安装您的应用程序。

1. 完成应用程序安装后，请选择**停止录制**，系统将停止录制更改。如果要对应用程序包进行更多更改，例如添加更多应用程序或删除已安装的应用程序，请选择**开始录制**，并确保系统处于**正在录制**模式。
**注意**  
如果您的应用程序安装失败，请选择**报告问题**以从实例收集与 WorkSpaces 应用程序相关的日志，并将问题报告给 WorkSpaces 应用程序团队。完成后，结束应用程序块生成器流式传输会话。您可以尝试使用新的应用程序块生成器实例重新启动创建应用程序块的过程。如果问题仍然存在，请尝试使用自定义打包创建应用程序块。

1. 安装完所有应用程序后，请选择**停止录制**。您可以使用“开始”菜单或使用“文件资源管理器”浏览应用程序来测试应用程序。

1. 选择**下一步**以查看应用程序块详细信息。
**注意**  
弹性实例集的应用程序包（VHD）文件的建议大小应小于 1.5GB。如果 VHD 文件大小超过 1.5GB，请尝试减少一个应用程序块中打包的应用程序数量。  
如果卸载应用程序，应用程序包（VHD）文件大小不会缩小。使用新的应用程序块流式传输会话重新启动应用程序打包过程，并减少安装的应用程序数量。

1. 选择**完成应用程序块创建并断开连接**以创建应用程序包并将其上传到 Amazon S3 存储桶。如果成功，流式传输会话将自动断开连接，并且应用程序块将处于**活动**状态。
**注意**  
如果您的应用程序安装失败，请选择**报告问题**以从实例收集与 WorkSpaces 应用程序相关的日志，并将问题报告给 WorkSpaces 应用程序团队。完成后，结束应用程序块生成器流式传输会话。您可以尝试使用新的应用程序块生成器实例重新启动创建应用程序块的过程。如果问题仍然存在，请尝试使用自定义打包创建应用程序块。

# 激活应用程序块
<a name="appstream-app-blocks-activate"></a>

如果创建了带有 WorkSpaces 应用程序打包的应用程序块，但应用程序包 (VHD) 未附加到该块，则该应用程序块将处于非活动状态，并且无法用于将应用程序与 Elastic 队列关联起来。要激活应用程序块，必须将应用程序包（VHD）与该应用程序块关联。

**创建应用程序包**

1. 在 [https://console.aws.amazon.com/appst WorkSpaces ](https://console.aws.amazon.com/appstream2) ream2 上打开应用程序控制台。

1. 从左侧导航菜单中，选择**应用程序管理器**、**应用程序块**。

1. 选择要激活的**非活动**应用程序块，然后从**操作**菜单中选择**激活**。

1. 选择应用程序块生成器，然后选择**启动应用程序块生成器**。
   + 如果列表为空，则说明您要么没有应用程序块生成器，要么您的所有应用程序块生成器都与其他应用程序块关联。此时要么创建一个新的应用程序块生成器，要么取消关联某个现有的应用程序块生成器并对其进行测试。
   + 如果该应用程序块生成器已与某个应用程序块关联，则可以继续使用该生成器来激活应用程序块。
   + 如果所选的应用程序块生成器未与某个应用程序块关联，则它将与您选择的应用程序块关联，并将启动流式传输会话。会话结束后，该应用程序块生成器仍与此应用程序块关联。

1. 应用程序块流式传输会话启动后，请按照[步骤 2：创建应用程序包](appstream-app-blocks-create.md#appstream-app-blocks-create-step2)中的步骤创建您的应用程序包（VHD）并激活应用程序块。

# 使用现有的应用程序包创建应用程序块
<a name="appstream-app-blocks-create-VHD"></a>

您可以将现有的应用程序包 (VHD) 与 WorkSpaces 应用程序打包一起使用来创建 WorkSpaces 应用程序块。为此，请将应用程序包（VHD）文件从源 Amazon S3 存储桶复制到另一个目标 Amazon S3 存储桶。目标存储桶可以位于不同的区域。

**使用现有的应用程序包创建应用程序块**

1. 在 [https://console.aws.amazon.com/appst WorkSpaces ](https://console.aws.amazon.com/appstream2) ream2 上打开应用程序控制台。

1. 从左侧导航菜单中，选择**应用程序管理器**、**应用程序块**和**创建应用程序块**。

1. 对于应用程序块打包，请选择**WorkSpaces 应用程序**。

1. 对于**应用程序块详细信息**，请键入应用程序块的唯一名称标识符。或者，您也可以指定以下内容：
   + **名称** - 应用程序块的唯一名称。
   + **显示名称**（可选）- 应用程序块的易记名称。
   + **描述**（可选）- 对应用程序块的描述。

1. （可选）带有 WorkSpaces 应用程序打包的应用程序块不需要安装脚本。您可以选择为安装后步骤提供以下**高级选项**：
   + 对于 **S3 中的设置后脚本对象**，要么输入表示设置后脚本对象的 Amazon S3 URI，要么选择**浏览 S3** 导航到您的 Amazon S3 存储桶并找到设置脚本对象。
   + 对于**设置后脚本可执行文件**，请输入设置后脚本所需的可执行文件。
**注意**  
如果您的设置后脚本可以直接执行，请输入设置后脚本的文件名。如果您的安装后脚本依赖于其他可执行文件（例如 Microsoft PowerShell）来执行，请输入该可执行文件的路径。  
 PowerShell 在微软 Windows 上通往微软的路径：  
`C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe`  
或者，对于**设置后脚本可执行文件参数**，请输入需要提供给设置脚本可执行文件用于执行设置脚本的参数。
**注意**  
如果您使用的是 Microsoft PowerShell 脚本，则必须指定带有安装后脚本名称的 “-File” 参数作为可执行参数。此外，请确保执行策略允许您的脚本运行。[要了解更多信息，请参阅[关于\$1execution\$1Polic](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.2) ies和什么是？ PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/overview?view=powershell-7.2) 。  
对于**脚本设置**下的**执行持续时间(秒)**，请输入设置脚本的超时持续时间。
**注意**  
以秒为单位的执行持续时间是 WorkSpaces 应用程序等待安装后脚本运行的时间，然后再继续。如果您的设置后脚本未在这段时间内完成，则系统会向您的用户显示一条错误消息，并且应用程序将尝试启动。设置脚本将在执行持续时间结束后终止。

1. 在**导入设置**下选择**使用现有的应用程序块应用程序文件**。对于 **S3 位置**，您可以在代表应用程序包（VHD）的 Amazon S3 存储桶中输入对象的 Amazon S3 URI；或者，选择**浏览 S3** 导航到您的 Amazon S3 存储桶，然后在 Amazon S3 存储桶中选择该对象。Amazon S3 存储桶列表是全局列表，列出了所有区域的所有存储桶。请确保在要创建应用程序块的区域中选择存储桶。

1. 选择**下一步**。

1. 检查您输入的信息，然后选择**创建应用程序块**。

此时，您的应用程序块资源已创建并处于**活动**状态。

# 测试应用程序块
<a name="appstream-app-blocks-test"></a>

您可以使用应用程序块生成器来测试应用程序块并验证应用程序功能。对于此选项，您无需启动弹性实例集。您还可以创建多个具有不同实例类型或大小的应用程序块生成器，并使用不同的计算选项测试应用程序的性能。

**注意**  
只有带有应用程序打包的应用程序块才支持测试 WorkSpaces 应用程序块选项。

**测试应用程序块**

1. 在 [https://console.aws.amazon.com/appst WorkSpaces ](https://console.aws.amazon.com/appstream2) ream2 上打开应用程序控制台。

1. 从左侧导航菜单中，选择**应用程序管理器**、**应用程序块**。

1. 选择要测试的应用程序块，然后从**操作**菜单中选择**测试**。

1. 选择应用程序块生成器，然后选择**启动并测试应用程序块**。
   + 如果列表为空，则说明您要么没有应用程序块生成器，要么您的所有应用程序块生成器都与其他应用程序块关联。此时要么创建一个新的应用程序块生成器，要么取消关联某个现有的应用程序块生成器并对其进行测试。
   + 如果该应用程序块生成器已与某个应用程序块关联，则可以继续使用该生成器来激活应用程序块。
   + 如果所选的应用程序块生成器未与某个应用程序块关联，则它将与您选择的应用程序块关联，并将启动流式传输会话。会话结束后，该应用程序块生成器仍与此应用程序块关联。

1. 在桌面流式传输模式下，应用程序块生成器会在单独的浏览器窗口中启动。该服务从 Amazon S3 存储桶下载应用程序块，并将其安装在应用程序块生成器实例上。

1. 现在可以对您的应用程序进行流式传输和测试。您可以通过在“文件资源管理器”中浏览或使用“开始”菜单来打开应用程序。

1. 完成测试后，结束流式传输会话。

# 在 Amazon 应用程序中关联 WorkSpaces 应用程序块
<a name="appstream-app-blocks-associate"></a>

要使用应用程序打包创建、测试或激活您的 WorkSpaces 应用块，您需要将其与应用区块生成器相关联。一个应用程序块生成器只能与一个应用程序块关联，反之亦然。

**注意**  
只有带有 WorkSpaces 应用程序打包的应用程序块才支持关联和取消关联应用程序块。

**在 Amazon Applications 中将应用区块与 WorkSpaces 应用区块生成器相关联**

1. 在 [https://console.aws.amazon.com/appst WorkSpaces ](https://console.aws.amazon.com/appstream2) ream2 上打开应用程序控制台。

1. 从左侧导航菜单中，选择**应用程序管理器**、**应用程序块**。

1. 选择应用程序块，然后从**操作**菜单中选择**关联**。

1. 选择应用程序块生成器，然后选择**关联应用程序块生成器**。

   如果列表为空，则说明您要么没有应用程序块生成器，要么您的所有应用程序块生成器都与其他应用程序块关联。此时要么创建一个新的应用程序块生成器，要么取消关联某个现有的应用程序块生成器，然后再关联。

# 在 Amaz WorkSpaces on 应用程序中取消关联应用程序块
<a name="appstream-app-blocks-disassociate"></a>

如果您的所有应用程序块生成器都与其他应用程序块关联，并且您要测试、创建或激活另一个应用程序块，则可以创建一个新的应用程序块生成器，也可以取消现有应用程序块生成器与应用程序块的关联并将其与新的应用程序块一起使用。

**注意**  
只有带有 WorkSpaces 应用程序打包的应用程序块才支持关联和取消关联应用程序块。  
只有当应用程序块生成器处于 **STOPPED** 状态时，才允许取消关联。

**取消应用程序块与应用程序块生成器的关联**

1. 在 [https://console.aws.amazon.com/appst WorkSpaces ](https://console.aws.amazon.com/appstream2) ream2 上打开应用程序控制台。

1. 从左侧导航菜单中，选择**应用程序管理器**、**应用程序块**。

1. 选择应用程序块，然后从**操作**菜单中选择**取消关联**。

1. 选择已关联的应用程序块生成器，然后选择**取消关联应用程序块生成器**。

# 不受支持的应用程序
<a name="app-blocks-unsupported"></a>

在以下情况下，应用程序在安装或运行时可能会失败：
+ **安装后需要重新启动的应用程序**：如果应用程序在安装后需要执行额外的更改或配置，而这些更改或配置需要重新启动，则可能会失败。目前，应用程序块不支持重新启动，这可能会使应用程序无法完成所需的安装后步骤。
+ **依赖于用户特定详细信息的**应用程序：仅打算在应用区块生成器上为当前登录的用户安装的应用程序，或者在安装过程中依赖应用程序块生成器上登录的用户详细信息（例如安全标识符 (SIDs)）的应用程序，可能无法在 Elastic 队列上正常运行。这是由于登录用户在弹性实例集环境中发生了更改。此外，应用程序重定向不会记录 %USERPROFILE% 下的所有目录。但是，您可以选择配置设置后脚本，以便根据环境动态更改应用程序配置。
+ **依赖于计算机特定详细信息的应用程序**：在安装过程中依赖于应用程序块生成器上计算机特定详细信息（如网络适配器 GUID）的应用程序可能会在弹性实例集上遇到问题。这是因为在弹性队列环境中，包括网络适配器 GUIDs在内的机器细节可能会发生变化。要解决这个问题，您可以配置设置后脚本来处理这些计算机特定详细信息的配置。

如果您不确定您的应用程序是否属于这些类别中的任何一个，则可以使用 WorkSpaces 应用程序打包来创建应用程序块。此过程涉及在应用程序块生成器实例上安装您的应用程序。如果无法在应用程序块生成器实例上安装应用程序，可以采取以下措施：
+ 检查日志。您的应用区块生成器实例的错误日志文件可在 C:\$1\$1 AppStreamAppBlocks\$1 ErrorLog 中找到。此日志记录了所有安装失败情况，包括注册表项和文件操作处理。如果您在 ErrorLog 中看到以下任何日志，则表明应用程序块生成器当前不支持对您的 WorkSpaces 应用程序进行打包：
  + “无法创建符号链接”
  + “服务不支持文件重命名”

  如果没有 errorLog 文件，或者此文件为空，请查看应用程序安装日志以确定失败的原因。
+ 报告问题。选择**报告问题**按钮，该按钮位于应用程序块生成器的应用程序生成器助手中。选择此选项将从您的 WorkSpaces 应用程序区块生成器实例中收集所有应用程序日志，并将其提交给 WorkSpaces 应用程序团队。
+ 使用自定义打包创建应用程序块：如果您无法使用应用程序块生成器打包应用程序，可以尝试使用自定义打包方法来创建应用程序块。有关更多信息，请参阅 [自定义应用程序块](custom-app-blocks.md)。
+ 如果您需要更多帮助，请联系 AWS Support。有关更多信息，请参阅 [AWS 支持 中心](https://console.aws.amazon.com/support/home#/)。

在为 WorkSpaces 应用程序使用应用程序打包时，请务必考虑这些潜在的局限性，并相应地进行规划。

# 应用程序块生成器
<a name="app-block-builder"></a>

应用程序块生成器是一种可重复使用的资源，可用于打包应用程序（或应用程序块）。您还可以在将应用程序关联到弹性实例集之前，使用应用程序块生成器来测试您的应用程序包。单个应用程序块生成器可用于逐个创建和测试多个应用程序块。每次为应用程序块生成器创建用于创建或测试应用程序块的流式传输会话时，都会创建并使用一个新实例。应用程序块生成器实例终止后，该实例的状态将不会保留。

WorkSpaces 应用程序 Elastic 队列使用 Amazon EC2 实例来流式传输应用程序。您必须提供应用程序包并将其与您的实例集关联。要创建自己的自定义应用程序包，请连接到应用程序块生成器实例，然后安装并配置您的应用程序以进行流式传输。应用程序块生成器可为您创建应用程序包并将其上传到您 AWS 账户中的 Amazon S3 存储桶。

创建应用程序块生成器时，可以选择以下选项：
+ 实例类型 — WorkSpaces 应用程序提供不同的实例大小以及各种 CPU 和内存配置。实例类型必须与您需要的实例系列相符。
+ 要使用的 VPC、子网和安全组 - 确保通过子网和安全组可以访问您的应用程序所需的网络资源。应用程序所需的典型网络资源可能包括许可服务器、数据库服务器、文件服务器和应用程序服务器。应用程序块生成器将应用程序包上传到您 AWS 账户中的 Amazon S3 存储桶。您为实例集选择的 VPC 必须提供对 Amazon S3 存储桶的足够网络访问权限。有关更多信息，请参阅 [将应用程序图标、设置脚本、会话脚本和 VHD 存储在 S3 存储桶中](store-s3-bucket.md)。

**Topics**
+ [创建应用程序块生成器](create-app-block-builder.md)
+ [连接到 Amazon 应用程序中的 WorkSpaces 应用程序区块生成器](connect-app-block-builder.md)
+ [应用程序块生成器操作](app-block-builder-actions.md)

# 创建应用程序块生成器
<a name="create-app-block-builder"></a>

您可以使用应用区块生成器实例为 Applications Elastic 队列创建 WorkSpaces 应用程序包。

**创建应用程序块生成器**

1. 在[https://console.aws.amazon.com/appstream2/家](https://console.aws.amazon.com/appstream2/home)中打开 WorkSpaces 应用程序控制台。

1. 在左侧导航窗格中选择**应用程序管理器**，然后选择**应用程序块生成器**选项卡和**创建应用程序块生成器**。

1. 对于**步骤 1: 配置应用程序块生成器**，请提供以下详细信息来配置应用程序块生成器：
   + **名称**：为应用程序块生成器键入唯一的名称标识符。
   + **显示名称（可选）**：键入要为应用程序块生成器显示的名称（最多 100 个字符）。
   + **操作系统**：为您的应用程序选择一个操作系统。这必须与您要为弹性实例集选择的操作系统保持一致，最终用户将使用弹性实例集来流式传输应用程序。
   + **IAM 角色（可选）**：当您将账户中的 IAM 角色应用于 WorkSpaces 应用程序区块生成器时，无需手动管理 AWS 凭证即可从应用程序区块生成器实例发出 AWS API 请求。要将 IAM 角色应用于应用程序块生成器，请执行以下任一操作：
     + 要使用 Amazon Web Services 账户中的现有 IAM 角色，请从 **IAM 角色**列表中选择要使用的角色。角色必须可以从映像生成器访问。有关更多信息，请参阅 [配置现有 IAM 角色以用于 WorkSpaces 应用程序流式处理实例](configuring-existing-iam-role-to-use-with-streaming-instances.md)。
     + 要创建新的 IAM 角色，请选择**创建新的 IAM 角色**，然后按照[如何创建用于 WorkSpaces 应用程序流式处理实例的 IAM 角色](how-to-create-iam-role-to-use-with-streaming-instances.md)中的步骤进行操作。
   + **实例类型**：为应用程序块生成器选择实例类型。选择一个符合您计划安装的应用程序的性能要求的类型。
   + **标签（可选）**：选择**添加标签**，然后键入标签的键和值。要添加更多标签，请重复此步骤。有关更多信息，请参阅 [标记您的 Amazon WorkSpaces 应用程序资源](tagging-basic.md)。

1. 选择**下一步**。

1. 对于**步骤 2: 配置网络**，执行以下操作：
   + 要为具有公有子网的 VPC 中的应用程序块生成器添加 Internet 访问，请选择**默认 Internet 访问**。如果您使用 NAT 网关提供 Internet 访问，则保持 **Default Internet Access (默认 Internet 访问)** 为未选中状态。有关更多信息，请参阅 [Internet 访问](internet-access.md)。
   + 对于 **VPC** 和**子网 1**，请选择一个 VPC 和至少两个子网。为了提高容错能力，我们建议您选择位于不同可用区中的三个子网。有关更多信息，请参阅 [配置具有私有子网和 NAT 网关的 VPC](managing-network-internet-NAT-gateway.md)。

     如果您没有自己的 VPC 和子网，则可以使用[默认 VPC](default-vpc-with-public-subnet.md) 或自行创建。如需自行创建，请选择 **Create a new VPC (创建新 VPC)** 和 **Create new subnet (创建新子网)** 链接进行创建。选择这些链接将打开 Amazon VPC 控制台。创建 VPC 和子网后，返回 WorkSpaces 应用程序控制台，选择创建新 **VPC 和创建新****子网链接左侧的刷新**图标将其显示在列表中。有关更多信息，请参阅 [为 WorkSpaces 应用程序配置 VPC](appstream-vpc.md)。
   + 对于 **Security group(s) (安全组)**，选择最多五个要与该映像生成器关联的安全组。如果您没有自己的安全组，并且不想使用默认安全组，请选择 **Create new security group (创建新安全组)** 链接进行创建。在 Amazon VPC 控制台中创建子网后，返回 WorkSpaces 应用程序控制台并选择**创建新安全组链接左侧的刷新**图标以将其显示在列表中。有关更多信息，请参阅 [Amazon WorkSpaces 应用程序中的安全组](managing-network-security-groups.md)。
   + 对于 **VPC 端点（可选）**，您可以在您的 Virtual Private Cloud（VPC）中创建一个接口 VPC 端点（接口端点）。要开始创建接口端点，请选择**创建 VPC 端点**。选择此链接可打开 VPC 控制台。要完成端点的创建，请按照[教程：从接口 VPC 端点创建和流式传输](creating-streaming-from-interface-vpc-endpoints.md)中的步骤 3 到 6 进行操作。创建接口端点后，您可以使用它来保持 VPC 中的流式传输流量。

1. 选择**下一步**。

1. 选择**审核**并确认应用程序块生成器的详细信息。要更改任何部分的配置，请选择**编辑**并进行所需的更改。

1. 审核完配置详细信息后，选择**创建应用程序块生成器**。
**注意**  
如果错误消息通知您没有足够的限制（配额）来创建映像生成器，请通过 Service Quotas 控制台提交提高限制的请求，网址为[https://console.aws.amazon.com/servicequotas/](https://console.aws.amazon.com/servicequotas/)。有关更多信息，请参阅《服务配额用户指南》**中的 [Requesting a quota increase](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)。

# 连接到 Amazon 应用程序中的 WorkSpaces 应用程序区块生成器
<a name="connect-app-block-builder"></a>

您可以通过执行以下任一操作来连接到应用程序块生成器：
+ 使用 WorkSpaces 应用程序控制台（仅适用于浏览器连接）
+ 创建直播 URL（用于浏览器或 WorkSpaces 应用程序客户端连接）

**注意**  
应用程序块生成器不支持 Active Directory 域加入。

**Topics**
+ [Amazon WorkSpaces 应用程序控制台（浏览器连接）](connect-app-block-builder-console.md)
+ [直播 URL（亚马逊 WorkSpaces 应用程序客户端或浏览器连接）](connect-app-block-builder-streaming.md)

# Amazon WorkSpaces 应用程序控制台（浏览器连接）
<a name="connect-app-block-builder-console"></a>

要使用 WorkSpaces 应用程序控制台通过浏览器连接到应用区块生成器，请完成以下步骤。

1. 在[https://console.aws.amazon.com/appstream2/家](https://console.aws.amazon.com/appstream2/home)中打开 WorkSpaces 应用程序控制台。

1. 在左侧导航窗格中，选择**应用程序管理器**，然后选择**应用程序块生成器**。

1. 在应用程序块生成器列表中，选择要连接的应用程序块生成器。验证应用程序块生成器是否处于**正在运行**状态，然后选择**连接**。

   要使此步骤生效，您可能需要配置浏览器以允许来自 https://stream.<aws-region>.amazonappstream.com/ 的弹出窗口。

1. 开始流式传输应用程序块生成器。

# 直播 URL（亚马逊 WorkSpaces 应用程序客户端或浏览器连接）
<a name="connect-app-block-builder-streaming"></a>

您可以创建直播网址，以便通过浏览器或应用程序客户端连接到 WorkSpaces 应用区块生成器。与您为允许用户访问实例集实例而创建的流式传输 URL（有效期最长为七天）不同，默认情况下，您为访问映像生成器而创建的流式传输 URL 将在一小时后失效。要设置不同的过期时间，必须使用 URL API 操作生成直播[CreateAppBlockBuilderStreaming网址](https://docs.aws.amazon.com/appstream2/latest/APIReference/API_CreateAppBlockBuilderStreamingURL.html)。

**注意**  
流式传输 URL 以连接到应用程序块生成器的功能在 macOS 客户端上不受支持。

您可以通过以下任一方式创建流式传输 URL：
+ WorkSpaces 应用程序控制台
+ 网[CreateAppBlockBuilderStreaming址](https://docs.aws.amazon.com/appstream2/latest/APIReference/API_CreateAppBlockBuilderStreamingURL.html) API 操作 
+ [create-app-block-builder-streaming-url](https://docs.aws.amazon.com/cli/latest/reference/appstream/create-app-block-builder-streaming-url.html) AWS CLI 命令

要创建直播网址并使用应用控制台连接到 WorkSpaces 应用区块生成器，请完成以下过程中的步骤。

**使用应用控制台创建直播网址并连接到 WorkSpaces 应用区块生成器**

1. 在[https://console.aws.amazon.com/appstream2/家](https://console.aws.amazon.com/appstream2/home)中打开 WorkSpaces 应用程序控制台。

1. 在导航窗格中，依次选择**应用程序管理器**、**应用程序块生成器**。

1. 在应用程序块生成器列表中，选择要连接的应用程序块生成器。验证应用程序块生成器的状态是否为**正在运行**。

1. 依次选择**操作**和**创建流式传输 URL**。

1. 请执行以下操作之一：
   + 要保存流式传输 URL 以便日后连接到应用程序块生成器，请选择**复制链接**以复制该 URL，然后将其保存到可访问的位置。
   + 要通过应用程序客户端连接到应用程序块生成器，请选择**在客户端中启动**。 WorkSpaces 选择此选项时， WorkSpaces 应用程序客户端登录页面将预先填充直播网址。
   + 要通过浏览器连接到应用程序块生成器，请选择**在浏览器中启动**。选择此选项后，将打开一个浏览器，地址栏中预先填充了流式传输 URL。

1. 创建流式传输 URL 并连接到应用程序块生成器后，开始流式传输应用程序块生成器。

# 应用程序块生成器操作
<a name="app-block-builder-actions"></a>

可根据应用程序块生成器实例的当前状态对应用程序块生成器执行以下操作。

**删除**  
永久删除应用程序块生成器。  
该实例必须处于 **Stopped** 状态。

**Connect**  
连接到正在运行的应用程序块生成器。此操作使用应用程序块生成器启动桌面流式传输会话，以便安装和添加应用程序，以及创建应用程序块。  
该实例必须处于 **Running** 状态。

**晚于**  
启动已停止的应用程序块生成器。运行中的实例产生的费用均计入您的账户。  
该实例必须处于**已停止**状态，并且与一个应用程序块关联。

**停止**  
停止正在运行的应用程序块生成器。停止的实例产生的费用不计入您的账户。  
该实例必须处于 **Running** 状态。

**更新**  
更新除名称之外的所有应用程序块生成器属性。  
该实例必须处于 **Stopped** 状态。

无法对处于以下任一中间状态的实例执行这些操作：
+ **待处理**
+ **Stopping**
+ **Starting**
+ **Deleting**

# 应用程序
<a name="applications-elastic"></a>

应用程序包含挂载 VHD 后启动应用程序所需的详细信息。应用程序还包含应用程序目录中向用户显示的名称和图标。应用程序与包含该应用程序文件和二进制文件的应用程序块资源关联。

将 WorkSpaces 应用程序图标上传到 Amazon S3 存储桶并创建了包含启动应用程序所需的文件和文件夹的应用程序块后，您可以使用应用程序控制台创建应用程序资源。要了解有关将应用程序图标上传到 Amazon S3 存储桶的更多信息，请参阅[将应用程序图标、设置脚本、会话脚本和 VHD 存储在 S3 存储桶中](store-s3-bucket.md)。

**注意**  
您必须具有 IAM 权限才能对 S3 存储桶中的应用程序图标对象执行 `S3:GetObject` 操作，以创建应用程序资源。

**创建应用程序资源**

1. 在 [https://console.aws.amazon.com/appst WorkSpaces ](https://console.aws.amazon.com/appstream2) ream2 上打开应用程序控制台。

1. 从左侧导航菜单中，选择**应用程序**和**创建应用程序**。

1. 对于**应用程序详细信息**下的**名称**，请输入应用程序的唯一标识符。

1. （可选）对于**应用程序详细信息**下的**显示名称**，请输入用户将在应用程序目录中看到的易记名称。

1. （可选）对于**应用程序详细信息**下的**描述**，请输入对应用程序的描述。

1. 对于**应用程序详细信息**下的 **S3 中的应用程序图标对象**，要么输入表示 VHD 对象的 S3 URI，要么选择**浏览 S3** 导航到您的 S3 存储桶并找到应用程序图标对象。

1. 对于**应用程序设置**下的**应用程序可执行文件启动路径**，请输入流实例上应用程序可执行文件的路径。

1. （可选）对于**应用程序设置**部分中的**应用程序工作目录**，请输入流实例上用于应用程序工作目录的目录。

1. （可选）对于**应用程序设置**部分中的**应用程序启动参数**，请输入启动应用程序时要提供给应用程序可执行文件的参数。

1. 对于**应用程序设置**部分中的**支持的操作系统(OS)**，请选择可以启动此应用程序的操作系统。

1. 对于**应用程序设置**部分中的**支持的实例系列**，请选择可以启动此应用程序的实例系列。

1. 对于**应用程序设置**部分中的**应用程序块**，请选择包含此应用程序所需文件和文件夹的应用程序块。

1. （可选）在**标签**部分中，为应用程序块资源创建标签。

1. 检查您输入的信息，然后选择**创建**。

1. 如果您的应用程序已成功创建，则控制台顶部会显示一条成功消息。如果发生错误，则会显示一条描述性错误消息，您将需要再次尝试创建应用程序。

# 将应用程序图标、设置脚本、会话脚本和 VHD 存储在 S3 存储桶中
<a name="store-s3-bucket"></a>

您必须将应用程序图标、设置脚本、会话脚本以及用于应用程序和 VHDs 应用程序块的脚本存储在您账户的亚马逊简单存储服务 (Amazon S3) 存储段中 AWS 。 WorkSpaces 应用程序当您的用户开始直播会话时，Elastic 队列会从 S3 存储桶下载应用程序图标、安装脚本和 VHD。S3 存储桶必须位于您打算在其中创建 WorkSpaces 应用程序弹性队列的 AWS 区域中。

我们建议您创建一个新的 S3 存储桶，该存储桶仅用于存储您打算用于 Elastic 队列的应用程序图标、 VHDs 设置脚本、会话脚本。我们还建议在 S3 存储桶上启用版本控制。这样就可以在必要时恢复到以前的对象版本。有关如何创建新 S3 存储桶的更多信息，请参阅[创建存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)。有关如何管理对象版本控制的更多信息，请参阅[在 S3 存储桶中使用版本控制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)。

**注意**  
WorkSpaces 应用程序使用您的 VPC 访问您选择的 S3 存储桶。您为实例集选择的 VPC 必须提供对 S3 存储桶的足够网络访问权限。  
确保您的 S3 存储桶内容未使用您管理的密钥（客户自主管理型密钥）进行加密。  
当前，配置为使用客户提供的加密密钥进行服务器端加密（SSE-C）的 S3 存储桶不支持弹性实例集。如果您需要对 S3 对象进行静态加密，则可以使用 Amazon S3 管理的加密密钥进行服务器端加密（SSE-S3），这种选项适用于弹性实例集。

**Topics**
+ [Amazon S3 存储桶权限](s3-permissions.md)

# Amazon S3 存储桶权限
<a name="s3-permissions"></a>

您选择的 Amazon S3 存储桶必须具有存储桶策略，该策略为 WorkSpaces 应用程序服务委托人提供足够的访问权限，以便从 Amazon S3 存储桶访问和下载对象。您需要修改以下存储桶策略，然后将其应用于您打算用于应用程序图标、设置脚本和的 Amazon S3 存储桶 VHDs。有关如何对 Amazon S3 存储桶应用策略的更多信息，请参阅[使用 Amazon S3 控制台添加存储桶策略](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html)。

确保您的 Amazon S3 存储桶的访问控制列表 (ACLs) 处于禁用状态。有关更多信息，请参阅[禁 ACLs 用所有新存储桶和强制执行对象所有权](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ensure-object-ownership.html)。

本节介绍关于存储桶策略的典型使用案例的示例。这些示例策略将 *bucket* 用作资源值。要测试这些策略，您需要将 *user input placeholders* 替换为您自己的信息（例如存储桶名称）。

------
#### [ JSON ]

****  

```
{ 
  "Version":"2012-10-17",		 	 	 
  "Statement": [     
      { 
       "Sid": "AllowAppStream2.0ToRetrieveObjects", 
       "Effect": "Allow", 
       "Principal": { 
          "Service": ["appstream.amazonaws.com"]         
        },
        "Action": ["s3:GetObject"],
        "Resource": [           
           "arn:aws:s3:::bucket/VHD object",
           "arn:aws:s3:::bucket/Setup script object",
           "arn:aws:s3:::bucket/Application icon object",
           "arn:aws:s3:::bucket/Session scripts zip file object"
         ]         
      }      
  ]
}
```

------

**注意**  
存储桶策略示例定义了 WorkSpaces 应用程序可以访问的 S3 存储桶中的特定对象。随着应用程序块的增加，您还可以使用前缀和通配符来简化策略管理。有关存储桶策略的更多信息，请参阅[使用存储桶策略](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)。有关常见存储桶示例的更多信息，请参阅[存储桶策略示例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html)。

如果您使用的是应用程序块，则 WorkSpaces 应用程序需要额外的权限才能将 WorkSpaces 应用程序包上传到相应的 Amazon S3 存储桶。有关 WorkSpaces 应用程序应用程序块的更多信息，请参阅[WorkSpaces 应用程序应用程序块](appstream-app-blocks.md)。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowAppStream2.0ToPutAndRetrieveObjects",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "appstream.amazonaws.com"
        ]
      },
      "Action": [
        "s3:GetObject",
        "s3:ListBucket", 
        "s3:PutObject",
        "s3:GetBucketOwnershipControls"
      ],
      "Resource": [
        "arn:aws:s3:::bucket",
        "arn:aws:s3:::bucket/AppStream2/*",
        "arn:aws:s3:::bucket/Setup script object",
        "arn:aws:s3:::bucket/Application icon object",
        "arn:aws:s3:::bucket/Session scripts zip file object"
      ]
    }
  ]
}
```

------

# 将应用程序关联到弹性实例集
<a name="associate-elastic"></a>

应用程序必须先与弹性实例集关联，然后才能在应用程序目录中显示，供用户启动。您可以使用应用程序控制台管理 WorkSpaces 应用程序关联。有关在创建弹性实例集时如何关联应用程序的信息，以及有关如何管理现有实例集上的应用程序关联的信息，请参阅[更新 Amazon WorkSpaces 应用程序队列](update-fleets-new-image.md)。

# 其他资源
<a name="additional-resources-app-blocks"></a>

以下链接提供了相关信息和其他资源，可帮助您使用弹性实例集打包和交付应用程序。


| 解决方案 | 说明 | 
| --- | --- | 
| AWS |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/additional-resources-app-blocks.html)  | 
| 液体器具 FlexApp | Li@@ [quidware 与 AppStream 2.0 Elastic 队列 FlexApp 集成](https://liquidwarelabs.zendesk.com/hc/en-us/articles/4415032819725-FlexApp-One-integration-into-AppStream-2-0-Elastic-Fleet) — 包括将任何基于 Windows 的应用程序打包成 FlexApp 一种格式并在应用程序 Elastic 队列上交付的 step-by-step WorkSpaces 说明。 | 
| Numecent Cloudpaging |  [引入 AppStream 2.0 Elastic Fleets：如何使用 Cloudpaging 最大限度地提高应用程序的兼容性和可移植性](https://www.numecent.com/2021/11/19/maximize-application-compatibility-and-portability-for-appstream-elastic-fleets-with-cloudpaging/) — Numecent Cloudpaging 消除了应用程序兼容性问题，即使是最复杂的传统和高度定制的应用程序也可以在一天之内完成部署。 WorkSpaces 然后，应用程序用户可以按需流式传输它们，而无需让 IT 部门针对各种 Windows 操作系统或设备重新打包。  | 
| Turbo.Net |  [为亚马逊 WorkSpaces 应用程序引入 Turbo 支持 Elastic Fle](https://blog.turbo.net/introducing-turbo-support-for-aws-appstream-2.0-elastic-fleets) et — Turbo 可在主要平台和设备上即时交付应用程序。Turbo 独特的容器技术可消除安装并管理依赖关系、冲突和授权。 WorkSpaces 应用程序用户可以立即启动 Turbo Hub 中的任何应用程序。  | 