

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

# 图片
<a name="managing-images"></a>

您可以创建 Amazon A WorkSpaces pplications 映像，其中包含可以流式传输给用户的应用程序以及默认的系统和应用程序设置，让您的用户能够快速开始使用这些应用程序。但是，您在创建映像后无法更改映像。要添加其他应用程序、更新现有应用程序或更改映像设置，您必须启动并重新连接到您创建映像时所用的映像生成器。如果已删除该映像生成器，请启动基于您的映像的新映像生成器。然后进行更改并创建新映像。有关更多信息，请参阅[启动映像生成器来安装和配置流应用程序](tutorial-image-builder-create.md)和[教程：使用 WorkSpaces 应用程序控制台创建自定义 WorkSpaces 应用程序镜像](tutorial-image-builder.md)。

可供您使用的图像列在 WorkSpaces 应用程序控制台的**映像注册表**中。这些映像分为公有、私有或共享三类。您可以使用这些图像类型中的任何一种来启动映像生成器并设置 WorkSpaces 应用程序队列。共享映像由其他 Amazon Web Services 账户拥有并与您共享。针对与您共享的映像设置的权限可能会限制您可以对这些映像执行的操作。有关更多信息，请参阅 [管理您的 Amazon WorkSpaces 应用程序图片](administer-images.md)。

**Topics**
+ [Amazon 应用程序中的默认应用程序和 Windows 设置以及 WorkSpaces 应用程序启动性能](customizing-appstream-images.md)
+ [管理 WorkSpaces 应用程序代理版本](base-images-agent.md)
+ [WorkSpaces 应用程序代理发行说明](agent-software-versions.md)
+ [教程：使用 WorkSpaces 应用程序控制台创建自定义 WorkSpaces 应用程序镜像](tutorial-image-builder.md)
+ [管理您的 Amazon WorkSpaces 应用程序图片](administer-images.md)
+ [使用镜像助手 CLI 操作以编程方式创建您的 Amazon WorkSpaces 应用程序映像](programmatically-create-image.md)
+ [创建基于 Linux 的映像](create-linux-based-images.md)
+ [使用会话脚本管理您的 Amazon WorkSpaces 应用程序用户的流媒体体验](use-session-scripts.md)

# Amazon 应用程序中的默认应用程序和 Windows 设置以及 WorkSpaces 应用程序启动性能
<a name="customizing-appstream-images"></a>

 您可以创建默认应用程序和 Windows 设置，以使用户快速开始使用应用程序，这样他们便无需自行创建或配置设置。

WorkSpaces 应用程序可针对用户的流式传输会话优化应用程序的启动性能。为了确保所有必需的文件均包含在该流程中，您可能需要将特定文件和文件夹手动添加至优化清单。

**Topics**
+ [为应用程序用户创建默认应用程序和 Windows 设置 WorkSpaces](creating-default-app-Windows-settings.md)
+ [在 Amazon WorkSpaces 应用程序中优化应用程序的启动性能](optimizing-app-launch-performance.md)

# 为应用程序用户创建默认应用程序和 Windows 设置 WorkSpaces
<a name="creating-default-app-Windows-settings"></a>

可将保存到 Windows 用户配置文件文件夹或用户注册表配置单元的应用程序自定义项和 Windows 设置设为默认设置。在图像助手中使用**模板用户**保存默认设置时， WorkSpaces 应用程序会用您配置的配置文件替换 Windows 默认用户配置文件。然后使用 Windows 默认用户配置文件在实例集实例中为用户创建初始设置。如果您配置的应用程序或 Windows 设置在实例集中不起作用，请确认已将其保存在 Windows 用户配置文件中。有关更多信息，请参阅[教程：使用 WorkSpaces 应用程序控制台创建自定义 WorkSpaces 应用程序镜像](tutorial-image-builder.md)中的“步骤 3：创建默认应用程序和 Windows 设置”。

您可以创建和配置的默认设置包括：
+ 应用程序首选项，包括浏览器主页、工具栏自定义项和安全设置。
+ 应用程序数据设置，包括浏览器书签和连接配置文件。
+ Windows 体验设置，包括显示文件扩展名和隐藏的文件夹。

此外，您还可以修改或禁用 Internet Explorer 安全设置，如增强的安全配置 (ESC)。有关更多信息，请参阅 [在亚马逊 WorkSpaces 应用程序中禁用 Internet Explorer 增强型安全配置](customize-fleets-disable-ie-esc.md)。

# 在 Amazon WorkSpaces 应用程序中优化应用程序的启动性能
<a name="optimizing-app-launch-performance"></a>

创建映像时， WorkSpaces 应用程序要求您针对用户的流式传输会话优化应用程序的启动性能。在此过程中打开您的应用程序时，请确保它们使用的是用户要求的初始组件。这样做可确保优化过程可捕获这些组件。在某些情况下，不会检测到优化所需的全部文件。此类文件的示例是无法在映像生成器中打开的插件或组件。为了确保能够捕获到您的应用程序需要的所有文件，可将其包含在优化清单中。将文件添加到优化清单中可能会增加创建实例集实例并提供给用户使用所需的时间。但是，这样做可以缩短在实例集实例上首次启动应用程序所需的时间。

要优化文件夹中的所有文件，请打开 PowerShell 并使用以下 PowerShell 命令：

```
dir -path "C:\Path\To\Folder\To\Optimize" -Recurse -ErrorAction SilentlyContinue | %{$_.FullName} | Out-File "C:\ProgramData\Amazon\Photon\Prewarm\PrewarmManifest.txt" -encoding UTF8 -append
```

默认情况下，每次运行 Image Assistant **优化**步骤时，Image Assistant 都会替换应用程序优化清单。必须运行以下 PowerShell 命令来优化文件夹中的所有文件：
+ 每次在运行**优化**步骤之后。
+ 在选择 Image Assistant **审阅**页面上的**断开连接并创建映像**之前。

或者，您也可以使用 Image Assistant 命令行界面 (CLI) 操作为每个应用程序指定优化清单。当您使用 Image Assistant CLI 操作指定优化清单时， WorkSpaces 应用程序会将指定的应用程序优化清单与图像助手**优化**步骤标识的文件合并。有关更多信息，请参阅 [使用镜像助手 CLI 操作以编程方式创建您的 Amazon WorkSpaces 应用程序映像](programmatically-create-image.md)。

# 管理 WorkSpaces 应用程序代理版本
<a name="base-images-agent"></a>

App WorkSpaces lications 代理是在您的流媒体实例上运行的软件，允许用户流式传输应用程序。在创建新映像时，默认情况下会选择 **Always use latest agent version (始终使用最新代理版本)** 选项。选择此选项后，从您的映像启动的新映像生成器或队列实例将始终使用最新的 WorkSpaces 应用程序代理版本。您可能需要控制代理更新以确保与软件的兼容性，或者在为最终用户部署更新的环境之前对环境进行资格认证。

以下过程介绍如何管理 WorkSpaces 应用程序代理版本。

**Topics**
+ [创建始终使用最新版本的 WorkSpaces 应用程序代理的映像](create-image-that-always-uses-latest-agent.md)
+ [创建使用特定版本的 WorkSpaces 应用程序代理的映像](create-image-that-uses-specific-agent.md)
+ [创建使用较新版本的 WorkSpaces 应用程序代理的映像](create-image-that-uses-newer-agent.md)

# 创建始终使用最新版本的 WorkSpaces 应用程序代理的映像
<a name="create-image-that-always-uses-latest-agent"></a>

当您的映像配置为始终使用最新的 A WorkSpaces pplications 代理版本时，您的流媒体实例将自动使用新代理版本发布 AWS 时提供的最新功能、性能改进和安全更新进行更新。

**注意**  
在某些情况下，新的 WorkSpaces 应用程序代理版本可能会与您的软件冲突。我们建议您在将新的 WorkSpaces 应用程序代理版本部署到生产队列之前，先对其进行资格认证。

**创建始终使用最新版本的 WorkSpaces 应用程序代理的映像**

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

1. 请执行以下任一操作：
   + 如果您有要用来创建映像的映像生成器，请启动映像生成器，然后与之连接。如果映像生成器未运行最新版本的 WorkSpaces 应用程序代理，则系统会提示您选择是否使用最新的代理启动映像生成器。确保此选项处于选中状态，选择 **Start (启动)**，然后连接到映像生成器。
   + 如果您没有要用于创建映像的映像生成器，请启动新的映像生成器。在 “**步骤 1：选择图像” 中**，选择 AWS 基础图像或自定义映像。在**步骤 2：配置 Image Builder** 中，如果您选择的映像未运行最新版本的 WorkSpaces 应用程序代理，则会显示 “**WorkSpaces 应用程序**” 部分。在 **Agent version (代理版本)** 列表中，选择最新的代理版本。完成创建映像生成器的其余步骤，然后连接到该映像生成器。有关更多信息，请参阅 [启动映像生成器来安装和配置流应用程序](tutorial-image-builder-create.md)。

1. 在映像生成器桌面上，打开 Image Assistant 并按照其中的步骤创建新映像。对于 **Configure Image (配置映像)** 步骤，确保已选择 **Always use the latest agent version (始终使用最新代理版本)**。有关更多信息，请参阅 [教程：使用 WorkSpaces 应用程序控制台创建自定义 WorkSpaces 应用程序镜像](tutorial-image-builder.md)。

   如果您以后决定不总是使用最新版本的 Applicati WorkSpaces ons Agent，则必须创建一个新映像并清除该选项。

1. 创建新实例集或修改现有实例集。在配置实例集时，选择您创建的新映像。有关更多信息，请参阅 [创建 Amazon WorkSpaces 应用程序队列和堆栈](set-up-stacks-fleets.md)。

1. 创建新堆栈或修改现有堆栈并将其与您的实例集关联。

# 创建使用特定版本的 WorkSpaces 应用程序代理的映像
<a name="create-image-that-uses-specific-agent"></a>

您可能需要控制 WorkSpaces 应用程序代理更新，而不是总是使用最新版本，以便可以先测试兼容性。为确保您使用的 WorkSpaces 应用程序代理版本与您的流媒体应用程序兼容，您可以创建使用代理软件特定版本的映像。然后，先在单独的实例集中执行资格测试，再部署到生产实例集。

在创建映像时，确保未选择 **Always use latest agent version (始终使用最新代理版本)** 选项。这样做会将您的图像固定到您在启动映像生成器时选择的 WorkSpaces 应用程序代理版本，而不是始终使用最新版本。在完成资格测试后，您可以用该映像来更新生产实例集。

**创建使用特定版本的 WorkSpaces 应用程序代理的映像**

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

1. 请执行以下任一操作：
   + 如果您有要用来创建映像的映像生成器，请启动映像生成器，然后与之连接。
   + 如果您没有要用于创建映像的映像生成器，请启动新的映像生成器。在 “**步骤 1：选择图像” 中**，选择 AWS 基础图像或自定义映像。在**步骤 2：配置 Image Builder** 中，如果您选择的映像未运行最新版本的 WorkSpaces 应用程序代理，则会显示 “**WorkSpaces 应用程序**” 部分。在 **Agent version (代理版本)** 列表中，请勿选择最新的代理版本。完成创建映像生成器的其余步骤，然后连接到该映像生成器。有关更多信息，请参阅 [启动映像生成器来安装和配置流应用程序](tutorial-image-builder-create.md)。

1. 在映像生成器桌面上，打开 Image Assistant 并按照其中的步骤创建新映像。对于 Image Assistant 中的 **Configure Image (配置映像)** 步骤，确保未选择 **Always use the latest agent version (始终使用最新代理版本)**。有关更多信息，请参阅 [教程：使用 WorkSpaces 应用程序控制台创建自定义 WorkSpaces 应用程序镜像](tutorial-image-builder.md)。

   如果您以后决定始终使用最新版本的 Applicati WorkSpaces ons Agent，则必须创建新映像并选择该选项。

1. 创建新实例集或修改现有实例集。在配置实例集时，选择您创建的新映像。有关更多信息，请参阅 [创建 Amazon WorkSpaces 应用程序队列和堆栈](set-up-stacks-fleets.md)。

1. 创建新堆栈或修改现有堆栈并将其与您的实例集关联。

1. 连接到您的实例集并测试应用程序的兼容性。

# 创建使用较新版本的 WorkSpaces 应用程序代理的映像
<a name="create-image-that-uses-newer-agent"></a>

如果您将映像固定到特定的 WorkSpaces 应用程序代理版本，则必须通过创建新映像来更新到较新的版本。此方法使您能够先测试每个代理更新的兼容性，然后再以增量方式更新实例集。

在创建映像时，确保未选择 **Always use latest agent version (始终使用最新代理版本)** 选项。在创建映像后，先在单独的实例集中执行资格测试，再部署到生产实例集。在完成资格测试后，您可以用该映像来更新生产实例集。

**创建使用较新版本的 WorkSpaces 应用程序代理的映像**

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

1. 请执行以下任一操作：
   + 如果您有要用来创建映像的映像生成器，请启动映像生成器，然后与之连接。如果映像生成器未运行最新版本的 WorkSpaces 应用程序代理，则系统会提示您选择是否使用最新的代理启动映像生成器。确保此选项处于选中状态，选择 **Start (启动)**，然后连接到映像生成器。
   + 如果您没有要用于创建映像的映像生成器，请启动新的映像生成器。在 “**步骤 1：选择图像” 中**，选择 AWS 基础图像或自定义映像。在**步骤 2：配置 Image Builder** 中，如果您选择的映像未运行最新版本的 WorkSpaces 应用程序代理，则会显示 “**WorkSpaces 应用程序**” 部分。在 **Agent version (代理版本)** 列表中，选择最新的代理版本。完成创建映像生成器的其余步骤，然后连接到该映像生成器。有关更多信息，请参阅 [启动映像生成器来安装和配置流应用程序](tutorial-image-builder-create.md)。

1. 在映像生成器桌面上，打开 Image Assistant 并按照其中的步骤创建新映像。对于 Image Assistant 中的 **Configure Image (配置映像)** 步骤，确保未选择 **Always use the latest agent version (始终使用最新代理版本)**。有关更多信息，请参阅 [教程：使用 WorkSpaces 应用程序控制台创建自定义 WorkSpaces 应用程序镜像](tutorial-image-builder.md)。

   如果您以后决定始终使用最新版本的 Applicati WorkSpaces ons Agent，则必须创建新映像并选择该选项。

1. 创建新实例集或修改现有实例集。在配置实例集时，选择您创建的新映像。有关更多信息，请参阅 [创建 Amazon WorkSpaces 应用程序队列和堆栈](set-up-stacks-fleets.md)。

1. 创建新堆栈或修改现有堆栈并将其与您的实例集关联。

1. 连接到您的实例集并测试应用程序的兼容性。

# WorkSpaces 应用程序代理发行说明
<a name="agent-software-versions"></a>

Amazon A WorkSpaces pplications 代理软件在您的流媒体实例上运行，使最终用户能够连接并启动其流式处理应用程序。从 2017 年 12 月 7 日起，您的流媒体实例可以自动更新，其中包含最新功能、性能改进和安全更新，这些更新可从中获得 AWS。在 2017 年 12 月 7 日之前，代理更新包含在新的基本映像发布中。

要使用最新的 WorkSpaces 应用程序代理软件，您需要使用在 2017 年 12 月 7 日当天或之后发布的新基础映像来 AWS 重建映像。执行此操作时，Image Assistant 默认情况下选中启用自动代理更新的选项。我们建议您保留选中此选项，使得从您映像启动的任意新映像生成器或实例集实例始终使用最新版本的代理。有关更多信息，请参阅 [教程：使用 WorkSpaces 应用程序控制台创建自定义 WorkSpaces 应用程序镜像](tutorial-image-builder.md)。

下表描述了适用于 Windows 实例的 WorkSpaces 应用程序代理已发布版本中可用的最新更新。


| Amazon WorkSpaces 应用程序代理版本 | 更改 | 
| --- | --- | 
| 02-09-2026 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 02-04-2026 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 12-06-2025 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 10-02-2025 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 09-30-2025 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 07-15-2025 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 05-29-2025 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 03-05-2025 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 02-07-2025 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 10-31-2024 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 10-21-2024 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 09-18-2024 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 05-21-2024 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 04-15-2024 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 01-17-2024 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 12-07-2023 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 09-06-2023 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 05-30-2023 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 05-08-2023 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 04-13-2023 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 03-21-2023 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 10-13-2022 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 06-20-2022 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 03-14-2022 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 02-21-2022 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 12-20-2021 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 10-19-2021 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 08-02-2021 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 07-01-2021 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 06-25-2021 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 05-17-2021 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 03-04-2021 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 12-17-2020 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 01-04-2021 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 12-17-2020 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 10-08-2020 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 09-01-2020 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 07-30-2020 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 2020 年 5 月 27 日 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 2020 年 4 月 20 日 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 02-19-2020 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 01-13-2020 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 11-13-2019 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 10-08-2019 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 2019 年 9 月 23 日 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 09-03-2019 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 08-08-2019 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 2019 年 7 月 26 日 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 2019 年 6 月 19 日 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 05-07-2019 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 2019 年 4 月 2 日 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 03-07-2019 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 01-22-2019 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 01-08-2019 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 12-19-2018 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 12-17-2018 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 12-04-2018 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 11-14-2018 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 10-30-2018 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 10-24-2018 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 10-01-2018 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 08-29-2018 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 07-26-2018 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 2018-06-19 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 2018-06-06 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 2018-05-31 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 05-21-2018 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 03-19-2018 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 01-24-2018 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 
| 12-07-2017 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/agent-software-versions.html)  | 

# 教程：使用 WorkSpaces 应用程序控制台创建自定义 WorkSpaces 应用程序镜像
<a name="tutorial-image-builder"></a>

本教程介绍如何创建基于微软 Windows Server 操作系统的 WorkSpaces 应用程序映像。如果想创建基于 Amazon Linux 2、Rocky Linux 或 Red Hat Enterprise Linux 操作系统的自定义映像，请参阅 [教程：创建基于 Linux 的 WorkSpaces 自定义应用程序镜像](tutorial-create-linux-image.md)。

在本教程中，您将学习如何创建自定义 Amazon A WorkSpaces pplications 映像，其中包含可以流式传输给用户的应用程序，以及让您的用户能够快速开始使用其应用程序的默认应用程序和 Windows 设置。要完成本教程，您必须已具有映像生成器。如果您没有映像生成器，请参阅[启动映像生成器来安装和配置流应用程序](tutorial-image-builder-create.md)。

**重要**  
本教程包含适用于最新基本映像版本的信息。有关更多信息，请参阅 [WorkSpaces 应用程序基础映像和托管映像更新发行说明](base-image-version-history.md)。

**Topics**
+ [步骤 1：在映像生成器上安装应用程序](#tutorial-image-builder-install)
+ [步骤 2：创建 WorkSpaces 应用程序应用程序目录](#tutorial-image-builder-add)
+ [步骤 3：创建默认的应用程序和 Windows 设置](#tutorial-image-builder-create-default-app-settings)
+ [步骤 4：测试应用程序](#tutorial-image-builder-test-applications)
+ [步骤 5：优化应用程序](#tutorial-image-builder-optimize)
+ [步骤 6：完成映像的创建](#tutorial-image-builder-finish-create-image)
+ [步骤 7（可选）：标记和复制映像](#tutorial-image-builder-tag-copy)
+ [步骤 8：清除](#tutorial-image-builder-finish)

## 步骤 1：在映像生成器上安装应用程序
<a name="tutorial-image-builder-install"></a>

在此步骤中，您将连接映像生成器并在该映像生成器中安装您的应用程序。

**重要**  
要完成此步骤，您必须使用本地**管理员**账户或具有本地管理员权限的域账户登录到映像生成器。请勿重命名或删除本地内置**管理员**账户。如果您重命名或删除此账户，映像生成器将不会启动，映像创建将失败。

**在映像生成器上安装应用程序**

1. 通过执行以下任一操作来连接到映像生成器：
   + [使用 WorkSpaces 应用程序控制台](managing-image-builders-connect-console.md)（仅适用于 Web 连接）
   + [创建直播 URL](managing-image-builders-connect-streaming-URL.md)（用于 Web 或 WorkSpaces 应用程序客户端连接）
**注意**  
如果您要连接的图像生成器已加入 Active Directory 域，并且您的组织需要智能卡登录，则必须创建直播 URL 并使用 WorkSpaces 应用程序客户端进行连接。有关智能卡登录的信息，请参阅[智能卡](feature-support-USB-devices-qualified.md#feature-support-USB-devices-qualified-smart-cards)。

1. 从应用程序网站或其他下载来源安装应用程序。安装所需应用程序，然后再继续执行下一步。
**注意**  
仅从您信任的站点下载并安装应用程序。

   如果应用程序需要 Windows 操作系统重启，让它重启。在操作系统重启之前，您将断开与映像生成器的连接。重启完成后，再次连接到映像生成器，然后完成应用程序的安装。

## 步骤 2：创建 WorkSpaces 应用程序应用程序目录
<a name="tutorial-image-builder-add"></a>

在此步骤中，通过为图像指定 WorkSpaces 应用程序 (*.exe)、批处理脚本 (.* *bat*) 和应用程序快捷方式 (*.lnk*) 来创建应用程序目录。对于您计划流式传输的每个应用程序，可以指定名称、显示名称、要启动的可执行文件和要显示的图标。如果您选择应用程序快捷方式，将为您预填充这些值。

**重要**  
要完成此步骤，您必须使用本地**管理员**账户或具有本地管理员权限的域账户登录到映像生成器。

**创建 WorkSpaces 应用程序应用程序目录**

1. 从映像生成器桌面上，打开 Image Assistant。Image Assistant 将指导您完成映像创建过程。  
![\[Row of icons representing different functions in Image Assistant interface.\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/images/Image-Builder-Desktop-Image-Assistant.png)

1. 在 **1. 添加应用程序**中，选择 **\$1 添加应用程序**，然后导航到要添加的应用程序、脚本或快捷方式的位置。选择**打开**。

1. 在 **App Launch Settings (应用程序启动设置)** 对话框中，保留或更改 **Name (名称)**、**Display Name (显示名称)** 和 **Icon Path (图标路径)** 的默认设置。（可选）您可以指定启动参数（在应用程序启动时传递给应用程序的其他参数）和应用程序的工作目录。完成此操作后，选择**保存**。

   **Display Name (显示名称)** 和 **Icon Path (图标路径)** 设置确定您的应用程序名称和图标如何显示在应用程序目录中。当用户登录 WorkSpaces 应用程序流式传输会话时，目录会显示给他们。

1. 在 Image Assistant 中为每个应用程序重复步骤 2 和 3，并确认应用程序显示在 **Add Apps (添加应用程序)** 选项卡上。完成后，选择 **Next (下一步)** 来继续使用 Image Assistant 创建映像。

## 步骤 3：创建默认的应用程序和 Windows 设置
<a name="tutorial-image-builder-create-default-app-settings"></a>

在此步骤中，您将为应用程序用户创建默认的 WorkSpaces 应用程序和 Windows 设置。这样做可以让您的用户在应用程序流式传输会话期间快速开始使用 WorkSpaces 应用程序，而无需自己创建或配置这些设置。

**重要**  
要完成此步骤，您必须使用本地 **Template User (模板用户)** 账户或没有本地管理员权限的域用户账户登录到映像生成器。

**为您的用户创建默认的应用程序和 Windows 设置**

1. 在 Image Assistant 中的 **2. 配置应用程序**中，选择**切换用户**。此操作会断开当前会话并显示登录菜单。

1. 请执行以下任一操作：
   + 如果您的映像生成器未加入 Active Directory 域，请在 **Local User (本地用户)** 选项卡上，选择 **Template User (模板用户)**。此账户使您能够创建默认的应用程序和 Windows 设置。
   + 如果您的映像生成器已加入 Active Directory 域，请选择 **Directory User (目录用户)**，然后以没有本地管理员权限的域用户身份登录。

1. 从映像生成器桌面上，打开 Image Assistant，它会显示您在创建应用程序目录时添加的应用程序。

1. 选择要为其创建默认应用程序设置的应用程序。

1. 在应用程序打开后，根据需要创建这些设置。

1. 完成后，关闭应用程序，并返回到 Image Assistant。

1. 如果您在 Image Assistant 中指定了多个应用程序，请根据需要为每个应用程序重复步骤 4 到 6。

1. 如果您需要默认 Windows 设置，请立即创建它们。完成后，返回到 Image Assistant。

1. 选择 **Switch user (切换用户)**，然后使用用于创建应用程序目录的同一账户（具有本地管理员权限的账户）登录。

1. 在 Image Assistant 中的 **2. 配置应用程序**中，执行以下任一操作：
   + 如果您的映像生成器未加入 Active Directory 域，请选择 **Save settings (保存设置)**。
   + 如果您的映像生成器已加入 Active Directory 域，请在 **Choose which user settings to copy (选择要复制的用户设置)** 列表中，选择您在创建默认的应用程序和 Windows 设置时用于登录映像生成器的同一账户，然后选择 **Save settings (保存设置)**。

     **选择要复制的设置**列表显示当前在映像生成器上保存了设置的任何账户。

1. 完成后，选择 **Next (下一步)** 以继续创建映像。

## 步骤 4：测试应用程序
<a name="tutorial-image-builder-test-applications"></a>

在此步骤中，验证您已添加的应用程序是否正确打开并按预期执行。为此，请以具有与您的用户相同的权限的用户身份启动新的 Windows 会话。

**重要**  
要完成此步骤，您必须使用**测试用户**账户或没有本地管理员权限的域账户登录到映像生成器。

**测试您的应用程序**

1. 在 Image Assistant 中的 **3. 测试**中，执行以下任一操作：
   + 如果您的映像生成器未加入 Active Directory 域，请选择 **Switch user (切换用户)**。
   + 如果您的映像生成器已加入 Active Directory 域，您需要域账户来测试您的应用程序，并且用户已在映像生成器上具有设置，则您必须为该用户重置应用程序设置。为此，请从 **User to reset (要重置的用户)** 列表中选择用户，然后选择 **Reset (重置)**。完成后，选择 **Switch user (切换用户)**。
**注意**  
如果您的映像生成器是新的且没有用户在映像生成器上具有设置，则列表不会显示任何用户。

1. 通过执行以下任一操作来选择要用于测试的用户：
   + 如果您的映像生成器未加入 Active Directory 域，请选择 **Test User (测试用户)**。此账户使您能够使用与您的用户相同的策略和权限来测试应用程序。
   + 如果您的映像生成器已加入 Active Directory 域，请选择**目录用户**，指定没有本地管理员权限的域账户的凭证，然后选择**登录**。

1. 从映像生成器桌面上，打开 Image Assistant，它会显示您在创建应用程序目录时指定的应用程序。

1. 选择要测试的应用程序，以确认它正确打开并应用了您创建的任何默认应用程序设置。

1. 在应用程序打开后，根据需要对其进行测试。完成后，关闭应用程序，并返回到 Image Assistant。

1. 如果您在 Image Assistant 中指定了多个应用程序，请重复步骤 4 和 5 来根据需要对每个应用程序进行测试。

1. 完成后，选择 **Switch user (切换用户)**，然后执行以下任一操作：
   + 如果您的映像生成器未加入 Active Directory 域，请在 **Local User (本地用户)** 选项卡上，选择 **Administrator (管理员)**。
   + 如果您的映像生成器已加入 Active Directory 域，并且您以具有在 Image Assistant 中指定应用程序的本地管理员权限的域用户身份登录，请以该用户身份登录。

1. 选择 **Next (下一步)** 来继续创建您的映像。

## 步骤 5：优化应用程序
<a name="tutorial-image-builder-optimize"></a>

在此步骤中，Image Assistant 一个接一个地打开您的应用程序，确定其启动依赖项，然后执行优化以确保应用程序快速启动。这些是需要对列表中所有应用程序执行的步骤。

**优化您的应用程序**

1. 在 Image Assistant 中的 **4. 优化**中，选择**启动**。

1. WorkSpaces 应用程序会自动启动列表中的第一个应用程序。在应用程序完全启动后，提供任何必需的输入来执行应用程序的首次运行体验。例如，Web 浏览器可能会在其完全启动并运行前提示您导入设置。

1. 在您完成首次运行体验并验证应用程序是否按预期执行后，选择 **Continue (继续)**。如果您向映像中添加了多个应用程序，则每个应用程序将自动打开。根据需要为每个应用程序重复此步骤，让所有应用程序都保持运行状态。

1. 完成后，Image Assistant 中的下一个选项卡 **5. 配置映像**将自动显示。

## 步骤 6：完成映像的创建
<a name="tutorial-image-builder-finish-create-image"></a>

在此步骤中，选择映像名称并完成映像的创建。

**创建映像**

1. 键入唯一的映像名称以及可选的映像显示名称和描述。图片名称不能以 “Amazon”、“” 或 “” 开头AppStream。AWS

   您还可以向映像添加一个或多个标签。为此，请选择 **Add Tag (添加标签)**，然后键入该标签的键和值。要添加更多标签，请重复此步骤。有关更多信息，请参阅 [标记您的 Amazon WorkSpaces 应用程序资源](tagging-basic.md)。完成此操作后，选择**下一步**。
**注意**  
如果您选择在 2017 年 12 月 7 日当天或之后发布的基本映像，则会出现 “**始终使用最新代理版本” 选项，该**选项默认处于选中状态。 AWS 我们建议您保留选中此选项，使得从该映像启动的流实例始终使用最新版本的代理。如果您禁用此选项，则在完成映像创建之后无法再启用它。有关最新版本的 WorkSpaces 应用程序代理的信息，请参见[WorkSpaces 应用程序代理发行说明](agent-software-versions.md)。

1. 在 **6. 审核**中，验证映像详细信息。要进行更改，请选择 **Previous (上一步)** 以导航到相应的 Image Assistant 选项卡，进行更改，然后根据需要继续完成 Image Assistant 中的步骤。

1. 在您审核完映像详细信息后，选择 **Disconnect and Create Image (断开连接并创建映像)**。

1. 远程会话在片刻之后断开连接。当 **Lost Connectivity (连接丢失)** 消息出现时，关闭浏览器选项卡。在创建映像时，映像生成器状态将显示为 **Snapshotting (正在拍摄快照)**。在此过程完成之前，您无法连接到映像生成器。

1. 返回到控制台并导航到 **Images**、**Image Registry**。验证您的新映像是否出现在列表中。

   在创建映像时，控制台的映像注册表中的映像状态将显示为 **Pending (待处理)**，并且您无法连接到它。

1. 请不时选择 **Refresh (刷新)** 图标来更新状态。在创建映像后，映像状态将更改为 **Available (可用)**，并且映像生成器将自动停止。

    要继续创建映像，请启动映像生成器并从控制台连接到该生成器，或创建新的映像生成器。

**注意**  
创建映像后，您负责维护 Windows 操作系统的更新。为此，您可以使用托管 WorkSpaces 应用程序映像更新。您还负责维护应用程序及其依赖项的更新。有关更多信息，请参阅 [保留您的 Amazon WorkSpaces 应用程序图片 Up-to-Date](keep-image-updated.md)。  
要添加其他应用程序、更新现有应用程序或更改映像设置，您必须启动并重新连接到您创建映像时所用的映像生成器。或者，如果已删除该映像生成器，请启动基于您的映像的新映像生成器。然后，进行更改并创建新映像。

## 步骤 7（可选）：标记和复制映像
<a name="tutorial-image-builder-tag-copy"></a>

您可以在创建映像期间或创建映像后向映像添加一个或多个标签。您也可以在同一区域内复制该映像，或者将该映像复制到同一 Amazon Web Services 账户中的新区域。复制源图像会生成相同但不同的目标图像。 AWS 但是，不会复制任何用户定义的标签。此外，您只能复制您创建的自定义映像，而不能复制由 AWS提供的基本映像。

**注意**  
您可以同时将最多两个映像复制到一个目标。如果将映像复制到的目标达到映像限制，您将收到一条错误。在这种情况下，要复制映像，您必须先从目标中删除映像。在目标低于映像配额（也称为限制）后，开始从源区域复制映像。有关更多信息，请参阅 [亚马逊 WorkSpaces 应用程序服务配额](limits.md)。

**向现有映像添加标签**

1. 在导航窗格中，选择 **Images** (映像) 和 **Image Registry** (映像注册表)。

1. 在映像列表中，选择要添加标签的映像。

1. 依次选择 **Tags**、**Add/Edit Tags** 和 **Add Tag**，指定标签的键和值，然后选择 **Save**。

有关更多信息，请参阅 [标记您的 Amazon WorkSpaces 应用程序资源](tagging-basic.md)。

**复制映像**

通过跨地理位置不同的区域复制映像，您可以基于同一映像从多个区域流式传输应用程序。通过在离用户更近的地方流式传输应用程序，可以改善用户使用应用程序流式传输 WorkSpaces 应用程序的体验。

1. 在导航窗格中，选择 **Images** (映像) 和 **Image Registry** (映像注册表)。

1. 在映像列表中，选择要复制的映像。

1. 选择 **Actions** (操作) 和 **Copy** (复制)。

1. 在 **Copy Image** (复制映像) 对话框中，指定以下信息，然后选择 **Copy Image:** (复制映像：)
   + 对于 **Destination region** (目标区域) 中，选择要将新映像复制到的区域。
   + 对于 **Name** (名称)，指定映像在复制到目标时将具有的名称。
   + 对于可选的 **Description** (描述)，指定映像在复制到目标时将具有的描述。

1. 要检查复制操作的进度，请返回控制台并导航到 **Images** (映像) 和 **Image Registry** (映像注册表)。使用导航栏切换到目标区域 (如果适用)，并确认您的新映像显示在映像列表中。

   新映像首次显示在控制台的映像注册表中时，其状态为 **Copying** (正在复制)。成功创建映像后，映像的状态将变为 **Available**，这意味着您可以使用映像启动堆栈并流式传输您的应用程序。

## 步骤 8：清除
<a name="tutorial-image-builder-finish"></a>

最后，停止运行中的映像生成器以释放资源并避免您的账户产生意外费用。建议您停止任何未使用的、运行中的映像生成器。有关更多信息，请参阅[WorkSpaces 应用程序定价](https://aws.amazon.com/appstream2/pricing/)。

**停止运行中的映像生成器**

1. 在导航窗格中，选择 **Images** 和 **Image Builders**，然后选择运行中的映像生成器实例。

1. 依次选择 **Actions** 和 **Stop**。

# 管理您的 Amazon WorkSpaces 应用程序图片
<a name="administer-images"></a>

可用图像列在 WorkSpaces 应用程序控制台的**映像注册表**中，并按可见性进行分类，如下所示：
+ **公开**-由所有和提供的基础映像 AWS。基础映像包括最新的 Windows 操作系统和 WorkSpaces 应用程序代理软件。您可以使用基本映像来创建包含自己的应用程序的新映像。有关发布的基本映像的信息 AWS，请参阅[WorkSpaces 应用程序基础映像和托管映像更新发行说明](base-image-version-history.md)。
+ **私有** — 由您创建和拥有且未与其他 AWS 账户共享的图片。
+ **与他人共享** — 您创建和拥有的图片，以及您与同一 AWS 地区的一个或多个 AWS 账户共享的图片。当您与其他 AWS 账户共享图像时，您可以指定该映像是可用于映像生成器（创建新映像）、用于队列，还是两者兼而有之。
+ **与我共享** — 由同一 AWS 地区的另一个 AWS 账户创建和拥有并与您的 AWS 账户共享的图片。根据所有者在与您的账户共享映像时提供的权限，您可将此映像用于映像生成器、实例集或两者。

**Topics**
+ [在 Amazon WorkSpaces 应用程序中删除私有镜像](delete-private-image.md)
+ [在 Amazon WorkSpaces 应用程序中将您拥有的图像复制到其他 AWS 区域](copy-image-different-region.md)
+ [在 Amazon WorkSpaces 应用程序中与其他 AWS 账户共享您拥有的图片](share-image-with-another-account.md)
+ [停止在 Amazon WorkSpaces 应用程序中共享您拥有的图片](stop-sharing-image-with-all-accounts.md)
+ [保留您的 Amazon WorkSpaces 应用程序图片 Up-to-Date](keep-image-updated.md)
+ [亚马逊 WorkSpaces 应用程序上的 Windows 更新和防病毒软件](windows-update-antivirus-software.md)
+ [以编程方式在 Amazon WorkSpaces 应用程序中创建新映像](create-image-programmatically.md)
+ [在 Amazon 应用程序中管理您的图片上包含许可的 WorkSpaces 应用程序](license-included-applications.md)
+ [导入图片](import-image.md)
+ [导出图片](export-image.md)

# 在 Amazon WorkSpaces 应用程序中删除私有镜像
<a name="delete-private-image"></a>

当您不再需要私有映像时，可将其删除。您无法删除舰队使用或与其他 AWS 账号共享的图片。要删除实例集使用或已共享的映像，您必须先从所有实例集中删除映像并删除所有映像共享权限。删除映像后无法恢复。

**删除私有映像**

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

1. 在导航窗格中，选择 **Images** (映像) 和 **Image Registry** (映像注册表)。

1. 在映像列表中，选择要删除的私有映像。

1. 选择**操作**、**删除**，然后再次选择**删除**。

   将从映像注册表中移除并实际删除该映像。

# 在 Amazon WorkSpaces 应用程序中将您拥有的图像复制到其他 AWS 区域
<a name="copy-image-different-region"></a>

**重要**  
对于亚太地区（马来西亚）、欧洲（米兰）、欧洲（西班牙）和以色列（特拉维夫）AWS 区域：仅支持 WorkSpaces 应用代理版本为 2025 年 on/after 10 月 2 日发布的图像或使用 2025 年 on/after 9 月 5 日发布的托管更新的图像进行跨区域镜像复制。旧版本不符合在区域间复制的条件。更新您的图像以满足这些最低版本要求，从而启用跨区域复制功能。

您可以将自己拥有的图像复制到另一个 AWS 区域。在不同 AWS 区域使用相同的映像可以帮助简化应用程序在 WorkSpaces 应用程序上的全球部署。通过将应用程序部署在地理位置最接近用户的地 AWS 区，您可以帮助为用户提供响应速度更快的体验。

**将您拥有的图像复制到另一个 AWS 区域**

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

1. 在导航窗格中，选择 **Images** (映像) 和 **Image Registry** (映像注册表)。

1. 在图像列表中，选择要复制到其他 AWS 区域的图像。

1. 选择 **Actions** (操作) 和 **Copy** (复制)。

1. 在**复制图像**对话框的**目标区域**中，选择要将图像复制到的 AWS 区域。

1. 在 **Destination region (目标区域)** 中为映像键入一个唯一名称和说明（可选）。

1. 选择 **Copy Image (复制映像)**。

# 在 Amazon WorkSpaces 应用程序中与其他 AWS 账户共享您拥有的图片
<a name="share-image-with-another-account"></a>

WorkSpaces 应用程序镜像是一种区域资源，因此您可以与同一 AWS 区域内的其他 AWS 账户共享您拥有的映像。这样做在许多情况下都很有用。例如，如果您使用不同的 AWS 账户将开发资源和生产资源分开，则可以使用开发账户创建映像。然后，您可以与您的生产账户共享该映像。如果贵组织是独立软件供应商 (ISV)，则可与您的客户共享优化的映像。已安装和配置所需应用程序的优化映像让您的客户能够快速开始使用应用程序，无需自己安装和配置这些应用程序。

当您与其他 AWS 账户共享镜像时，您可以指定目标账号是可以使用队列中的镜像，还是可以通过创建镜像生成器来创建新镜像。您将继续拥有您共享的映像。这样，您可以根据需要为共享映像添加、更改或删除权限。

如果您与一个账户共享映像并向该账户授予实例集权限，则共享映像可用于创建或更新该账户中的实例集。如果您之后删除这些权限，该账户将无法再使用该映像。对于账户中使用共享映像的实例集，将所需容量设置为 0，这样可防止创建新实例集实例。现有会话将继续，直到流式传输会话结束。对于要创建的新实例集实例，必须用有效映像更新该账户中的实例集。

如果您与一个账户共享映像并向该账户授予映像生成器权限，则共享映像可用于在该账户中创建映像生成器和映像。如果您之后删除这些权限，映像生成器和从您的映像中创建的映像将不受影响。

**重要**  
与账户共享映像后，您无法控制映像生成器或该账户中基于您的映像创建的映像。因此，仅当您希望允许该账户创建映像副本并在您停止共享映像后保留副本访问权限的情况下，才向该账户授予映像生成器权限。

**与其他 AWS 账号共享您拥有的图片**

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

1. 在导航窗格中，选择 **Images** (映像) 和 **Image Registry** (映像注册表)。

1. 在映像列表中，选择要共享的映像。

1. 依次选择 **Actions (操作)**、**Share (共享)**。

1. 在 **Share image (共享映像)** 对话框中，选择 **Add account (添加账户)**。

1. 键入您要与之共享图片的账户的 12 位数 AWS 账户 ID，然后选择该账户是否可以执行以下一项或两项操作：
   + 使用映像来启动映像生成器（如果您要创建新映像）。
   + 将映像用于实例集。

   要从账户列表中删除已与之共享映像的账户，请在要删除的账户对应的行中，选择 **Use for fleet (用于实例集)** 选项右边的 X 图标。

1. 要与更多 AWS 账户共享图片，请对要与之共享图片的每个账户重复步骤 6。

1. 选择 **Share Image (共享映像)**。

**添加或更新您拥有的映像的映像共享权限**

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

1. 在导航窗格中，选择 **Images** (映像) 和 **Image Registry** (映像注册表)。

1. 在映像列表中，选择要更改其权限的映像。

1. 在映像列表下方，针对您选择的映像选择 **Permissions (权限)** 选项卡，然后选择 **Edit (编辑)**。

1. 在 “**编辑图像权限**” 对话框中，根据需要为一个或多个 AWS 账户选择或清除以下一个或两个图像共享选项。如果您针对一个账户清除全部两个选项，将不再与该账户共享映像。
   + 使用映像来启动映像生成器（如果您要创建新映像）。
   + 将映像用于实例集。

   要从账户列表中删除已与之共享映像的账户，请在要删除的账户对应的行中，选择 **Use for fleet (用于实例集)** 选项右边的 X 图标。

1. 要编辑更多 AWS 账户的图像共享权限，请对要更新权限的每个账户重复步骤 5。

1. 选择 **Update image sharing permissions (更新映像共享权限)**。

# 停止在 Amazon WorkSpaces 应用程序中共享您拥有的图片
<a name="stop-sharing-image-with-all-accounts"></a>

请按照以下步骤停止与任何其他 AWS 账户共享您拥有的图片。

**停止与任何其他 AWS 账号共享您拥有的图片**

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

1. 在导航窗格中，选择 **Images** (映像) 和 **Image Registry** (映像注册表)。

1. 在映像列表中，选择要更改其权限的映像。

1. 在映像列表下方，针对您选择的映像选择 **Permissions (权限)** 选项卡，然后选择 **Edit (编辑)**。

1. 在 “**编辑图像权限**” 对话框中，在与之共享图像的所有 AWS 账户所在的行中，选择 “**用于队列**” 选项右侧的 X 图标。

1. 选择 **Update image sharing permissions (更新映像共享权限)**。

# 保留您的 Amazon WorkSpaces 应用程序图片 Up-to-Date
<a name="keep-image-updated"></a>

您可以通过执行以下任一操作 up-to-date来保留 WorkSpaces 应用程序映像：
+ [使用托管 WorkSpaces 应用程序图像更新更新映像](keep-image-updated-managed-image-updates.md)— 此更新方法提供最新的操作系统更新和驱动程序更新，以及最新的 WorkSpaces 应用程序代理软件。
+ [使用托管 WorkSpaces 应用程序代理版本更新 WorkSpaces 应用程序代理软件](keep-image-updated-manage-image-versions.md)— 此更新方法提供最新的 WorkSpaces 应用程序代理软件。

# 使用托管 WorkSpaces 应用程序图像更新更新映像
<a name="keep-image-updated-managed-image-updates"></a>

WorkSpaces Applications 提供了一种自动更新映像的方法，包括最新的操作系统更新、许可证中包含的应用程序更新、驱动程序更新和 WorkSpaces 应用程序代理软件。通过托管 WorkSpaces 应用程序映像更新，您可以选择要更新的映像。 WorkSpaces 应用程序在同一个 AWS 账户和区域中创建映像生成器来安装更新并创建新映像。创建新映像后，您可以在预生产队列上对其进行测试，然后再更新生产队列或与其他 AWS 账户共享映像。

**注意**  
托管 WorkSpaces 应用程序映像更新适用于微软 Windows 服务器、红帽企业 Linux 和 Rocky Linux 操作系统。

**注意**  
创建新映像后，您负责维护操作系统的更新。为此，您可以继续使用托管 WorkSpaces 应用程序映像更新。  
您负责维护 Amazon EC2 Windows 半虚拟化 (PV) 驱动程序、ENA 驱动程序和 AWS NVMe 驱动程序的更新。有关如何更新驱动程序的更多信息，请参阅[管理 EC2 实例的设备驱动程序](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/manage-device-drivers.html)。  
您还负责维护应用程序及其依赖项。要添加其他应用程序、更新现有应用程序或更改映像设置，您必须启动并重新连接到您创建映像时所用的映像生成器。或者，如果已删除该映像生成器，请启动基于您的映像的新映像生成器。然后，进行更改并创建新映像。

## 先决条件
<a name="keep-image-updated-managed-image-updates-prerequisites"></a>

以下是使用托管的映像更新的先决条件和注意事项。
+ 确保您的 WorkSpaces 应用程序账户配额（也称为限制）足以支持创建新的映像生成器和新映像。要申请增加配额，你可以使用 Service Quotas 控制台，网址为[https://console.aws.amazon.com/servicequotas/](https://console.aws.amazon.com/servicequotas/)。有关默认 WorkSpaces 应用程序配额的信息，请参阅[亚马逊 WorkSpaces 应用程序服务配额](limits.md)。
+ 您必须拥有所更新的映像。您无法更新与您共享的映像。
+ 当 WorkSpaces 应用程序创建映像生成器来安装最新的操作系统更新、驱动程序更新和 WorkSpaces 应用程序代理软件并创建新映像时，您需要为映像生成器实例的更新付费。
+ 支持的映像必须使用在 2017-07-24T00:00:00Z 或更高版本上发布的基本映像创建。
+ 支持英语和日语两种显示语言。有关更多信息，请参阅 [指定默认显示语言](configure-default-display-language.md)。
+ 使用最新版本的 SSM 代理。有关版本信息，请参阅 [WorkSpaces 应用程序基础映像和托管映像更新发行说明](base-image-version-history.md)。有关安装信息，请参阅[在适用于 Windows Server 的 EC2 实例上手动安装 SSM 代理](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-win.html)。

## 如何使用托管 WorkSpaces 应用程序图像更新来更新映像
<a name="keep-image-updated-managed-image-updates-how-to-update-image"></a>

要使用最新的补丁、驱动程序更新和 WorkSpaces 应用程序代理软件更新应用程序映像，请执行以下步骤。 WorkSpaces 

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

1. 在导航窗格中，选择 **Images** (映像) 和 **Image Registry** (映像注册表)。

1. 在映像列表中，选择要更新的映像。验证映像的状态是否为**可用**。

1. 选择**操作**、**更新**。

1. 在**更新映像**对话框中，执行以下操作：
   + 在 “**新图像名称**” 中，输入一个在 AWS 账户和区域中唯一的图像名称。图片名称不能以 “Amazon”、“”AWS或 “” 开头AppStream。
   + 在**新映像显示名称**中，您可以选择输入要为映像显示的名称。
   + 在**新映像描述**中，您可以选择提供对映像的描述。
   + 在**标签**中，您可以选择**添加标签**，然后键入标签的键和值。要添加更多标签，请重复此步骤。有关更多信息，请参阅 [标记您的 Amazon WorkSpaces 应用程序资源](tagging-basic.md)。

1. 选择**更新映像**。

   如果您当前的映像已经是最新的，则会有一条消息通知您。

1. 在导航窗格中，依次选择**映像**和**映像生成器**。

1. 在映像生成器列表中，验证是否有新的映像生成器处于**正在更新**状态。该映像生成器的名称包含一个随机的 10 位数后缀。

   该映像生成器是您在步骤 5 中为新映像选择的实例系列中尺寸最小的一个。未指定子网，因为映像生成器未连接到您的虚拟私有云（VPC）。

1. 选择**映像注册表**，验证您的新映像是否出现在列表中。

   创建映像时，控制台的映像注册表中的映像状态将显示为**正在创建**。

1. 创建映像后， WorkSpaces 应用程序将执行鉴定流程，以验证映像是否按预期运行。

   在此期间，该映像生成器（也用于此流程）将显示在**映像生成器**列表中，其状态为**等待资格认证**。

1. 成功完成资格认证流程后，控制台顶部会显示**成功**消息，并且映像注册表中该映像的状态显示为**可用**。

   此外， WorkSpaces 应用程序创建的映像生成器会自动删除。
**注意**  
根据操作系统更新的数量，映像更新可能需要几个小时才能完成。如果某个问题导致无法更新映像，则映像名称旁边会出现一个带有感叹号的红色图标，并且映像注册表中该映像的状态显示为**失败**。如果出现这种情况，请选择该映像，选择**通知**选项卡，然后查看所有错误通知。有关更多信息，请参阅文档的[映像内部服务](troubleshooting-notification-codes.md#troubleshooting-notification-codes-image)部分中有关通知代码故障排除的信息。  
如果认证过程不成功， WorkSpaces 应用程序创建的映像生成器仍会自动删除。

1.  WorkSpaces Applications 创建新映像后，在预生产队列上测试映像。在确认应用程序按预期工作后，使用新映像更新生产实例集。

# 使用托管 WorkSpaces 应用程序代理版本更新 WorkSpaces 应用程序代理软件
<a name="keep-image-updated-manage-image-versions"></a>

WorkSpaces Applications 提供了一种使用更新的 WorkSpaces 应用程序代理软件自动更新映像生成器的方法。这样一来，您可以在发布新版本的代理时创建新映像。之后，您可以在更新生产实例集之前测试该映像。有关如何管理 WorkSpaces 应用程序代理软件的更多信息，请参阅[管理 WorkSpaces 应用程序代理版本](base-images-agent.md)。

**注意**  
您负责安装和维护 Windows 操作系统、应用程序及其依赖项的更新。

要使用最新的 Windows 操作系统更新来更新 WorkSpaces 应用程序映像，请执行以下任一操作：
+ 每次发布新映像时，都会在最新的基本映像上安装应用程序。
+ 在现有映像生成器上安装 Windows 操作系统、应用程序及其依赖项的更新。
+ 在现有映像生成器上安装来自现有映像的 Windows 操作系统、应用程序及其依赖项的更新。

使用最新的 Windows 操作系统、应用程序及其依赖项以及 WorkSpaces 应用程序代理软件创建新映像后，请在开发队列上测试该映像。在确认应用程序按预期工作后，使用新映像更新生产实例集。

# 亚马逊 WorkSpaces 应用程序上的 Windows 更新和防病毒软件
<a name="windows-update-antivirus-software"></a>

WorkSpaces 应用程序流式处理实例是非永久性的。当用户流式传输会话结束时，A WorkSpaces pplications 会终止该会话使用的实例，并根据您的扩展策略，在队列中预置一个新实例来替换该实例。所有实例集实例均从同一映像预配置。由于映像一旦创建便无法更改，因此用户流式传输会话中使用的所有实例集实例仅具有在创建映像时已安装在基础映像上的 Windows 和应用程序更新。此外，由于用于流式传输会话的实例集实例在会话结束时终止，因此在流式传输会话期间对 Windows 或对该实例上的应用程序所做的任何更新将不会由同一用户或其他用户保留到以后的会话中。

**注意**  
如果您为堆栈启用了应用程序设置持久性， WorkSpaces 则如果这些配置更改存储在用户的 Windows 配置文件中，则应用程序将保留 Windows 和用户对未来会话所做的应用程序配置更改。但是，应用程序设置持久性功能仅保留 Windows 和应用程序配置设置。它不会在流实例上保留对 Windows 或应用程序的软件更新。

出于这些原因， WorkSpaces 应用程序对 WorkSpaces 应用程序实例上的 Windows 更新和防病毒软件采用以下方法。

## Windows 更新
<a name="windows-update-antivirus-software-wu"></a>

默认情况下， WorkSpaces 应用程序基础映像上未启用 Windows 更新。如果您在映像生成器上启用 Windows 更新，然后尝试创建映像，则 Image Assistant 将显示警告并在映像创建过程中禁用 Windows 更新。为确保您的实例集实例安装了最新的 Windows 更新，我们建议您在映像生成器上安装 Windows 更新，创建新映像，并定期使用新映像更新实例集。

## 杀毒软件
<a name="windows-update-antivirus-software-av"></a>

如果您选择在映像上安装杀毒软件，则建议您不要为杀毒软件启用自动更新。否则，杀毒软件可能会在用户会话期间尝试使用最新的定义文件或其他更新来进行自身更新。这可能会影响性能。此外，对杀毒软件所做的任何更新将不会在当前用户会话之后继续存在。为了确保您的实例集实例始终具有最新的杀毒更新，我们建议您执行以下任一操作：
+ 更新映像生成器并定期创建新映像（例如，通过使用 [Image Assistant CLI](https://docs.aws.amazon.com/appstream2/latest/developerguide/programmatically-create-image.html) 操作）。
+ 使用将扫描或其他操作委托给 always-up-to-date外部服务器的防病毒应用程序。

**注意**  
即使您没有为杀毒软件启用自动更新，杀毒软件也可能执行硬盘扫描或其他操作，这些操作可能会在用户会话期间影响您的实例集实例的性能。

在 2019 年 9 月 10 日当天或之后发布的 WorkSpaces 应用程序 Windows Server 2022/2019/2016 基础映像上，Windows Defender 默认处于未启用状态。在 2019 年 6 月 24 日发布的 WorkSpaces 应用程序 Windows Server 2016 和 Windows Server 2019 基础映像上，Windows Defender 默认处于启用状态。

**手动启用 Windows Defender**

如果未对您的基本映像启用 Windows Defender，您可以手动启用它。为此，请完成以下步骤。

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

1. 在左侧导航窗格中，依次选择**映像**和**映像生成器**。

1. 选择要在其上启用 Windows Defender 的映像生成器，验证它是否处于 **Running (正在运行)** 状态，然后选择 **Connect (连接)**。

1. 使用本地**管理员**账户或具有本地管理员权限的域账户登录到映像生成器。

1. 打开注册表编辑器。

1. 导航到注册表中的以下位置：**HKLM\$1 SOFTWARE\$1 Policies\$1 Microsoft\$1 Windows Defender\$1**。DisableAntiSpyware

1. 要编辑此注册表项，请双击或右键单击该注册表项，然后选择 **Modify (修改)**。

1. 在 **Edit DWORD (32-bit) Value (编辑 DWORD (32 位) 值)** 对话框的 **Value data (值数据)** 中，将 **1** 更改为 **0**。

1. 选择**确定**。

1. 关闭注册表编辑器。

1. 打开 Microsoft 管理控制台 (MMC) **Services (服务)** 管理单元 (`services.msc`)。

1. 在服务列表中，执行以下任一操作。

   如果你使用的是微软 Windows Server 2022/2025，请执行以下任一操作：
   + 右键单击 **Microsoft Defender 防病毒服务**，然后选择**启动**。
   + 双击 **Microsoft Defender 防病毒服务**，在属性对话框中选择**启动**，然后选择**确定**。

   如果您使用的是 Microsoft Windows Server 2019 或 2016，请执行以下任一操作：
   + 右键单击 **Windows Defender Antivirus Service (Windows Defender 防病毒服务)**，然后选择 **Start (启动)**。
   + 双击 **Windows Defender Antivirus Service (Windows Defender 防病毒服务)**，在属性对话框中选择 **Start (启动)**，然后选择 **OK (确定)**。

1. 关闭 **Services (服务)** 管理单元。

# 以编程方式在 Amazon WorkSpaces 应用程序中创建新映像
<a name="create-image-programmatically"></a>

您可以通过连接到映像生成器并使用 Image Assistant 命令行界面 (CLI) 操作，以编程方式创建 WorkSpaces 应用程序映像。有关更多信息，请参阅 [使用镜像助手 CLI 操作以编程方式创建您的 Amazon WorkSpaces 应用程序映像](programmatically-create-image.md)。

# 在 Amazon 应用程序中管理您的图片上包含许可的 WorkSpaces 应用程序
<a name="license-included-applications"></a>

你可以使用应用程序流式传输以下 Microsoft 许可附带的 WorkSpaces 应用程序。您可以在 Windows 映像上安装这些应用程序，使用此自定义映像创建实例集，然后流式传输这些应用程序。以下所有应用程序均支持 32 位和 64 位架构：
+ 微软 Office LTSC 专业版 Plus 2021/2024
+ 微软 Visio LTSC 专业版 2021/2024
+ 微软 Project 专业版 2021/2024
+ 微软 Office LTSC 标准 2021/2024
+ 微软 Visio LTSC 标准 2021/2024
+ 2021/2024 年微软 Project 标准
**重要**  
Microsoft Office、Visio 和 Project 必须遵循相同的版本。例如，您不能将 2021 应用程序与 2024 应用程序混合使用。
Microsoft Office、Visio 和 Project 必须遵循相同的架构。例如，您不能将 32 位应用程序与 64 位应用程序混合使用。
微软 Windows Server 2022 和 2025 支持微软 Office、Visio 和 Project 2021 Standard/Professional versions are supported on Microsoft Windows Server 2019/2022/2025. Microsoft Office, Visio, and Project 2024 Standard/Professional 版本。
要启用此功能，必须使用使用 2025 年 10 月 2 日当 WorkSpaces 天或之后发布的 WorkSpaces 应用代理的 Applications Image Builder。有关更多信息，请参阅 [管理 WorkSpaces 应用程序代理版本](base-images-agent.md)。或者，您的映像必须使用 2025 年 10 月 3 日当天或之后发布的托管 WorkSpaces 应用程序映像更新。有关更多信息，请参阅 [保留您的 Amazon WorkSpaces 应用程序图片 Up-to-Date](keep-image-updated.md)。
出站 TCP 端口 1688 在所有流式传输实例的管理网络接口上必须处于打开状态。
所有通过由具有一个或多个许可应用程序的映像提供支持的实例集进行流式传输的用户都需要按月为这些应用程序付费，无论使用情况如何。应用程序授权功能不限制特定用户的访问权限。
Image Builder 上随附许可证的应用程序未激活，因为它们是出于管理目的而安装的。当用户通过实例集实例流式传输时，这些应用程序便会激活。

**Topics**
+ [在映像上查看已安装随附许可证的应用程序列表](view-list-image.md)
+ [在映像生成器上查看随附许可证的应用程序列表](view-list-apps.md)
+ [安装或卸载随附许可证的应用程序](install-uninstall-apps.md)
+ [在映像生成器上为随附许可证的应用程序启用更新功能](updates-image-builder.md)
+ [在映像生成器上使用 PowerShell 为随附许可证的应用程序启用更新功能](enable-updates-managed-powershell.md)
+ [在映像生成器上使用托管映像更新为随附许可证的应用程序启用更新功能](enable-updates-managed.md)

# 在映像上查看已安装随附许可证的应用程序列表
<a name="view-list-image"></a>

**在映像上查看已安装随附许可证的应用程序列表**

要在映像上查看已安装随附许可证的应用程序列表，请按照以下步骤操作。

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

1. 在左侧导航窗格中选择**映像**，然后选择**映像注册表**选项卡。

1. 选择一个映像，然后选择**查看详细信息**。

1. 在**随附许可证的应用程序**下查看所有已安装应用程序的列表。

# 在映像生成器上查看随附许可证的应用程序列表
<a name="view-list-apps"></a>

**在映像生成器上查看随附许可证的应用程序列表**

要在映像生成器上查看随附许可证的应用程序列表，请按照以下步骤操作。

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

1. 在左侧导航窗格中选择**映像**，然后选择**映像生成器**选项卡。

1. 选择一个映像生成器，然后选择**查看详细信息**。

1. 在**随附许可证的应用程序**下查看应用程序及其状态列表。

# 安装或卸载随附许可证的应用程序
<a name="install-uninstall-apps"></a>

**安装或卸载随附许可证的应用程序**

要在映像上安装或卸载一个或多个随附许可证的应用程序，请按照以下步骤操作。

1. 完成下列选项之一：
   + 启动映像生成器并配置随附许可证的应用程序。有关更多信息，请参阅 [启动映像生成器来安装和配置流应用程序](tutorial-image-builder-create.md)。
   + 在映像生成器上管理随附许可证的应用程序。有关更多信息，请参阅 [使用第三方 SAML 2.0 身份提供商的基于属性的应用程序授权](application-entitlements-saml.md)。

1. 如果您拥有使用一个或多个随附许可证的应用程序创建的映像，可以使用此映像来创建实例集。连接到该实例集的用户可以访问这些应用程序。
**重要**  
所有通过由具有一个或多个许可应用程序的映像提供支持的实例集进行流式传输的用户都需要按月为这些应用程序付费，无论使用情况如何。应用程序授权功能不限制特定用户的访问权限。

如果您在安装或卸载随附许可证的应用程序期间遇到故障，您将在 Image Builder 的详细信息页面上看到故障状态。要解决这些问题，我们建议您连接到 Image Builder 并启用详细日志记录功能。有关更多信息，请参阅 [How to enable Microsoft 365 Apps for enterprise logging](https://learn.microsoft.com/en-us/troubleshoot/microsoft-365-apps/diagnostic-logs/how-to-enable-office-365-proplus-uls-logging)。如果在查看日志并进行故障排除后问题仍然存在，请联系 AWS 支持 寻求帮助。

# 在映像生成器上为随附许可证的应用程序启用更新功能
<a name="updates-image-builder"></a>

**在映像生成器上为随附许可证的应用程序启用更新功能**

默认情况下，系统会禁用所有随附许可证的应用程序的更新功能。您可以使用包含其中一个或多个应用程序的映像在映像生成器上为这些应用程序启用更新功能。实例集实例的更新功能处于禁用状态，以防止在会话设置期间进行安装。

您可以通过三个选项在映像生成器上为随附许可证的应用程序启用更新功能。

要在映像生成器上使用应用程序菜单为随附许可证的应用程序启用更新功能，请按照以下步骤操作。

1. 打开任意随附许可证的应用程序。

1. 依次选择**文件**、**账户**、**更新选项**和**启用更新**。

# 在映像生成器上使用 PowerShell 为随附许可证的应用程序启用更新功能
<a name="enable-updates-managed-powershell"></a>

要在映像生成器上使用 PowerShell 为随附许可证的应用程序启用更新功能，请按照以下步骤操作。
+ 以管理员身份运行以下命令： PowerShell 

  `Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration" -Name UpdatesEnabled -Value True `

# 在映像生成器上使用托管映像更新为随附许可证的应用程序启用更新功能
<a name="enable-updates-managed"></a>

要在映像生成器上使用托管映像更新为随附许可证的应用程序启用更新功能，请按照以下步骤操作。
+  使用托管映像更新接收随附 Microsoft 许可证的应用程序的更新。有关更多信息，请参阅 

  [使用托管 WorkSpaces 应用程序图像更新更新映像](keep-image-updated-managed-image-updates.md).

# 导入图片
<a name="import-image"></a>

您可以通过导入自定义镜像来创建 WorkSpaces 应用程序镜像 EC2 AMIs。下面将介绍操作方式：

1. 使用任何首选方法（包括 Im [EC2 age Builder](https://docs.aws.amazon.com/imagebuilder/)）自定义您的 EC2 AMI。

1. 将您的自定义 AMI 导入 WorkSpaces 应用程序以创建 WorkSpaces 应用程序映像

1. 或者，也可以使用 Image Builder 进行其他图像自定义

通过 AMI 导入创建的图像为`type = "custom"`，而 WorkSpaces 应用程序提供的图像则为`type = "native"`。

您可以将 stream.\$1 实例类型用于映像。`type = "native"`要使用以下任一实例类型，您必须导入您的 AMI 并使用创建映像`type = "custom"`。
+ GeneralPurpose.\$1
+ MemoryOptimized.\$1
+ ComputeOptimized.\$1
+ 加速。 \$1

## 图像导入的先决条件
<a name="import-image-prerequisites"></a>

所有这些先决条件对于成功执行工作流程都很重要。下面列出了支持的 AMI 配置和其他强制性要求。

### 必需的 AMI 属性
<a name="required-ami-properties"></a>

EBS  
+ 小于或等于 500GB 的大小
  + 您可以导入容量小于 200 GB 的 AMI，但是，导入的映像将至少使用 200GB。
+ GP2
  + 您可以导入具有 gp2 或 gp3 EBS 卷类型的 AMI，但是，导入的映像将使用 gp2。
+ 每张图像一卷
+ `/dev/sda1`根设备名称
+ 图像类型：机器
+ 架构：x86\$164
+ 虚拟化类型：HVM
+ 启动模式：UEFI
+ TPM Support：v2.0。这是必需的，请参阅-[https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/amiwindows-tpm.html\$1 查找启用 TPM ami-windows-tpm-find](https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/ami-windows-tpm.html#ami-windows-tpm-find) 的 AMI。
+ ENA Support：没错
+ 平台：Windows
+ 平台详情：Windows

### 操作系统属性
<a name="operating-system-properties"></a>

**Windows Server 2022/2025 全基版**  
+ 不支持 Windows 服务器**核心**
+ 不支持带有 SQL Server 的 Windows

座席  
+ EC2 启动 V2 版本 >= 2.1.1
+ 需要 SSM 代理

驱动程序  
+ EC2 ENA 驱动程序版本 >= 2.9.0
+ EC2 NVMe 驱动程序版本 >= 1.6.0

图书馆 Support  
+ .NET 框架 4.8 或更高版本
  + 默认安装在 Windows Server 2022/2025 中
+ PowerShell 5.1 或更高版本
  + 默认安装在 Windows Server 2022/2025 中
+ Windows 功能：不得安装远程桌面服务许可和远程桌面服务会话主机
+ 端口：端口 8000、8300 和 8443 必须处于解锁状态且未被占用
+ 启动模式：UEFI

如果你想将图像用于图形实例，例如加速.g4dn、accelated.g5、Accelated.G6 或加速.g6e，则需要在你的 AMI 上安装适当的 GRID 驱动程序。欲了解更多详情，请参阅 [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvidia-GRID-driver.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvidia-GRID-driver.html)。如果驱动程序设置不正确，则可以进行流式传输，但是，显卡可能不可用。

**重要**  
AMI 的 “所有者账户 ID” 必须是您的AWS账户 ID。您无法导入公有 EC2 AMI。  
在导入图像之前，请执行任何 Windows 更新并禁用 Windows 自动更新。  
目前 EC2 AMIs 不支持加密导入

### IAM 角色要求
<a name="iam-role-requirements"></a>

**重要**  
“创建具有以下权限的 IAM 角色以用于图像导入：

```
{  
    "Version": "2012-10-17",		 	 	   
    "Statement": [  
        {  
            "Sid": "AllowModifyImageAttributeWithTagCondition",  
            "Effect": "Allow",  
            "Action": "ec2:ModifyImageAttribute",  
            "Resource": "*"  
        },  
        {  
            "Sid": "AllowDescribeImages",  
            "Effect": "Allow",  
            "Action": "ec2:DescribeImages",  
            "Resource": "*"  
        }  
    ]  
}
```

为此 IAM 角色添加以下信任关系

```
{  
    "Version": "2012-10-17",		 	 	   
    "Statement": [  
        {  
            "Effect": "Allow",  
            "Principal": {  
                "Service": "appstream.amazonaws.com"  
            },  
            "Action": "sts:AssumeRole"  
        }  
    ]  
}
```

## 导入图像
<a name="import-image-procedure"></a>

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

1. 在左侧导航窗格中，选择 “**图像**”，然后选择 “**图像注册表**”。

1. 选择 “**导入图像**”。

1. **AMI ID**-输入要导入到 WorkSpaces 应用程序的 AMI ID。您也可以使用此字段搜索您的 AMI。

1. **图像名称**-为因导入操作而创建的图像输入唯一名称。

1. **显示名称***（可选）*-输入要为图像显示的。

1. **描述***（可选）*-输入图像的描述。

1. **IAM 角色**-选择您为映像导入创建的 IAM 角色。有关更多详细信息，请参阅[IAM 角色要求](#iam-role-requirements)。

1. **管理 WorkSpaces 应用程序代理**-如果您想始终使用最新的 WorkSpaces 应用程序代理版本，请选择此选项，您的流式处理实例将自动使用新代理版本发布AWS时提供的最新功能、性能改进和安全更新进行更新。

1. **运行时验证***（可选）*：选择此选项，服务将使用正在导入的图像预配置实例并运行流式测试。
   + 
**注意**  
这些流式传输测试将在后台执行，您无法通过 WorkSpaces 应用程序客户端连接到此实例。
   + 我们建议您使用此选项来更确信您的图像适用于 WorkSpaces 应用程序。
   + 您将按该实例的小时价格计费。
   + 如果您在进行可能不会影响流式传输测试的细微更改后重新导入 AMI，并且如果上次通过运行时验证，则您导入了此 AMI，则可以避免运行时验证。
   + **选择实例类型***（可选）*：为运行流式测试选择正确的实例系列、类型和大小。建议您使用计划用于创建队列的相同实例。

1. **应用程序目录和启动性能清单***（可选）*：提供详细信息，以便为最终用户创建应用程序目录并提高应用程序的启动性能。
   + **应用程序目录**：要创建应用程序目录，请指定有关安装您的映像的应用程序的详细信息。对于您计划流式传输的每个应用程序，可以指定名称、显示名称、要启动的可执行文件和要显示的图标。
   + **启动性能**：向应用程序优化清单中添加文件可缩短应用程序在新队列实例上首次启动所需的时间。优化清单是每个应用程序的行分隔文本文件。

   要了解更多信息，请参阅[应用程序详情](applications-details.md)。

1. **标签***（可选）*-选择 “**添加标签**”，然后键入标签的键和值。要添加更多标签，请重复此步骤。有关更多信息，请参阅 [标记您的 Amazon WorkSpaces 应用程序资源](tagging-basic.md)。

1. **导入图像**-查看您输入的所有信息，然后选择**导入图像**。服务将运行兼容性检查，以确保 AMI 与 WorkSpaces 应用程序兼容。
   + 如果静态检查失败，您将立即收到错误消息。
   + 如果静态检查通过，则您的导入请求将被提交，根据您选择的选项，创建新的 WorkSpaces 应用程序映像可能需要 30-60 分钟 `type = "custom"`

# 应用程序详情
<a name="applications-details"></a>

应用程序详细信息包含有关预热清单和应用程序目录配置的信息。

## 应用程序 PreWarm 清单
<a name="application-prewarm-manifests"></a>

在创建 WorkSpaces 应用程序映像时，您可以指定要向用户提供的应用程序。要加快应用程序的启动时间，您可以准备一份 PreWarm 清单。这本质上是用户启动应用程序时应用程序需要启动的文件目录。在实例配置期间，将在会话连接之前准备好这些文件，以加快用户会话中的应用程序启动时间。

在将预热清单导入应用程序环境之前，必须在 AMI 上预先创建。 WorkSpaces 您可以选择创建一个通用 Prewarm 清单文件，也可以为每个应用程序创建一个清单文件。这会改变您以后导入 AMI 的方式。

### 常见预热清单
<a name="common-prewarm-manifest"></a>

对于您要预热的每个应用程序，请启动该应用程序并执行用户可能执行的任何初始交互。然后，使用以下命令瞄准存储应用程序数据的目录。

```
dir -path "C:\Path\To\Folder\To\Optimize" -Recurse -ErrorAction SilentlyContinue | %{$_.FullName} | Out-File "C:\ProgramData\Amazon\Photon\Prewarm\PrewarmManifest.txt" -encoding UTF8 -append
```

这会将针对每个应用程序进行优化的文件追加到公共`C:\\ProgramData\\Amazon\\Photon\\Prewarm\\PrewarmManifest.txt`文件中。无需执行其他操作即可执行应用程序预热。 WorkSpaces 应用程序将在上述位置查找预热文件，如果存在则使用它。

此过程是可选的，随着预热清单大小的增加，队列配置时间也将增加。因此，请注意在优化和队列配置之间取得平衡。

### 特定于应用程序的清单
<a name="application-specific-manifests"></a>

在图像导入期间，您可能希望为每个应用程序指定单独的应用程序清单文件，以便更轻松地跟踪每个应用程序的预热资产。为此，请执行与上述相同的步骤，但不要创建公用`C:\\ProgramData\\Amazon\\Photon\\Prewarm\\PrewarmManifest.txt`文件，而是在您的 AMI 上为每个应用程序创建一个文件。

对于您要预热的每个应用程序，请启动该应用程序并执行用户可能执行的任何初始交互。然后，使用以下命令瞄准存储应用程序数据的目录。

```
dir -path "C:\Path\To\Folder\To\Optimize" -Recurse -ErrorAction SilentlyContinue | %{$_.FullName} | Out-File "C:\Path\To\My\<ApplicationName>PreWarm.txt" -encoding UTF8 -append
```

我们将在图像导入过程中使用这些应用程序预热文件。再说一遍，这是完全可选的。你可以选择使用此方法、Common Prewarm Manifest 方法，或者根本不使用预热清单。

## 应用程序目录配置
<a name="application-catalog-configs"></a>

`AppCatalogConfig`它允许您在 AMI 导入期间指定要注册到 WorkSpaces 应用程序映像的应用程序。`AppCatalogConfig`是以下结构的应用程序配置对象的 JSON 列表。

```
[  
    {  
        "Name": "Rufus", //Required and must be unique among the list of applications  
        "DisplayName": "Rufus",  
        "AbsoluteAppPath": "Rufus", //Required  
        "AbsoluteIconPath": "Rufus",  
        "AbsoluteManifestPath": "Rufus",  
        "WorkingDirectory": "Rufus",  
        "LaunchParameters": "Rufus"  
    }  

    ...  

    // Up to 50 applications total  
 ]
```

每个应用程序的唯一必填字段是`Name`和`AbsoluteAppPath`。每个字段的详细信息如下：

姓名 [**必填**]  
+ 给定名称供您的应用程序进行标识
+ 介于 1 到 100 个字符之间
+ 允许的字符正则表达式 `^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,99}$`
+ 在给定内容中必须是唯一的 AppCatalogConfig

DisplayName  
+ 要向用户显示的给定应用程序的显示名称
+ 介于 0 到 100 个字符之间
+ 允许的字符正则表达式 `^[a-zA-Z0-9][a-zA-Z0-9_. -]{0,99}$`

AbsoluteAppPath [**必填**]  
+ 用于启动应用程序的可执行文件的路径
  + 这是用户选择您的应用程序时将启动的可执行文件
+ 介于 1 到 32767 个字符之间
  + 此字符长度上限是为了支持 Windows 中的扩展文件路径。如果使用大于 260 个字符的文件路径，请确保您的 AMI 和应用程序已正确配置为支持 Windows 扩展文件路径。
+ 使用转义后的文件路径字符串，例如
  + `"C:\\Windows\\System32\\notepad.exe"`

AbsoluteManifestPath  
+ 仅在您使用时适用 [特定于应用程序的清单](#application-specific-manifests)
+ 此应用程序的预热清单文件路径
+ 介于 0 到 32767 个字符之间
  + 此字符长度上限是为了支持 Windows 中的扩展文件路径。如果使用大于 260 个字符的文件路径，请确保您的 AMI 和应用程序已正确配置为支持 Windows 扩展文件路径。
+ 使用转义后的文件路径字符串，例如
  + `"C:\\Path\\To\\PrewarmManifest.txt"`

AbsoluteIconPath  
+ AMI 上用于应用程序的图标文件的路径。
  + 流式传输到此图像时，将向用户显示此图标。
  + 如果未提供任何图标，则该图标将从可执行文件本身派生。
  + 请注意选择具有适当处理背景透明度的图标文件，以便为用户提供良好的客户体验
    + 使用 PNG 图片
+ 介于 1 到 32767 个字符之间
  + 此字符长度上限是为了支持 Windows 中的扩展文件路径。如果使用大于 260 个字符的文件路径，请确保您的 AMI 和应用程序已正确配置为支持 Windows 扩展文件路径。
+ 使用转义后的文件路径字符串，例如
  + `"C:\\Path\\To\\ApplicationIcon.png"`

WorkingDirectory  
+ 用于启动应用程序的工作目录
+ 介于 0 到 32767 个字符之间
  + 此字符长度上限是为了支持 Windows 中的扩展文件路径。如果使用大于 260 个字符的文件路径，请确保您的 AMI 和应用程序已正确配置为支持 Windows 扩展文件路径。
+ 使用转义后的文件路径字符串，例如
  + `"C:\\Path\\To\\Working\\Directory"`

LaunchParameters  
+ 用作中指定的可执行文件的启动参数的字符串 `AbsoluteAppPath`
+ 介于 0 到 1024 个字符之间
+ 使用带有所需启动参数完整列表的转义字符串，例如以下示例，该示例展示了如何使用 PowerShell 脚本作为应用程序，方法是将 PowerShell 可执行文件用作应用程序，并在启动参数中提供了脚本
  + AbsoluteAppPath
    + `"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"`
  + LaunchParameters
    + `"-File \"C:\\Path\\To\\App\\Script.ps1\""`

### 样本 AppCatalogConfig
<a name="sample-appcatalogconfig"></a>

这是 Notepad、Google Chrome 和 Mozilla Firefox 的简短示例 AppCatalogConfig 

```
[  
    {  
        "Name": "Notepad",  
        "DisplayName": "Notepad",  
        "AbsoluteAppPath": "C:\\Windows\\System32\\notepad.exe"
    },  
    {  
        "Name": "Chrome",  
        "DisplayName": "Chrome",  
        "AbsoluteAppPath": "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
        "LaunchParameters": "https://www.amazon.com/"  
    },  
    {  
        "Name": "Firefox",  
        "DisplayName": "Firefox",  
        "AbsoluteAppPath": "C:\\Program Files\\Mozilla Firefox\\firefox.exe",
        "LaunchParameters": "https://aws.amazon.com/"  
    }  
 ]
```

# 导出图片
<a name="export-image"></a>

您可以导出要创建的图像 EC2 AMIs。稍后你可以 AMIs 返回[导入图片](import-image.md)这些镜像来创建 WorkSpaces 应用程序镜像。这可以帮助您使用自己的 AMI 自定义工具对图像进行自定义。

**注意**  
在导出过程中，将从您的图像中移除以下组件  
WorkSpaces 应用程序代理
微软许可证包括使用 Image Builder 添加的应用程序
只能导出微软 Windows Server 2022 和 2025 年映像。

## IAM 角色要求
<a name="export-image-iam-requirements"></a>

**重要**  
创建具有以下权限的 IAM 角色以用于导出导入：

```
{  
    "Version": "2012-10-17",		 	 	   
    "Statement": [  
        {  
            "Sid": "AllowCopyImage",  
            "Effect": "Allow",  
            "Action": "ec2:CopyImage",  
            "Resource": "*"  
        },  
        {  
            "Sid": "AllowDescribeImages",  
            "Effect": "Allow",  
            "Action": "ec2:DescribeImages",  
            "Resource": "*"  
        },  
        {  
            "Sid": "AllowCreateTags",  
            "Effect": "Allow",  
            "Action": "ec2:CreateTags",  
            "Resource": "*"  
        }  
    ]  
}
```

为此 IAM 角色添加以下信任关系

```
{  
    "Version": "2012-10-17",		 	 	   
    "Statement": [  
        {  
            "Effect": "Allow",  
            "Principal": {  
                "Service": "appstream.amazonaws.com"  
            },  
            "Action": "sts:AssumeRole"  
        }  
    ]  
}
```

## 导出映像
<a name="export-image-procedure"></a>

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

1. 在导航窗格中，选择 **Images** (映像) 和 **Image Registry** (映像注册表)。

1. 在镜像列表中，选择要导出的私有镜像。

1. 选择 “**操作**”、“**导出**”。

1. 在**导出映像**对话框中，键入 AMI 的唯一 **AMI 名称****和可选的 AMI 描述**。

1. **IAM 角色**-选择您为映像导出创建的 IAM 角色。

1. 选中 “在**导出中复制标签” 复选框，您可以选择将标签从图像复制**到 AMI。

1. 选择 “**导出图像**”。

# 使用镜像助手 CLI 操作以编程方式创建您的 Amazon WorkSpaces 应用程序映像
<a name="programmatically-create-image"></a>

您可以通过连接到映像生成器并使用图像助手图形用户界面 (GUI) 或命令行界面 (CLI) 操作来创建 Amazon A WorkSpaces pplications 映像。Image Assistant CLI 操作提供了与 Image Assistant GUI 类似的功能。通过这些操作，您可以以编程方式执行以下操作：
+ 管理映像中包含的应用程序。
+ 保存、更新和重置默认应用程序设置。
+ 启用或禁用 WorkSpaces 应用程序动态应用程序框架。
+ 指定标签。
+ 创建映像。

 您可以使用这些操作将 WorkSpaces 应用程序映像创建与持续集成或部署软件开发过程相集成。

要使用 Image Assistant CLI 操作，请在映像生成器上使用您选择的命令行 shell。例如，你可以使用 Windows 命令提示符或 PowerShell。

**注意**  
映像生成器必须使用在 2019 年 7 月 26 日当天或之后发布的 WorkSpaces 应用程序代理版本。如果没有映像生成器，您必须创建一个。有关更多信息，请参阅 [启动映像生成器来安装和配置流应用程序](tutorial-image-builder-create.md)。

**Topics**
+ [使用 Image Assistant CLI 操作创建默认应用程序和 Windows 设置](create-default-app-windows-settings-image-assistant.md)
+ [使用 Image Assistant CLI 操作优化应用程序的启动性能](optimize-app-launch-performance-image-assistant-cli.md)
+ [以编程方式创建 Amazon WorkSpaces 应用程序映像的流程概述](process-overview-creating-image-programmatically-image-assistant-cli.md)
+ [用于创建和管理您的 Amazon WorkSpaces 应用程序映像的图像助手 CLI 操作](cli-operations-managing-creating-image-image-assistant.md)

# 使用 Image Assistant CLI 操作创建默认应用程序和 Windows 设置
<a name="create-default-app-windows-settings-image-assistant"></a>

您可以创建默认应用程序和 Windows 设置，以便用户可以快速开始使用他们的应用程序。当你创建这些设置时， WorkSpaces 应用程序会用你配置的配置文件替换 Windows 默认用户配置文件。然后使用 Windows 默认用户配置文件在实例集实例中为用户创建初始设置。如果您使用 Image Assistant CLI 操作创建这些设置，则应用程序安装程序或自动化应该会直接修改 Windows 默认用户配置文件。

要使用其他 Windows 用户的配置文件覆盖 Windows 默认用户配置文件，您也可以使用 Image Assistant `update-default-profile` CLI 操作。

有关配置默认应用程序和 Windows 设置的更多信息，请参阅中的*为应用程序用户创建默认 WorkSpaces 应用程序和 Windows 设置*[Amazon 应用程序中的默认应用程序和 Windows 设置以及 WorkSpaces 应用程序启动性能](customizing-appstream-images.md)。

# 使用 Image Assistant CLI 操作优化应用程序的启动性能
<a name="optimize-app-launch-performance-image-assistant-cli"></a>

WorkSpaces 应用程序允许您针对用户的流式传输会话优化应用程序的启动性能。使用 Image Assistant CLI 操作执行此操作时，您可以指定要针对应用程序启动进行优化的文件。通过将文件添加到应用程序优化清单，您可以缩短在新实例集实例上首次启动该应用程序所需的时间。但是，这也增加了实例集实例做好准备以供用户使用的时间。优化清单是每个应用程序的行分隔文本文件。

**注意**  
如果您同时使用 Image Assistant CLI 操作和 Image Assistant GUI 来配置应用程序优化清单，则两份清单将会合并。

下面是一个应用程序优化清单文件的示例：

```
C:\Program Files (x86)\Notepad++\autoCompletion
C:\Program Files (x86)\Notepad++\localization
C:\Program Files (x86)\Notepad++\plugins
C:\Program Files (x86)\Notepad++\themes
C:\Program Files (x86)\Notepad++\updater
C:\Program Files (x86)\Notepad++\userDefineLangs
C:\Program Files (x86)\Notepad++\change.log
C:\Program Files (x86)\Notepad++\config.xml
C:\Program Files (x86)\Notepad++\contextMenu.xml
C:\Program Files (x86)\Notepad++\doLocalConf.xml
C:\Program Files (x86)\Notepad++\functionList.xml
C:\Program Files (x86)\Notepad++\langs.model.xml
C:\Program Files (x86)\Notepad++\license.txt
C:\Program Files (x86)\Notepad++\notepad++.exe
C:\Program Files (x86)\Notepad++\readme.txt
C:\Program Files (x86)\Notepad++\SciLexer.dll
C:\Program Files (x86)\Notepad++\shortcuts.xml
C:\Program Files (x86)\Notepad++\stylers.model.xml
```

有关优化应用程序启动性能的更多信息，请参阅[Amazon 应用程序中的默认应用程序和 Windows 设置以及 WorkSpaces 应用程序启动性能](customizing-appstream-images.md)中的*优化应用程序的启动性能*。

# 以编程方式创建 Amazon WorkSpaces 应用程序映像的流程概述
<a name="process-overview-creating-image-programmatically-image-assistant-cli"></a>

您可以将 Image Assistant CLI 操作与应用程序安装自动化配合使用，创建完全编程的 WorkSpaces 应用程序映像创建工作流程。在应用程序安装自动化完成之后、映像创建之前，请使用 Image Assistant CLI 操作指定以下内容：
+ 您的用户可以启动的可执行文件
+ 您应用程序的优化清单
+ 其他 WorkSpaces 应用程序图像元数据

以下高级概述描述了以编程方式创建 WorkSpaces 应用程序映像的过程。

1. 使用应用程序安装自动化通过映像生成器安装所需的应用程序。此安装可能包括用户将启动的应用程序、所有依赖关系和后台应用程序。

1. 确定要优化的文件和文件夹。

1. 如果适用，请使用 Image Assistant `add-application` CLI 操作为应用程序映像指定 WorkSpaces 应用程序元数据和优化清单。

1. 要为应用程序映像指定其他 WorkSpaces 应用程序，请根据需要对每个应用程序重复步骤 1 到 3。

1. 如果适用，请使用 Image Assistant `update-default-profile` CLI 操作覆盖默认 Windows 配置文件，并为用户创建默认应用程序和 Windows 设置。

1. 使用 Image Assistant `create-image` CLI 操作来创建映像。

# 用于创建和管理您的 Amazon WorkSpaces 应用程序映像的图像助手 CLI 操作
<a name="cli-operations-managing-creating-image-image-assistant"></a>

本节介绍可用于创建和管理 WorkSpaces 应用程序映像的 Image Assistant CLI 操作。

在 Windows 映像生成器上，包含命令行界面的可执行文件位于：C:\$1Program Files\$1 Amazon\$1 Photon\$1ConsoleImageBuilder\$1 Image-Assistant.exe。为方便起见，此可执行文件包含在 Windows PATH 变量中。这让您可以调用 Image Assistant CLI 操作，而无需指定可执行文件的绝对路径。要调用这些操作，请键入 **image-assistant.exe** 命令。

在 Linux 映像生成器上，图像助手工具位于/ usr/local/appstream/image-assistant/AppStreamImageAssistant, with a symbolic link at /bin/AppStreamImageAssistant。

## `help` 操作
<a name="help-operation-image-assistant-cli"></a>

检索所有 Image Assistant CLI 操作的列表。列表中的每个操作均提供了描述和使用语法。要显示特定操作的帮助，请键入操作的名称并指定 **-help** 参数。例如：

```
add-application --help
```

**摘要**

```
help
```

**输出**

将可用操作的列表及其功能描述打印到标准输出中。

## `add-application` 操作
<a name="add-application-operation-image-assistant-cli"></a>

将应用程序添加到应用程序用户的 WorkSpaces 应用程序列表中。此列表中的应用程序包含在应用程序目录中。当用户登录应用程序流式传输会话时， WorkSpaces 应用程序目录会显示给他们。

**注意**  
如果您需要更改应用程序配置，请移除该应用程序并添加具有更新设置的应用程序。

**摘要**

```
add-application
--name <value>
--absolute-app-path <value>
[--display-name <value>]
[--absolute-icon-path <value>]
[--working-directory <value>]
[--launch-parameters <""-escaped value>]
[--absolute-manifest-path <value>]
```

**Options**

**`--name`（字符串）**  
应用程序的唯一名称。最大长度为 256 个字符。最多可以添加 50 个应用程序。不能使用空格字符。

**`--absolute-app-path`（字符串）**  
应用程序的可执行文件、批处理文件或脚本的绝对路径。该路径必须指向有效文件。

**`--display-name`（字符串）**  
应用程序目录中为应用程序显示的名称。如果您未指定显示名称，Applic WorkSpaces ations 会创建一个派生自可执行文件名的名称。创建的名称没有文件扩展名，并使用下划线代替空格。最大长度为 256 个字符。

**`--absolute-icon-path`（字符串）**  
应用程序图标的绝对路径。该路径必须指向以下任一类型的有效的图标文件：.jpg、.png 或 .bmp。最大尺寸为：256 像素 x 256 像素。如果未指定路径，则使用可执行文件的默认图标（如果有）。如果可执行文件没有默认图标，则使用默认的 WorkSpaces 应用程序应用程序图标。

**`--working-directory`（字符串）**  
启动应用程序时应用程序的初始工作目录。

**`--absolute-manifest-path`（字符串）**  
新的行分隔文本文件的路径。该文件指定了在将实例集实例提供给用户进行流式传输之前要优化的文件的绝对路径。该路径必须指向有效的文本文件。

**消息输出**


| 退出代码 | 打印到标准输出的消息 | 说明 | 
| --- | --- | --- | 
| 0 |  \$1"status": 0, "message": "Success"\$1  |  该应用程序已成功添加。 | 
| 1 |  \$1"status": 1, "message": "Administrator privileges are required to perform this operation"\$1  |  必须有管理员权限才能完成操作。 | 
| 1 |  \$1"status": 1, "message": "Unable to add more than 50 apps to the catalog."\$1  |  无法添加该应用程序，因为可以添加到应用程序应用程序目录的最大 WorkSpaces 应用程序数为 50。 | 
| 1 |  \$1"status": 1, "message": "Name is not unique"\$1  |  应用程序应用程序目录中已存在同名的 WorkSpaces 应用程序。 | 
| 1 |  \$1“状态”：1，“消息”：“找不到文件 (absolute-app-path)”\$1  |  找不到为 absolute-app-path 指定的文件。 | 
| 1 |  \$1"status": 1, "message": "Unsupported file extension"\$1  |  Absolute-app-path 参数仅支持以下文件类型：.exe 和 .bat。 | 
| 1 |  \$1"status": 1, "message": "Directory not found (working-directory)" |  找不到为 working-directory 指定的目录。 | 
| 1 |  \$1"status": 1, "message": "Optimization-manifest not found: <filename>"\$1  |  找不到为 optimization-manifest 指定的文件。 | 
| 1 |  \$1"status": 1, "message": "File not found: <filename>"\$1  |  找不到优化清单中指定的文件。 | 
| 255 |  \$1"status": 255, "message": <error message>\$1  |  出现意外错误。请重试该请求。如果错误仍然存在，请联系 AWS 支持 寻求帮助。有关更多信息，请参阅 [AWS 支持 中心](https://console.aws.amazon.com/support/home#/)。 | 

## `remove-application` 操作
<a name="remove-application-operation-image-assistant-cli"></a>

将应用程序从应用程序映像的应用程序列表中 WorkSpaces 移除。应用程序未被卸载或修改，但用户将无法从 “ WorkSpaces 应用程序” 应用程序目录中启动它。

**摘要**

```
remove-application
--name <value>
```

**Options**

**`--name`（字符串）**  
要删除的应用程序的唯一标识符。

**消息输出**


| 退出代码 | 打印到标准输出的消息 | 说明 | 
| --- | --- | --- | 
| 0 |  \$1"status": 0, "message": "Success"\$1  |  该应用程序已成功删除。 | 
| 1 |  \$1"status": 1, "message": "Administrator privileges are required to perform this operation"\$1  |  必须有管理员权限才能完成操作。 | 
| 1 |  \$1"status": 1, "message": "App not found"\$1  |  在应用程序应用程序目录中找不到指定的 WorkSpaces 应用程序。 | 
| 255 |  \$1"status": 255, "message": <error message>\$1  |  出现意外错误。请重试该请求。如果错误仍然存在，请联系 AWS 支持 寻求帮助。有关更多信息，请参阅 [AWS 支持 中心](https://console.aws.amazon.com/support/home#/)。 | 

## `list-applications` 操作
<a name="list-applications-operation-image-assistant-cli"></a>

列出应用程序目录中指定的所有应用程序。

**摘要**

```
list-applications
```

**消息输出**


| 退出代码 | 打印到标准输出的消息 | 说明 | 
| --- | --- | --- | 
| 0 |  \$1"status": 0, "message": "Success", "applications": [ \$1..app1.. \$1, \$1 ..app2.. \$1]\$1  |  应用程序应用程序目录中的 WorkSpaces 应用程序列表。 | 
| 255 |  \$1"status": 255, "message": <error message>\$1  |  出现意外错误。请重试该请求。如果错误仍然存在，请联系 AWS 支持 寻求帮助。有关更多信息，请参阅 [AWS 支持 中心](https://console.aws.amazon.com/support/home#/)。 | 

## `update-default-profile` 操作
<a name="update-default-profile-image-assistant-cli"></a>

将指定的 Windows 用户的配置文件复制到 Windows 默认用户配置文件。进行流式传输的新用户将继承存储在指定配置文件中的设置。

**注意**  
Linux Image Assistant CLI 工具不支持此操作。

**摘要**

```
update-default-profile
[--profile <value>]
```

**Options**

**`--profile`（字符串）**  
Windows 配置文件将被复制到 Windows 默认用户配置文件的用户的名称。名称应使用以下格式：  
"<domain>\$1<username>"  
如果映像生成器未加入 Microsoft Active Directory 域，请为该域输入句点“.”。如果您未指定用户，则使用 WorkSpaces 应用程序模板用户帐户。

**消息输出**


| 退出代码 | 打印到标准输出的消息 | 说明 | 
| --- | --- | --- | 
| 0 |  \$1"status": 0, "message": "Success"\$1  |  用户设置已成功复制到默认 Windows 配置文件。 | 
| 1 |  \$1"status": 1, "message": "Administrator privileges are required to perform this operation"\$1  |  必须有管理员权限才能完成操作。 | 
| 1 |  \$1"status": 1, "message": "Unable to copy file or folder: <path>. <reason>"\$1  |  无法复制用户设置，因为文件或文件夹不可用。 | 
| 1 |  \$1"status": 1, "message": "Cannot copy a domain user when not joined to a domain""\$1  |  指定了 Microsoft Active Directory 域用户，但映像生成器未加入 Active Directory 域。 | 
| 255 |  \$1"status": 255, "message": <error message>\$1  |  出现意外错误。请重试该请求。如果错误仍然存在，请联系 AWS 支持 寻求帮助。有关更多信息，请参阅 [AWS 支持 中心](https://console.aws.amazon.com/support/home#/)。 | 

## `reset-user-profile` 操作
<a name="reset-user-profile-image-assistant-cli"></a>

删除指定用户的 Windows 用户配置文件。

**注意**  
Linux Image Assistant CLI 工具不支持此操作。

**摘要**

```
reset-user-profile
[--profile <value>]
```

**Options**

**`--profile`（字符串）**  
Windows 配置文件将被删除的 Windows 用户的名称。名称应使用以下格式：  
"<domain>\$1<username>"  
如果映像生成器未加入 Microsoft Active Directory 域，请为该域输入句点“.”。

**消息输出**


| 退出代码 | 打印到标准输出的消息 | 说明 | 
| --- | --- | --- | 
| 0 |  \$1"status": 0, "message": "Success"\$1  |  已成功删除指定的用户设置。 | 
| 1 |  \$1"status": 1, "message": "Administrator privileges are required to perform this operation"\$1  |  必须有管理员权限才能完成操作。 | 
| 1 |  \$1"status": 1, "message": "Unable to copy file or folder: <path>. <reason>"\$1  |  无法重置用户设置，因为文件或文件夹不可用。 | 
| 1 |  \$1"status": 1, "message": "Cannot copy a domain user when not joined to a domain""\$1  |  指定了 Microsoft Active Directory 域用户，但映像生成器未加入 Active Directory 域。 | 
| 255 |  \$1"status": 255, "message": <error message>\$1  |  出现意外错误。请重试该请求。如果错误仍然存在，请联系 AWS 支持 寻求帮助。有关更多信息，请参阅 [AWS 支持 中心](https://console.aws.amazon.com/support/home#/)。 | 

## `create-image` 操作
<a name="create-image-operation-image-assistant-cli"></a>

启动映像创建工作流程，生成可用于 WorkSpaces 应用程序队列的 WorkSpaces 应用程序映像。

**摘要**

```
create-image
--name <value>
[--description <value>]
[--display-name <value>]
[--enable-dynamic-app-catalog] | [--no-enable-dynamic-app-catalog]
[--use-latest-agent-version] | [--no-use-latest-agent-version]            
[--tags <value>]
[--dry-run]
```

**Options**

**`--name`（字符串）**  
 WorkSpaces 应用程序镜像的名称。该名称在亚马逊 Web Services 账户和 AWS 地区内必须是唯一的。最大长度为 100 个字符。允许使用的字符包括：  
a-z、A-Z、0-9、下划线（-）、连字符（-）和句点（.）  
映像名称不能以以下任何前缀开头：'aws'、'appstream' 和 'amazon'。这些前缀是为 AWS 预留的。

**`--description`（字符串）**  
要为映像显示的描述。最大长度为 256 个字符。

**`--display-name`（字符串）**  
要为映像显示的名称。最大长度为 256 个字符。

**`--enable-dynamic-app-catalog` \$1 `--no-enable-dynamic-app-catalog`**  
启用或禁用对 WorkSpaces 应用程序动态应用程序框架的支持。如果您未指定任一参数，则系统不会启用对动态应用程序框架的支持。  
动态应用程序框架在 WorkSpaces 应用程序流式处理实例中提供操作，您可以使用这些操作来构建动态应用程序提供程序。动态应用程序提供程序可以使用这些操作修改您的用户可以实时访问的应用程序目录。有关更多信息，请参阅 [使用 WorkSpaces 应用程序动态应用程序框架构建动态应用程序提供程序](build-dynamic-app-provider.md)。

**`--use-latest-agent-version` \$1 `--no-use-latest-agent-version`**  
指定是将映像固定到当前安装的 WorkSpaces 应用程序代理版本，还是始终使用最新的代理版本。如果您未指定任何一个参数，则图像将固定到当前安装的 WorkSpaces 应用程序代理版本。有关更多信息，请参阅 [管理 WorkSpaces 应用程序代理版本](base-images-agent.md)。

**`--tags`（字符串）**  
要与映像关联的标签。标签是键值对。采用以下格式：  
--tags "mykey" "myval" "mykey2" "myval2"  
有关标签的更多信息，请参阅 [标记您的 Amazon WorkSpaces 应用程序资源](tagging-basic.md)。

**`--dry-run`（字符串）**  
在不创建映像的情况下执行验证。在创建映像之前，请使用此命令确定映像是否存在任何问题。

**消息输出**


| 退出代码 | 打印到标准输出的消息 | 说明 | 
| --- | --- | --- | 
| 0 |  \$1"status": 0, "message": "Success"\$1  |  创建映像的工作流已成功启动。 | 
| 1 |  \$1"status": 1, "message": "Administrator privileges are required to perform this operation"\$1  |  必须有管理员权限才能完成操作。 | 
| 1 |  \$1"status": 1, "message": "An image with the given name already exists"\$1  |  Amazon Web Services 账户中已存在具有指定名称的映像。 | 
| 1 |  \$1"status": 1, "message": "Invalid value (tags)"\$1  |  指定的标签无效。 | 
| 255 |  \$1"status": 255, "message": <error message>\$1  |  出现意外错误。请重试该请求。如果错误仍然存在，请联系 AWS 支持 寻求帮助。有关更多信息，请参阅 [AWS 支持 中心](https://console.aws.amazon.com/support/home#/)。 | 

# 创建基于 Linux 的映像
<a name="create-linux-based-images"></a>

您可以通过连接到 Linux 映像生成器、安装所需的 WorkSpaces 应用程序、创建默认应用程序设置和环境变量，以及使用命令行界面 (CLI) 工具或图像助手 (GUI) 工具将这些应用程序添加到应用程序目录中来创建基于 Linux 的 Amazon Applications 镜像。要打开 GUI 工具，请在应用程序列表中搜索 **Image Assistant**。

**Topics**
+ [为您的用户创建默认应用程序设置](create-default-app-settings.md)
+ [为 Linux 用户创建默认环境变量](create-default-variables-linux.md)
+ [优化 Linux 应用程序的启动性能](optimize-launch-performance.md)
+ [创建会话脚本](create-session-scripts.md)
+ [使用适用于 Linux 的 Image Assistant CLI 工具](image-assistant-cli.md)
+ [启用和禁用网络摄像头支持](webcam-support.md)
+ [为主文件夹启用和禁用大量文件同步模式](heavy-file-sync.md)
+ [教程：创建基于 Linux 的 WorkSpaces 自定义应用程序镜像](tutorial-create-linux-image.md)
+ [教程：为 Linux 映像启用日语支持](enable-japanese-support-linux.md)

# 为您的用户创建默认应用程序设置
<a name="create-default-app-settings"></a>

遵循这些步骤为用户创建默认的应用程序设置。

**Topics**
+ [步骤 1：在映像生成器上安装 Linux 应用程序](#app-settings-image-install)
+ [第 2 步：创建 TemplateUser 账户](#app-settings-template-user)
+ [步骤 3：创建默认的应用程序设置](#app-settings-image-create-default-app-settings)
+ [步骤 4：保存默认应用程序设置](#app-settings-image-save-default-app-settings)
+ [步骤 5：测试默认应用程序设置（可选）](#app-settings-image-test-applications)
+ [步骤 6：清除](#app-settings-image-finish)

## 步骤 1：在映像生成器上安装 Linux 应用程序
<a name="app-settings-image-install"></a>

在此步骤中，您将连接 Linux 映像生成器并在该映像生成器上安装您的应用程序。

**在映像生成器上安装应用程序**

1. 通过执行以下任一操作来连接到映像生成器：
   + [使用 WorkSpaces 应用程序控制台](managing-image-builders-connect-console.md)（仅适用于 Web 连接）
   + [创建直播 URL](managing-image-builders-connect-streaming-URL.md)（用于 Web 或 WorkSpaces 应用程序客户端连接）
**注意**  
您将以 ImageBuilderAdmin 用户身份登录到 Amazon Linux GNOME 桌面，并拥有根管理员权限。

1. 安装所需的应用程序。例如，要从公有 yum 存储库安装 Chromium 浏览器，请先打开终端应用程序，然后运行以下命令：

   **[ImageBuilderAdmin]\$1 sudo yum update && sudo yum install chromium.x86\$164** 

## 第 2 步：创建 TemplateUser 账户
<a name="app-settings-template-user"></a>

在此步骤中，您将创建一个 TemplateUser 帐户，该帐户将为您的直播用户创建默认的应用程序设置。

**创建 TemplateUser 账户**

1. 创建一个没有 root 权限的 TemplateUser 账户。例如，在终端窗口中，运行以下命令在映像生成器 TemplateUser 上创建：

   **[ImageBuilderAdmin]\$1 sudo useradd -m TemplateUser** 

   **[ImageBuilderAdmin]\$1 echo -e '<*password*>\$1n<*password*>\$1n' \$1 sudo passwd TemplateUser**

1. 切换到 TemplateUser 账户：

   **[ImageBuilderAdmin]\$1 su - TemplateUser** 

## 步骤 3：创建默认的应用程序设置
<a name="app-settings-image-create-default-app-settings"></a>

在此步骤中，您将为应用程序用户创建默认的 WorkSpaces 应用程序设置。这样做可以让您的用户在应用程序流式传输会话期间快速开始使用 WorkSpaces 应用程序，而无需自己创建或配置这些设置。

**为用户创建默认的应用程序设置**

1. 启动要为其创建默认设置的应用程序。例如，在终端窗口中，运行以下命令启动 Chromium 浏览器：

    **[TemplateUser]\$1 chromium-browser**

1. 配置应用程序的设置。例如，将 Chromium 浏览器的主页设置为 **https://aws.amazon.com**。

1. 关闭应用程序。

1. 注销：

   **[TemplateUser]\$1 logout** 

## 步骤 4：保存默认应用程序设置
<a name="app-settings-image-save-default-app-settings"></a>

在此步骤中，您将复制添加到 **/etc/skel/** 目录中的默认应用程序设置，并使其可供流用户使用。

**保存默认应用程序设置**
+ 在终端窗口中运行以下命令，为流用户复制默认应用程序设置：

   **[ImageBuilderAdmin]\$1 sudo cp -r -f /home/TemplateUser/. /etc/skel**

## 步骤 5：测试默认应用程序设置（可选）
<a name="app-settings-image-test-applications"></a>

在此步骤中，请验证您添加的应用程序是否正常运行，以及默认应用程序设置是否按预期运行。

**在映像生成器上测试您的应用程序和默认设置**

1. 创建一个没有根权限的测试用户。例如，在**终端**窗口中，运行以下命令以在映像生成器上创建 **test-user**：

   **[ImageBuilderAdmin]\$1 sudo useradd -m test-user**

   **[ImageBuilderAdmin]\$1 echo -e '*password*>\$1n<*password*>\$1n' \$1 sudo passwd test-user** 

1. 切换到测试用户：

   **[ImageBuilderAdmin]\$1 su - test-user**

1. 以测试用户身份启动应用程序（例如 Chromium）：

   **[test-user]\$1 /usr/bin/chromium-browser** 

1. 确认测试用户可以使用默认设置（例如，Chromium 主页为 https://aws.amazon.com/）。

1. 注销：

   **[test-user]\$1 logout**

## 步骤 6：清除
<a name="app-settings-image-finish"></a>

最后一步是进行清理。

**清理**

1. 删除 TemplateUser：

   **[ImageBuilderAdmin]\$1 sudo killall -u TemplateUser**

   **[ImageBuilderAdmin]\$1 sudo userdel -r TemplateUser**

1. 删除 test-user（如果跳过了步骤 5，则无需执行此操作）：

   **[ImageBuilderAdmin]\$1 sudo killall -u test-user**

   **ImageBuilderAdmin]\$1 sudo userdel -r test-user**

# 为 Linux 用户创建默认环境变量
<a name="create-default-variables-linux"></a>

您可以在 Linux 映像生成器实例上创建环境变量。创建环境变量后，这些变量便可用于根据该映像创建的流实例。

**注意**  
在 Linux 队列实例上，使用图像助手 (GUI) 工具设置的环境变量和默认系统环境变量通过应用程序中的/ etc/profile.d/appstream\$1system\$1vars.sh script. To access these environment variables, you must explicitly source the /etc/profile.d/appstream \$1system\$1vars.sh 脚本导出。

**为用户创建环境变量**

1. 如果文件夹 `/etc/profile` 不存在，请运行以下命令创建它：

   **[ImageBuilderAdmin]\$1 sudo mkdir -p /etc/profile.d** 

1. 要在此文件夹中创建新的 Shell 脚本文件（例如 my-environment.sh），请运行以下命令：

   **[ImageBuilderAdmin]\$1 vim my-environment.sh**

1. 在脚本文件的第一行，添加以下内容：

   **\$1\$1/bin/sh **

1. 在随后的每一行中，添加一个 **export** 命令来设置映像的环境变量。以下示例将 `$HOME/bin` 添加到 `PATH` 变量：

   **export PATH=”\$1HOME/bin:\$1PATH”**

1. 在 vim 中按 **Esc** 键返回命令模式，然后运行以下命令保存脚本并退出 vim：

   **:x**

1. 运行以下命令，让脚本作为程序运行：

   **[ImageBuilderAdmin]\$1 chmod \$1x my-environment.sh**

# 优化 Linux 应用程序的启动性能
<a name="optimize-launch-performance"></a>

如果您使用的是 Image Assistant GUI 工具，则该工具会自动优化应用程序的启动性能。

如果您使用的是 Image Assistant CLI，请使用以下步骤手动优化启动性能。当您创建文件并将其添加到应用程序优化清单后，应用程序在新实例集实例上首次启动时将更快地启动。但是，这也增加了实例集实例做好准备以供用户使用的时间。优化清单是每个应用程序的一个行分隔文本文件。

您可以手动或按照以下步骤创建清单文件（例如 < *your-app* >-manifest.txt）。

**创建清单文件**

1. 确保您尝试优化的应用程序已启动并正在运行。

1. 从 Linux 映像生成器的终端运行以下命令：

   **ps -ef \$1 grep <*application-process-name*>**

1. 从上一步的输出中搜索最小的 PID 编号。这是应用程序的根父进程的 PID。

1. 保持应用程序运行，并确保使用用户所需的初始组件。这就确保了优化过程能够捕获这些组件。

1. 使用以下内容创建脚本文件（例如 `~/getfilestool.sh`）：

   ```
   #!/bin/bash
   ## usage getfilestool.sh $pid
   lsof -p $(pstree -p $1 | grep -o '([0-9]\+)' | grep -o '[0-9]\+' | tr '\012' ,)|grep REG | sed -n '1!p' | awk '{print $9}'|awk 'NF'
   ```

1. 确保可以使用以下命令运行该文件：

   **[ImageBuilderAdmin]\$1 chmod u\$1x \$1/getfilestool.sh**

1. 运行以下命令，从步骤 3 中找到的根父进程中捕获所有正在运行的文件，并将其保存到临时清单文件。

   **[ImageBuilderAdmin]\$1 sudo \$1/getfilestool.sh <*root-parent-pid*> > /tmp/<y*our-app*>-manifest.txt **

1. 验证优化清单的内容，该清单是每个应用程序的行分隔文本文件。

您可以使用 Image Assistant 命令行界面（CLI）工具为每个应用程序指定优化清单。有关更多信息，请参阅 [使用适用于 Linux 的 Image Assistant CLI 工具](image-assistant-cli.md)。

# 创建会话脚本
<a name="create-session-scripts"></a>

WorkSpaces 应用程序在基于 Windows 和 Linux 的流媒体实例上都提供了实例会话脚本。有关会话脚本的更多信息，请参阅[使用会话脚本管理您的 Amazon WorkSpaces 应用程序用户的流媒体体验](use-session-scripts.md)。

会话脚本是在 WorkSpaces 应用程序映像中指定的。要在 Linux 实例上找到会话脚本配置文件，请导航到 `/opt/appstream/SessionScripts/config.json`。以下代码是一个示例 `config.json` 文件，它指定了名为“`test-session-start`”的会话启动脚本和名为“`test-session-stop`”的会话结束脚本及其运行时参数。确保 `config.json` 中引用的脚本具有运行权限，并确保定义了命令解释器（例如 \$1\$1/bin/bash）。

```
{
     "SessionStart": {
          "Executables": [
               {
                    "Context": "system",
                    "Filename": "/opt/appstream/SessionScripts/test-session-start",
                    "Arguments": "arg1",
                    "S3LogEnabled": true
               }
          ],
          "WaitingTime": 30
     },
     "SessionTermination": {
          "Executables": [
               { 
                    "Context": "system",
                    "Filename": "/opt/appstream/SessionScripts/test-session-stop", 
                    "Arguments": "arg2", 
                    "S3LogEnabled": true
               }
          ],
          "WaitingTime": 30
     }
}
```

# 使用适用于 Linux 的 Image Assistant CLI 工具
<a name="image-assistant-cli"></a>

在基于 Linux 的映像生成器上，您可以使用 Image Assistant CLI 工具**AppStreamImageAssistant**来创建和管理您的 WorkSpaces 应用程序映像。该工具位于 `/usr/local/appstream/image-assistant/AppStreamImageAssistant`，符号链接位于 `/bin/AppStreamImageAssistant`。这款适用于 Linux 的 CLI 工具支持的操作中，有许多与适用于 Windows 的 Image Assistant CLI 工具支持的操作相同。有关这些操作的更多信息，请参阅[用于创建和管理您的 Amazon WorkSpaces 应用程序映像的图像助手 CLI 操作](cli-operations-managing-creating-image-image-assistant.md)。

# 启用和禁用网络摄像头支持
<a name="webcam-support"></a>

WorkSpaces 应用程序通过将本地网络摄像头视频输入重定向到 WorkSpaces 应用程序流式传输会话来支持实时音频-视频 (AV)。此功能使您的用户能够在 WorkSpaces 应用程序流式传输会话中使用本地网络摄像头进行视频和音频会议。借助实时 AV 和对实时音频的支持，您的用户无需退出应用程序流式传输会话，即可使用熟悉的视频和音频会议 WorkSpaces 应用程序进行协作。

要使用此功能，必须使用使用 2022 年 9 月 21 日当天或之后发布的 Linux WorkSpaces 应用程序代理的 Linux 应用程序映像。 WorkSpaces 

**注意**  
由 Rocky Linux 或 Red Hat Enterprise Linux 提供支持的 stream.standard.small 实例不支持实时 AV。用户不会在客户端工具栏上看到“摄像头”和“麦克风”图标。

Linux 流式传输会话默认启用实时 AV 功能。要在 Linux 映像生成器上为用户配置网络摄像头权限，请创建 `/etc/appstream/appstream.conf` 并添加以下内容：

**注意**  
指定 **1** 可启用网络摄像头，指定 **0** 可禁用网络摄像头。

```
[webcam]
permission = 1
```

# 为主文件夹启用和禁用大量文件同步模式
<a name="heavy-file-sync"></a>

您可以为组织启用 “ Amazon Simple Storage Service 主文件夹” 选项。当您为 WorkSpaces 应用程序堆栈启用 Amazon S3 主文件夹时，该堆栈的用户可以在应用程序流式传输会话期间访问永久存储文件夹。您的用户不必进行任何额外配置即可访问其主文件夹。用户在其主文件夹中存储的数据会自动备份到您的 Amazon S3 存储桶中 AWS 账户，并在随后的会话中可供这些用户使用。有关更多信息，请参阅 [为 WorkSpaces 应用程序用户启用和管理主文件夹](home-folders.md)。

为了确保流畅的体验并解决一些现有限制，即当用户将大型文本文件从流媒体实例保存到主文件夹时，可能会出现文件同步不一致的情况，如果在使用 WorkSpaces 应用程序时将大文件上传到 Amazon S3 是常见的用户场景，则应用程序管理员可以启用 he **avy\$1sync** 配置选项。 WorkSpaces 启用此选项意味着可能会给主文件夹文件同步过程增加一些延迟，但可以保证与 Amazon S3 的所有同步的完整性。

该功能在 2024 年 9 月 12 日当天或之后发布的所有红帽企业 Linux WorkSpaces 镜像以及使用 Linux WorkSpaces 应用程序代理的 Linux 应用程序镜像上都可用。

对于 Red Hat Enterprise Linux 和 Amazon Linux 流式传输会话，默认禁用大量同步功能。要在 Red Hat Enterprise Linux 或 Amazon Linux 映像生成器上为用户配置大量同步权限，请创建 `/etc/appstream/appstream.conf`，并添加以下内容：

**注意**  
指定 **1** 可启用大量同步，指定 **0** 可禁用大量同步。

```
[storage]
heavy_sync = 1
```

# 教程：创建基于 Linux 的 WorkSpaces 自定义应用程序镜像
<a name="tutorial-create-linux-image"></a>

本教程介绍如何创建基于 Linux 的自定义 Amazon Appl WorkSpaces ications 镜像，其中包含可以流式传输给用户的应用程序。

**重要**  
不要在映像生成器中创建名为“as2-streaming-user”的用户。这是实例集的保留用户名。如果您在 WorkSpaces 应用程序工作流程之外创建此用户名，则可能会在 Fleets 中遇到流式传输问题。

**Topics**
+ [步骤 1：在映像生成器上安装 Linux 应用程序](#tutorial-linux-image-install)
+ [步骤 2：生成应用程序优化清单文件](#tutorial-linux-image-manifest)
+ [步骤 3：创建 WorkSpaces 应用程序应用程序目录](#tutorial-linux-image-catalog)
+ [步骤 4：创建默认应用程序设置和环境变量](#tutorial-linux-image-create-default-app-settings)
+ [步骤 5：测试应用程序和设置](#tutorial-linux-image-test-applications)
+ [步骤 6：完成映像的创建](#tutorial-linux-image-finish-create-image)
+ [步骤 7（可选）：标记和复制映像](#tutorial-linux-image-tag-copy)
+ [步骤 8：清除](#tutorial-linux-image-finish)

## 步骤 1：在映像生成器上安装 Linux 应用程序
<a name="tutorial-linux-image-install"></a>

在此步骤中，您将连接 Linux 映像生成器并在该映像生成器上安装您的应用程序。

**在映像生成器上安装应用程序**

1. 通过执行以下任一操作来连接到映像生成器：
   + [使用 WorkSpaces 应用程序控制台](managing-image-builders-connect-console.md)（仅适用于 Web 连接）
   + [创建直播 URL](managing-image-builders-connect-streaming-URL.md)（用于 Web 或 WorkSpaces 应用程序客户端连接）
**注意**  
您将以 ImageBuilderAdmin 用户身份登录到 Amazon Linux GNOME 桌面并拥有根管理员权限。

1. 安装所需的应用程序。例如，要从公有 yum 存储库安装 Chromium 浏览器，请先打开终端应用程序，然后运行以下命令：

   **[ImageBuilderAdmin]\$1 sudo yum update && sudo yum install chromium.x86\$164** 
**注意**  
仅从您信任的站点下载并安装应用程序。

## 步骤 2：生成应用程序优化清单文件
<a name="tutorial-linux-image-manifest"></a>

在此步骤中，您将为步骤 1 中安装的每个应用程序生成一个清单文件。

**生成清单文件以优化应用程序的启动性能**

1. 确保您尝试优化的应用程序（如 Chromium）已启动并正在运行。

1. 在终端窗口中运行以下命令，以列出与应用程序相关的进程：

   **[ImageBuilderAdmin]\$1 ps -ef \$1 grep chromium **

1. 从上面命令的输出中找到根父 PID。以下是示例输出，根父 PID 为 16712：  
**Example**  

   ```
   [ImageBuilderAdmin]$ ps -ef | grep chromium
   
   ImageBu+ 16712 4128 0 Aug26 ? 00:00:44 /usr/lib64/chromium- browser/chromium-browser --enable-plugins --enable-extensions -- enable-user- scripts --enable-printing --enable-gpu-rasterization -- enable-sync --auto-ssl- client-auth
   
   ImageBu+ 16726 16712 0 Aug26 ? 00:00:00 /usr/lib64/chromium- browser/chromium-browser --type=zygote --no-zygote-sandbox ImageBu+ 16727 16712 0 Aug26 ? 00:00:00 /usr/lib64/chromium- browser/chromium- browser --type=zygote
   
   ImageBu+ 16731 16727 0 Aug26 ? 00:00:00 /usr/lib64/chromium- browser/chromium-browser --type=zygot
   ```

1. 保持应用程序运行，并确保使用用户所需的初始组件。这就确保了优化过程能够捕获这些组件。

1. 创建包含以下内容的脚本文件（如 `~/getfilestool.sh`）：

   ```
   #!/bin/bash
   ## usage getfilestool.sh $pid
   lsof -p $(pstree -p $1 | grep -o '([0-9]\+)' | grep -o '[0-9]\+' | tr '\012' ,)|grep REG | sed -n '1!p' | awk '{print $9}'|awk 'NF'
   ```

1. 通过运行以下命令验证是否可以运行该文件：

   **[ImageBuilderAdmin]\$1 chmod u\$1x \$1/getfilestool.sh** 

1. 运行以下命令，从上述步骤 3 中找到的根父进程中捕获所有正在运行的文件，并将其保存到临时清单文件：

   **[ImageBuilderAdmin]\$1 sudo \$1/getfilestool.sh 16712 > /tmp/chromium-manifest.txt **

1. 验证优化清单的内容，该清单是每个应用程序的以行分隔的文本文件。

## 步骤 3：创建 WorkSpaces 应用程序应用程序目录
<a name="tutorial-linux-image-catalog"></a>

在此步骤中，您将使用映像生成器`AppStreamImageAssistant`上的 CLI 工具，通过为映像指定应用程序来创建应用程序目录。 WorkSpaces 对于您计划流式传输的每个应用程序，可以指定名称、显示名称、要启动的可执行文件和要显示的图标。

**创建 WorkSpaces 应用程序应用程序目录**

1. 在映像生成器桌面上，从侧面板或通过打开应用程序网格打开**终端**。

1. 运行 **AppStreamImageAssistant --help** 以查看可用命令列表。您将使用这些命令来添加应用程序和创建映像。

1. 运行以下命令将已安装的应用程序（例如 Chromium）添加到应用程序用户的 WorkSpaces 应用程序列表中：

   ```
   AppStreamImageAssistant add-application \
    --name Chromium \
    --absolute-app-path /usr/lib64/chromium-browser/chromium-browser \
    --display-name Chromium \
    --absolute-icon-path /usr/share/icons/hicolor/256x256/apps/chromium-browser.png \
    --absolute-manifest-path /tmp/chromium-manifest.txt
   ```

   或者，运行以下命令：

   ```
   AppStreamImageAssistant add-application \
    --name="Chromium" \
    --absolute-app-path="/usr/lib64/chromium-browser/chromium-browser" \
    --display-name="Chromium" \
    --absolute-icon-path="/usr/share/icons/hicolor/256x256/apps/chromium-browser.png" \
    --absolute-manifest-path="/tmp/chromium-manifest.txt"
   ```

1. 要添加更多应用程序，请对每个其他应用程序重复步骤 3。

1. 要查看已添加到目录中的应用程序列表以及图标路径和启动参数等元数据，请运行以下命令：

   **AppStreamImageAssistant list-applications**

1. 要从目录中删除应用程序，请运行以下命令：

   **AppStreamImageAssistant remove-application –-name *application\$1name***

## 步骤 4：创建默认应用程序设置和环境变量
<a name="tutorial-linux-image-create-default-app-settings"></a>

在此步骤中，您将为应用程序用户创建默认的应用程序设置和环境变量。 WorkSpaces 这样做可以让您的用户在应用程序流式传输会话期间快速开始使用 WorkSpaces 应用程序，而无需自己创建或配置这些设置。

**为用户创建默认应用程序和环境变量**

1. 启动要为其创建默认设置的应用程序。例如，在终端窗口中，运行以下命令启动 Chromium 浏览器：

    **[ImageBuilderAdmin]\$1 chromium-browser**

1. 配置应用程序的设置。例如，将 Chromium 浏览器的主页设置为 **https://aws.amazon.com**。

1. 确保 Chromium 应用程序已关闭，然后运行以下命令将 Chromium 的配置复制到 **/etc/skel**：

   **[ImageBuilderAdmin]\$1 sudo mkdir /etc/skel/.config**

   **[ImageBuilderAdmin]\$1 sudo cp -R \$1/.config/chromium /etc/skel/.config** 

1. 设置环境变量并将其添加到脚本文件中。例如，运行以下命令：

   **[ImageBuilderAdmin]\$1 echo "export *FOO*=*BAR*" \$1 sudo tee -a /etc/profile.d/myenvvars.sh** 

   **[ImageBuilderAdmin]\$1 sudo chmod \$1x /etc/profile.d/myenvvars.sh** 

## 步骤 5：测试应用程序和设置
<a name="tutorial-linux-image-test-applications"></a>

在此步骤中，请验证您添加的应用程序是否正常运行，以及默认应用程序设置和环境变量是否按预期运行。

**在映像生成器上测试您的应用程序和默认设置**

1. 创建一个没有根权限的测试用户。例如，在**终端**窗口中，运行以下命令以在映像生成器上创建 **test-user**：

   **[ImageBuilderAdmin]\$1 sudo useradd -m test-user**

   **[ImageBuilderAdmin]\$1 echo -e 'Pa55w0rdas2\$1\$1\$1\$1nPa55w0rdas2\$1\$1\$1\$1n' \$1 sudo passwd test-user** 

1. 切换到测试用户：

   **[ImageBuilderAdmin]\$1 su - test-user**

1. 以测试用户身份启动应用程序（例如 Chromium）：

   **[test-user]\$1 /usr/bin/chromium-browser** 

1. 确认测试用户可以使用默认设置（例如，Chromium 主页为 https://aws.amazon.com/）。

1. 验证测试用户是否可以使用环境变量。例如，运行以下命令：

   **[test-user]\$1 echo \$1*FOO***

   此命令应在终端中显示输出 ***BAR***。

1. 使用此映像生成器创建映像之前，请运行以下命令以删除测试用户：

   **\$1 logout test user**

   **[test-user]\$1 logout**

   **\$1 kill test user's running processes**

   **[ImageBuilderAdmin]\$1 sudo killall -u test-user**

   **\$1 delete user**

   **[ImageBuilderAdmin]\$1 sudo userdel -r test-user**

## 步骤 6：完成映像的创建
<a name="tutorial-linux-image-finish-create-image"></a>

在此步骤中，选择映像名称并完成映像的创建。

**创建映像**

1. 在**终端**窗口中，通过运行 **AppStreamImageAssistant create-image** 从映像生成器创建映像。此映像包含您已安装和注册的应用程序，以及您已配置的所有会话脚本和默认应用程序设置。

   要查看可用选项列表，请运行 **AppStreamImageAssistant create-image --help**。有关更多信息，请参阅[使用镜像助手 CLI 操作以编程方式创建您的 Amazon WorkSpaces 应用程序映像](programmatically-create-image.md)中的 **create-image** 操作。

1. 远程会话在片刻之后断开连接。当 **Lost Connectivity (连接丢失)** 消息出现时，关闭浏览器选项卡。在创建映像时，映像生成器状态将显示为 **Snapshotting (正在拍摄快照)**。在此过程完成之前，您无法连接到映像生成器。

1. 返回到控制台并导航到 **Images**、**Image Registry**。验证您的新映像是否出现在列表中。

   创建映像时，控制台的映像注册表中的映像状态将显示为 **Pending (待处理)**。您无法连接到处于**待处理**状态的映像。

1. 请选择**刷新**图标来更新状态。在创建映像后，映像状态将更改为 **Available (可用)**，并且映像生成器将自动停止。

   要继续创建映像，请启动映像生成器并从控制台连接到该生成器，或创建新的映像生成器。

## 步骤 7（可选）：标记和复制映像
<a name="tutorial-linux-image-tag-copy"></a>

您可以在创建映像期间或创建映像后向映像添加一个或多个标签。您也可以在同一区域内复制该映像，或者将该映像复制到同一 Amazon Web Services 账户中的新区域。复制源图像会生成相同但不同的目标图像。 AWS 但是，不会复制任何用户定义的标签。此外，您只能复制您创建的自定义映像，而不能复制由 AWS提供的基本映像。

**注意**  
您可以同时将最多两个映像复制到一个目标。如果将映像复制到的目标达到映像限制，您将收到一条错误。在这种情况下，要复制映像，您必须先从目标中删除映像。在目标低于映像配额（也称为限制）后，开始从源区域复制映像。有关更多信息，请参阅 [亚马逊 WorkSpaces 应用程序服务配额](limits.md)。

**向现有映像添加标签**

1. 在导航窗格中，选择 **Images** (映像) 和 **Image Registry** (映像注册表)。

1. 在映像列表中，选择要添加标签的映像。

1. 请依次选择**标签**、**添加/编辑标签**、**添加标签**。为标签指定键和值，然后选择**保存**。

有关更多信息，请参阅 [标记您的 Amazon WorkSpaces 应用程序资源](tagging-basic.md)。

**复制映像**

通过跨地理位置不同的区域复制映像，您可以基于同一映像从多个区域流式传输应用程序。通过在离用户更近的地方流式传输应用程序，可以改善用户使用应用程序流式传输 WorkSpaces 应用程序的体验。

1. 在导航窗格中，选择 **Images** (映像) 和 **Image Registry** (映像注册表)。

1. 在映像列表中，选择要复制的映像。

1. 选择 **Actions** (操作) 和 **Copy** (复制)。

1. 在 **Copy Image** (复制映像) 对话框中，指定以下信息，然后选择 **Copy Image:** (复制映像：)
   + 对于 **Destination region** (目标区域) 中，选择要将新映像复制到的区域。
   + 对于 **Name** (名称)，指定映像在复制到目标时将具有的名称。
   + 对于可选的 **Description** (描述)，指定映像在复制到目标时将具有的描述。

1. 要检查复制操作的进度，请返回控制台并导航到 **Images** (映像) 和 **Image Registry** (映像注册表)。使用导航栏切换到目标区域 (如果适用)，并确认您的新映像显示在映像列表中。

   新映像首次显示在控制台的映像注册表中时，其状态为 **Copying** (正在复制)。成功创建映像后，映像的状态将变为 **Available**，这意味着您可以使用映像启动堆栈并流式传输您的应用程序。

## 步骤 8：清除
<a name="tutorial-linux-image-finish"></a>

最后，您可以停止运行中的映像生成器以释放资源并避免您的账户产生意外费用。建议您停止任何未使用的、运行中的映像生成器。有关更多信息，请参阅[WorkSpaces 应用程序定价](https://aws.amazon.com/appstream2/pricing/)。

**停止运行中的映像生成器**

1. 在导航窗格中，选择 **Images** 和 **Image Builders**，然后选择运行中的映像生成器实例。

1. 依次选择 **Actions** 和 **Stop**。

# 教程：为 Linux 映像启用日语支持
<a name="enable-japanese-support-linux"></a>

本教程介绍如何为 Linux 映像启用日语支持。这使映像上的应用程序能够显示日语字符，并使流媒体用户可以在映像的流式传输会话中使用日语输入法。

**Topics**
+ [步骤 1：安装日语字体和输入法](#tutorial-japanese-font)
+ [步骤 2：设置系统时区](#tutorial-japanese-zone)
+ [步骤 3：设置系统区域设置和显示语言](#tutorial-japanese-locale)
+ [步骤 4：配置输入法](#tutorial-japanese-input)
+ [步骤 5：设置键盘布局](#tutorial-japense-keyboard)
+ [步骤 6：在映像生成器上验证](#tutorial-japense-verify)
+ [步骤 7：创建映像](#tutorial-japanese-create)

## 步骤 1：安装日语字体和输入法
<a name="tutorial-japanese-font"></a>

在此步骤中，您将连接 Linux 映像生成器并安装您选择的字体和输入法包。

**安装日语字体和输入法**

1. 通过执行以下任一操作来连接到映像生成器：
   + [使用 WorkSpaces 应用程序控制台](managing-image-builders-connect-console.md)（仅适用于 Web 连接）
   + [创建直播 URL](managing-image-builders-connect-streaming-URL.md)（用于 Web 或 WorkSpaces 应用程序客户端连接）
**注意**  
您将以 ImageBuilderAdmin 用户身份登录到 Amazon Linux GNOME 桌面，并拥有根管理员权限。

1. 安装所需的字体和输入法。为此，请打开终端应用程序，然后运行以下命令：

   **sudo yum install vlgothic-p-fonts.noarch**

   **sudo yum install ibus-kkc.x86\$164**

1. 除了上述命令外，对于 Rocky Linux 和 Red Hat Enterprise Linux，请运行以下命令：

   **sudo yum install glibc-langpack-ja**

## 步骤 2：设置系统时区
<a name="tutorial-japanese-zone"></a>

要设置系统时区，请运行以下命令：

**sudo timedatectl set-timezone "Asia/Tokyo"**

## 步骤 3：设置系统区域设置和显示语言
<a name="tutorial-japanese-locale"></a>

要设置系统区域设置和显示语言，请运行以下命令。

**设置系统区域设置和显示语言**

1. 运行命令 **sudo vim /etc/cloud/cloud.cfg** 以更新 `cloud-init config` 文件，将 **locale** 更改为 **locale: ja\$1JP.utf8**，然后保存并关闭该文件。

1. 通过运行 **sudo localectl set-locale LANG=ja\$1JP.utf8** 更新系统设置。

1. 通过运行 **sudo gsettings set org.gnome.system.locale region "ja\$1JP.utf8"** 更新 Gnome Shell 设置。

## 步骤 4：配置输入法
<a name="tutorial-japanese-input"></a>

为要添加到映像中的应用程序配置输入法。有关如何安装应用程序、生成清单文件和创建默认设置的更多信息，请参阅[教程：创建基于 Linux 的 WorkSpaces 自定义应用程序镜像](tutorial-create-linux-image.md)。在此步骤中，我们假设您已经安装了 Firefox 应用程序，它位于 `/usr/local/firefox/firefox`。

**配置输入法**

1. 通过运行命令 **sudo vim /usr/local/bin/update-input-method.sh** 创建脚本，并将以下内容添加到该脚本：

   ```
   #!/bin/bash
   
   function start_process()
   {
       command=$1
       process_name=$2
   
       process_count=$(pgrep $process_name -c)
       echo "$(date) current $process_name count: $process_count"
       while [ $process_count -lt 1 ]
       do
           echo "$(date) starting $process_name"
           eval $command
           sleep 1
           process_count=$(pgrep $process_name -c)
       done
       echo "$(date) $process_name started"
   }
   
   start_process "ibus-daemon --xim &" "ibus-daemon"
   start_process "/usr/libexec/ibus-engine-kkc --ibus &" "ibus-engine-kkc"
   
   gsettings set org.gnome.desktop.input-sources sources "[('ibus','kkc'), ('xkb', 'us')]"
   gsettings set org.gnome.desktop.wm.keybindings switch-input-source "['<Control>space']"
   gsettings set org.gnome.desktop.wm.keybindings switch-input-source-backward "['<Shift><Control>space']"
   
   echo "$(date) updated input source and switch shortcut"
   ```

   在上面的脚本中，第一个输入源（‘ibus’, ‘kkc’）是默认的输入法。您可以通过更改输入源的顺序来更改默认输入法。此外，“Control\$1Space”和“Shift\$1Control\$1Space”指定为切换输入法的快捷键组合。您可以指定自己的按键组合，供用户在流式传输会话期间切换输入法时使用。

1. 创建将添加到映像中用于启动应用程序（Firefox）的脚本。为此，请运行命令**sudo vim /usr/local/bin/firefox-jp.sh**，然后将以下内容添加到脚本中：

   ```
   #!/bin/bash
   
   # Gather required environment variables from the GNOME shell session
   while IFS= read -r -d $'\0' env_var; do
       case "$env_var" in
           DBUS_SESSION_BUS_ADDRESS=*|\
           GTK_IM_MODULE=*|\
           QT_IM_MODULE=*|\
           XMODIFIERS=*|\
           XAUTHORITY=*)
               echo "$env_var"
               export "$env_var"
               ;;
       esac
   done < "/proc/$(pgrep -u as2-streaming-user gnome-shell | head -n1)/environ"
   
   /usr/local/bin/update-input-method.sh > /var/tmp/update-input-method.log 2>&1 &
   
   /usr/local/firefox/firefox &
   ```

1. 通过运行以下命令为两个脚本添加运行权限：

   **sudo chmod \$1x /usr/local/bin/update-input-method.sh**

   **sudo chmod \$1x /usr/local/bin/firefox-jp.sh**

1. 如果您已经为应用程序创建了优化清单文件，请运行以下命令将应用程序启动脚本添加到应用程序目录：

   ```
   sudo AppStreamImageAssistant add-application \
   --name firefox \
   --absolute-app-path /usr/local/bin/firefox-jp.sh \
   --display-name firefox \
   --absolute-icon-path /usr/local/firefox/browser/chrome/icons/default/default128.png \
   --absolute-manifest-path /tmp/firefox-manifest.txt
   ```

或者，也可以通过将脚本 update-input-method .sh 作为单独的应用程序添加到图像的应用程序目录中来配置输入法。在流式传输会话期间，您的用户可以启动此应用程序以启用日语输入，并在同一会话中使用指定快捷键切换输入法。

## 步骤 5：设置键盘布局
<a name="tutorial-japense-keyboard"></a>

设置键盘布局，使其与用户在流式传输会话中使用的键盘相匹配。例如，您可以使用命令 **localectl list-keymaps** 列出所有可用的键盘映射，并使用命令 **sudo localectl set-keymap jp106** 将键盘映射设置为包含 106 个键的日语键盘。

## 步骤 6：在映像生成器上验证
<a name="tutorial-japense-verify"></a>

要在映像生成器上验证，请先运行命令 **sudo shutdown -r now** 重启映像生成器。重启后，再次连接到映像生成器，并验证包括时区、区域设置、语言和输入法在内的一切是否都能按预期运行。

## 步骤 7：创建映像
<a name="tutorial-japanese-create"></a>

在映像生成器上创建映像。有关更多信息，请参阅 [教程：创建基于 Linux 的 WorkSpaces 自定义应用程序镜像](tutorial-create-linux-image.md)。确保创建默认应用程序设置，包括您刚刚配置的区域设置。有关更多信息，请参阅[创建基于 Linux 的映像](create-linux-based-images.md)中的“为用户创建默认应用程序设置”。

根据此映像创建的所有 Linux 实例集实例都将具有您为该映像配置的默认时区、区域设置、语言和输入法设置。

# 使用会话脚本管理您的 Amazon WorkSpaces 应用程序用户的流媒体体验
<a name="use-session-scripts"></a>

WorkSpaces 应用程序提供实例会话脚本。当用户的流式传输会话中发生特定事件时，您可以使用这些脚本来运行自己的自定义脚本。例如，在用户的直播会话开始之前，您可以使用自定义脚本来准备 WorkSpaces 应用程序环境。您还可以在用户完成其流式传输会话后使用自定义脚本清理流实例。

会话脚本是在 WorkSpaces 应用程序镜像中指定的。这些脚本在用户上下文或系统上下文中运行。如果您的会话脚本使用标准输出来编写信息、错误或调试消息，则可以选择将这些脚本保存到 Amazon Web Services 账户内的 Amazon S3 存储桶中。

**Topics**
+ [在流式传输会话开始前运行脚本](run-scripts-before-streaming-sessions-begin.md)
+ [在流式传输会话结束后运行脚本](run-scripts-after-streaming-sessions-end.md)
+ [创建并指定会话脚本](create-specify-session-scripts.md)
+ [会话脚本配置文件](session-script-configuration-file.md)
+ [使用 Windows PowerShell 文件](using-powershell-files-with-session-scripts.md)
+ [记录会话脚本输出](logging-session-output.md)
+ [将存储连接器与会话脚本结合使用](use-storage-connectors-with-session-scripts.md)
+ [为会话脚本日志启用 Amazon S3 存储桶存储](enable-S3-bucket-storage-session-script-logs.md)
+ [在多会话实例集上使用会话脚本](session-scripts-multi-session-fleets.md)

# 在流式传输会话开始前运行脚本
<a name="run-scripts-before-streaming-sessions-begin"></a>

您可以将脚本配置为在用户的应用程序启动和其流式传输会话开始前运行最多 60 秒。这样，您就可以在用户开始流式传输其 WorkSpaces 应用程序之前自定义应用程序环境。在会话脚本运行时，会为您的用户显示加载转盘。当您的脚本成功完成或超过最长等待时间时，用户的流式传输会话将开始。如果脚本未成功完成，则会为用户显示错误消息。但是，不会阻止您的用户使用其流式传输会话。

在指定 Windows 实例上的文件名时，您必须使用双反斜杠。例如：

C:\$1\$1Scripts\$1\$1Myscript.bat

如果未使用双反斜杠，则会显示一个错误以通知您 .json 文件格式不正确。

**注意**  
脚本成功完成后，它们必须返回值 0。如果您的脚本返回的值不是 0，则 WorkSpaces 应用程序会向用户显示错误消息。

当您在流式传输会话开始之前运行脚本并且未启用 WorkSpaces 应用程序动态应用程序框架时，会发生以下过程：

![\[WorkSpaces Applications workflow diagram showing connection, application selection, and session launch steps.\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/images/session-scripts-without-DAF-non-domain-joined2.png)


1. 您的用户连接到未加入域的 WorkSpaces 应用程序队列实例。他们使用下列访问方法之一进行连接：
   + WorkSpaces 应用程序用户池
   + SAML 2.0
   + WorkSpaces 应用程序 API

1. 应用程序目录显示在 WorkSpaces 应用程序门户中，您的用户可以选择要启动的应用程序。

1. 发生下列情况之一：
   + 如果为用户启用了应用程序设置持久性，则会下载并装入用于存储用户的自定义项和 Windows 设置的应用程序设置虚拟硬盘 (VHD) 文件。在此情况下，需要 Windows 用户登录。

     有关应用程序设置持久性的信息，请参阅[为应用程序用户启用 WorkSpaces 应用程序设置持久性](app-settings-persistence.md)。
   + 如果未启用应用程序设置持久性，则表示 Windows 用户已登录。

1. 您的会话脚本启动。如果为用户启用了持久性存储，则还会启动存储连接器安装。有关持久性存储的信息，请参阅[为 WorkSpaces 应用程序用户启用和管理永久存储](persistent-storage.md)。
**注意**  
无需完成存储连接器安装即可启动流式传输会话。如果会话脚本在存储连接器安装完成之前完成，则流式传输会话将启动。  
有关监控存储连接器的装载状态的信息，请参阅[将存储连接器与会话脚本结合使用](use-storage-connectors-with-session-scripts.md)。

1. 您的会话脚本完成或超时。

1. 用户的流式传输会话启动。

1. 用户选择的应用程序启动。

有关 WorkSpaces 应用程序动态应用程序框架的信息，请参见[使用 WorkSpaces 应用程序动态应用程序框架构建动态应用程序提供程序](build-dynamic-app-provider.md)。

当您在流式传输会话开始之前运行脚本并启用 WorkSpaces 应用程序动态应用程序框架时，会发生以下过程：

![\[WorkSpaces Applications workflow from user login to application launch, including SAML authentication and session scripts.\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/images/session-scripts-with-DAF-domain-joined2.png)


1. 您的用户访问您组织的 SAML 2.0 应用程序门户，然后选择 WorkSpaces 应用程序堆栈。

1. 它们连接到已加入域的 WorkSpaces 应用程序队列实例。

1. 如果为用户启用了应用程序设置持久性，则会下载并装入用于存储用户的自定义项和 Windows 设置的应用程序设置 VHD 文件。

1. 发生 Windows 用户登录。

1. 应用程序目录显示在 WorkSpaces 应用程序门户中，您的用户可以选择要启动的应用程序。

1. 您的会话脚本启动。如果为用户启用了持久性存储，则还会启动存储连接器安装。
**注意**  
无需完成存储连接器安装即可启动流式传输会话。如果会话脚本在存储连接器安装完成之前完成，则流式传输会话将启动。  
有关监控存储连接器的装载状态的信息，请参阅[将存储连接器与会话脚本结合使用](use-storage-connectors-with-session-scripts.md)。

1. 您的会话脚本完成或超时。

1. 用户的流式传输会话启动。

1. 用户选择的应用程序启动。

# 在流式传输会话结束后运行脚本
<a name="run-scripts-after-streaming-sessions-end"></a>

您还可以将脚本配置为在用户的流式传输会话结束后运行。例如，当用户从 “ WorkSpaces 应用程序” 工具栏中选择 “**结束会话**” 或达到会话允许的最大持续时间时，您可以运行脚本。您还可以使用这些会话脚本在流式处理实例终止之前清理 WorkSpaces 应用程序环境。例如，您可以使用脚本来释放文件锁定或上传日志文件。在流式传输会话结束后运行脚本时，会发生以下过程：

![\[Flowchart showing WorkSpaces Applications session termination process with scripts and storage actions.\]](http://docs.aws.amazon.com/zh_cn/appstream2/latest/developerguide/images/session-scripts-termination.png)


1. 您的用户的 WorkSpaces 应用程序流式传输会话结束。

1. 会话终止脚本启动。

1. 会话终止脚本完成或超时。

1. 发生 Windows 用户注销。

1. 发生以下一种情况或同时发生以下两种情况（如果适用）：
   + 如果为用户启用了应用程序设置持久性，则会卸载用于存储用户的自定义项和 Windows 设置的应用程序设置 VHD 文件，并将该文件上传到您账户中的 Amazon S3 存储桶。
   + 如果为您的用户启用持久性存储，则存储连接器将完成最终同步并进行卸载。

1. 实例集实例将终止。

# 创建并指定会话脚本
<a name="create-specify-session-scripts"></a>

您可以为始终在线、按需和弹性实例集配置和指定会话脚本。

**为始终在线和按需实例集配置和指定会话脚本**

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

1. 在导航窗格中，依次选择 **Images (映像)** 和 **Image Builder (映像生成器)**。

1. 选择处于 **Running (正在运行)** 状态的映像生成器，然后选择 **Connect (连接)**。

1. 在出现提示时，选择 **Administrator (管理员)**。

1. 导航到 `C:\AppStream\SessionScripts`，并打开 `config.json` 配置文件。

   有关会话脚本参数的信息，请参阅[会话脚本配置文件](session-script-configuration-file.md)。

1. 完成更改后，保存并关闭 `config.json` 文件。

1. 在映像生成器桌面上，打开 **Image Assistant**。

1. （可选）指定要包括在映像中的任何其他应用程序。

1. 按照 Image Assistant 中的必要步骤完成映像的创建。

   如果无法验证会话脚本配置（例如，如果 .json 文件的格式不正确），则在选择 **Disconnect and create image (断开连接并创建映像)** 时，您会收到通知。
**注意**  
要找到基于 Linux 的映像生成器的会话脚本配置文件，请导航到 `/opt/appstream/SessionScripts/config.json`。

**配置并指定弹性实例集的会话脚本**

1. 创建一个包含会话脚本和 config.json 文件的 zip 文件。脚本文件将被复制到以下位置。您必须将这些位置用于您的 config.json。
   + 对于 Windows，使用 `C:\AppStream\SessionScripts\SessionScript`。
   + 对于 Linux，使用 `/opt/appstream/SessionScripts/SessionScript`。
**注意**  
要运行会话脚本文件，请确保 .zip 文件仅包含会话脚本和 `config.json` 文件，而不包含包含文件夹。有关更多信息，请参阅 [会话脚本配置文件](session-script-configuration-file.md)。

1. 将 zip 文件上传到您账户中的 Amazon S3 存储桶。
**注意**  
您的 VPC 必须提供对 Amazon S3 存储桶的访问权限。有关更多信息，请参阅 [将 Amazon S3 VPC 终端节点用于 WorkSpaces 应用程序功能](managing-network-vpce-iam-policy.md)。  
您的 S3 存储桶和 WorkSpaces 应用程序队列必须相同 AWS 区域。  
您必须具有 IAM 权限才能对 Amazon S3 存储桶中的会话脚本对象执行 `S3:GetObject` 操作。要了解有关将会话脚本存储在 Amazon S3 存储桶中的更多信息，请参阅[将应用程序图标、设置脚本、会话脚本和 VHD 存储在 S3 存储桶中](store-s3-bucket.md)。

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

1. 在导航窗格中，选择 **Fleets**。

1. 选择要更新的弹性实例集，然后选择**查看详细信息**。

1. 在**会话脚本设置**选项卡上，选择**编辑**。

1. 对于 **S3 中的会话脚本对象**，输入表示会话脚本对象的 S3 URI，或者选择**浏览 S3** 以导航到您的 S3 存储桶并找到会话脚本对象。

1. 完成更改后，选择**保存更改**。

1. 此时，会话脚本可用于所有启动的实例集实例。
**注意**  
您还可以在创建新的弹性实例集时配置会话脚本。

# 会话脚本配置文件
<a name="session-script-configuration-file"></a>

要在 Windows 实例中找到会话脚本配置文件，请导航到 C:\$1\$1 AppStreamSessionScripts\$1 config.json。在 Linux 实例上，导航到/ opt/appstream/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***  
要运行的会话脚本的完整路径。如果未指定此参数，则会话脚本不会运行。  
**类型**：字符串  
**必需**：否  
**约束：**文件名和完整路径的最大长度为 1000 个字符。  
**允许的值：****.bat**、**.exe**、**.sh**  
你也可以使用 Windows PowerShell 文件。有关更多信息，请参阅 [使用 Windows PowerShell 文件](using-powershell-files-with-session-scripts.md)。

***Arguments***  
会话脚本或可执行文件的参数。  
**类型**：字符串  
**必需**：否  
**长度约束：**最大长度为 1000 个字符。

***S3LogEnabled***  
当此参数的值设置为 **True** 时，会在您的 Amazon Web Services 账户中创建一个 S3 存储桶来存储会话脚本所创建的日志。默认情况下，该值设置为 **True**。有关更多信息，请参阅本主题后面的*记录会话脚本输出* 部分。  
**类型**：布尔值  
**必需**：否  
**允许的值：****True**、**False**

# 使用 Windows PowerShell 文件
<a name="using-powershell-files-with-session-scripts"></a>

要使用 Windows PowerShell 文件，请在**filename**参数中指定 PowerShell 文件的完整路径：

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

然后，在 **arguments** 参数中指定您的会话脚本：

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

最后，验证 PowerShell 执行策略是否允许您的 PowerShell 文件运行。

# 记录会话脚本输出
<a name="logging-session-output"></a>

在配置文件中启用此选项后， WorkSpaces 应用程序会自动捕获会话脚本中写入标准输出的输出。此输出将上传到您账户中的 Amazon S3 存储桶。您可以查看日志文件以进行故障排除或调试。

**注意**  
当会话脚本返回一个值时或 **WaitingTime** 中设置的值已过去时（以先到者为准），将上传日志文件。

# 将存储连接器与会话脚本结合使用
<a name="use-storage-connectors-with-session-scripts"></a>

启用 WorkSpaces 应用程序存储连接器后，它们将在会话启动脚本运行时开始装载。如果您的脚本依赖于正在装载的存储连接器，则可以等待连接器可用。 WorkSpaces 应用程序通过以下键维护 Windows 实例上的 Windows 注册表中存储连接器的挂载状态：

<provided user name>HKEY\$1LOCAL\$1MACHINE\$1 SOFTWARE\$1 Amazon\$1 存储\$1\$1 AppStream <Storage connector>

注册表项值如下所示：
+ 提供的用户名 – 通过访问模式提供的用户 ID。访问模式及其值如下所示：
  + 用户池 – 用户的电子邮件地址
  + 流式传输 URL – UserID
  + SAML – NameID。如果用户名包含斜杠（例如，域用户的 SAMAccount名称），则该斜杠将替换为 “-” 字符。
+ 存储连接器 – 为用户启用的持久性存储选项的连接器。存储连接器值如下所示：
  + HomeFolder
  + GoogleDrive
  + OneDrive

每个存储连接器注册表项都包含一个 **MountStatus**DWORD 值。下表列出了可能的值**MountStatus**。

**注意**  
要查看这些注册表项，必须在映像上安装 Microsoft .NET Framework 4.7.2 或更高版本。


| 值 | 说明 | 
| --- | --- | 
| 0 |  未为此用户启用存储连接器  | 
| 1 |  存储连接器安装正在进行中  | 
| 2 |  已成功安装存储连接器  | 
| 3 |  存储连接器安装失败  | 
| 4 |  存储连接器安装已启用，但尚未安装  | 

在 Linux 实例上，你可以通过查看文件 \$1/ 中的 appstream\$1home\$1folder\$1mount\$1status 的值来检查主文件夹的挂载状态。 config/appstream-home-folder/appstream-home-folder-mount-status。


| 值 | 说明 | 
| --- | --- | 
| True |  已成功挂载 Home 文件夹  | 
| False | 尚未挂载 Home 文件夹 | 

# 为会话脚本日志启用 Amazon S3 存储桶存储
<a name="enable-S3-bucket-storage-session-script-logs"></a>

当您在会话脚本配置中启用 Amazon S3 日志记录时， WorkSpaces 应用程序会从您的会话脚本中捕获标准输出。输出会定期上传到您的 Amazon Web Services 账户中的 S3 存储桶。对于每个 AWS 区域， WorkSpaces 应用程序都会在您的账户中创建一个存储桶，该存储桶对于您的账户和该地区都是唯一的。

您无需执行任何配置任务即可管理这些 S3 存储桶。它们完全由 WorkSpaces 应用程序服务管理。存储在每个存储桶中的日志文件在传输中使用 Amazon S3 的 SSL 端点进行加密，在静态期间使用 Amazon S3 托管的加密密钥进行加密。存储桶以特定格式命名，如下所述：

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

***region-code***  
这是在为会话脚本日志启用 Amazon S3 存储桶存储的情况下创建堆栈的 AWS 区域代码。

***account-id-without-hyphens***  
您的 Amazon Web Services 账户标识符。随机 ID 确保与该区域中的其他存储桶不发生冲突。存储桶名称的第一部分 `appstream-logs` 不随账户或区域而改变。

例如，如果您在美国西部（俄勒冈）区域 (us-west-2) 的镜像中指定会话脚本，账号为 123456789012 WorkSpaces ，则应用程序将在该地区的账户中创建一个名称显示的 Amazon S3 存储桶。只有具有足够权限的管理员才能删除此存储桶。

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

禁用会话脚本不会删除存储在 S3 存储桶中的任何日志文件。要永久删除日志文件，您或其他拥有足够权限的管理员必须使用 Amazon S3 控制台或 API 执行此操作。 WorkSpaces 应用程序添加了防止意外删除存储桶的存储桶策略。有关更多信息，请参阅[亚马逊 WorkSpaces 应用程序的身份和访问管理](controlling-access.md)中的“用于应用程序设置持久性的 IAM 策略和 Amazon S3 存储桶”**。

启用会话脚本后，将为启动的每个流式传输会话创建一个唯一文件夹。

 存储在您账户的 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***  
运行会话脚本的实例集的名称。

***access-mode***  
用户的身份方法：`custom`用于 WorkSpaces 应用程序 API 或 CLI、`federated` SAML 以及`userpool`用户池中的用户。

***user-id-SHA-256-hash***  
用户特定的文件夹名称。此名称是使用从用户标识符生成的小写 SHA-256 哈希十六进制字符串创建的。

***session-id***  
用户的流式传输会话的标识符。每个用户流式传输会话均生成一个唯一 ID。

***session-event***  
生成会话脚本日志的事件。事件值为：`SessionStart` 和 `SessionTermination`。

以下示例文件夹结构适用于从 test-stack 和 test-fleet 启动的流式传输会话。该会话使用来自美国西部（俄勒冈）区域 (us-west-2) 的用户 AWS 账户 ID `testuser@mydomain.com` 和设置组`test-stack`的 API：`123456789012`

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

此示例文件夹结构包含一个用于用户上下文会话启动脚本的日志文件，以及一个用于系统上下文会话启动脚本的日志文件（如果适用）。

# 在多会话实例集上使用会话脚本
<a name="session-scripts-multi-session-fleets"></a>

在多会话实例集上使用会话脚本时，为确保最佳性能和安全性，还有额外的要求和注意事项。

## 要求
<a name="session-scripts-multi-session-fleets-requirements"></a>

在单会话队列中，对于给定实例，**SessionStart**和**SessionTermination**挂钩保证只运行一次。这是因为会话与实例之间存在 1:1 的映射。使用多会话队列时，会话与实例之间存在一个 N: M 映射，其中每个会话都独立运行并挂钩。**SessionStart**SessionTermination****这意味着**SessionStart**和**SessionTermination**挂钩可以在给定实例上以许多不同的顺序运行多次。为了获得最佳体验，在多会话实例集上使用会话脚本时，您的会话脚本应符合以下条件：
+ 脚本是幂等脚本。

  当已执行某个操作后，脚本应能够优雅地处理同一实例上的多次执行。
+ 脚本是独立的。

  由于脚本按会话运行，因此如果一个会话**SessionTermination**在运行，而另一个会话在运行 **SessionStart**，则它们不应相互干扰，也不应干扰其他会话的体验。
+ 脚本性能卓越。

  在多会话实例上，可以同时调配多个会话。这意味着会话脚本可能会多次并发执行。脚本应该高效运行，不消耗过多资源，并且不影响该实例上其他用户的体验或会话的稳定性。

通过将会话脚本逻辑集中在运行脚本的特定用户会话上，可以满足其中的许多要求。

## 安全考虑因素
<a name="session-scripts-multi-session-fleets-security"></a>

WorkSpaces 不应将应用程序映像配置为允许任何用户对会话脚本文件具有写入权限。这会给恶意用户带来一个关键的攻击向量，使他们能够修改脚本文件。根据您的配置，这些文件随后可能会以 SYSTEM 身份或其他用户身份运行。

**重要**  
您有责任确保您的 WorkSpaces 应用程序映像配置安全。这对于多会话实例尤其重要，在这种实例中，多个用户使用同一个实例。如果未安全配置映像，则该实例的所有用户都将面临安全风险。

您的映像和会话脚本文件应符合以下要求：
+ 用户无权修改会话脚本文件。
+ 用户无权修改会话脚本 config.json。映像的默认行为限制了管理员的访问权限。

会话脚本可执行文件应存储在安全位置，以免在运行时被修改。

如果服务检测到会话脚本可执行文件已被修改，它将阻止在该实例上对该挂钩的任何后续执行，将日志文件上传到 Amazon S3（如果启用了 Amazon S3 日志记录），并且您将看到以下消息：

**The session script was not executed because the executable was modified after instance provisioning. Execution was skipped for security.**

如果您的用例需要在运行时修改会话脚本可执行文件（例如，如果您指向在运行时由自动更新流程修改的 EXE 文件），则上述检查将失败。在这种情况下，请使用脚本将执行重定向到修改后的可执行文件。当服务执行安全检查时，保持脚本在运行时未被修改。

如果您的会话脚本文件过大（超过 100 MB），则可能会导致实例和会话调配延迟，并且安全检查将花费更多时间（具体取决于实例类型和可用资源）。如果您的用例需要大型会话脚本，请考虑使用较小的脚本来重定向执行。这将改善实例和会话调配体验。

请注意，该服务仅检查会话脚本 config.json 中定义的可执行文件，这只是一种 fallback/best 努力机制。您有责任确保会话脚本可执行文件中的所有代码路径都是安全的，并且最终用户无法对其进行修改。