

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

# 为应用程序用户启用 WorkSpaces 应用程序设置持久性
<a name="app-settings-persistence"></a>

WorkSpaces 应用程序支持基于 Windows 的堆栈的永久应用程序设置。这意味着，用户的应用程序自定义项和 Windows 设置将在每个流式传输会话之后自动保存，并在下一个会话期间应用。用户可配置的持久性应用程序设置的示例包括但不限于：浏览器收藏夹、设置、网页会话、应用程序连接配置文件、插件和 UI 自定义项。这些设置将保存到您账户中的亚马逊简单存储服务 (Amazon S3) 存储桶中，该存储段位于 AWS 启用了应用程序设置持久性的区域内。它们可在每个 WorkSpaces 应用程序流式传输会话中使用。

**注意**  
基于 Linux 的堆栈目前不支持启用应用程序设置持久性。

**注意**  
可能会对存储在 S3 存储桶中的数据收取标准 Amazon S3 费用。有关更多信息，请参阅 [Amazon S3 定价](https://aws.amazon.com/s3/pricing/)。

**Topics**
+ [应用程序设置持久性如何工作](how-it-works-app-settings-persistence.md)
+ [启用应用程序设置持久性](enabling-app-settings-persistence.md)
+ [管理 VHDs 适用于您的用户的应用程序设置](administer-app-settings-vhds.md)

# 应用程序设置持久性如何工作
<a name="how-it-works-app-settings-persistence"></a>

持久性应用程序设置将保存到一个虚拟硬盘 (VHD) 文件中。当用户首次从启用了应用程序设置持久性的堆栈流式传输应用程序时，将创建此文件。如果与该堆栈关联的实例集所基于的映像包含默认应用程序和 Windows 设置，将对用户的首个流式传输会话使用这些默认设置。有关更多信息，请参阅[教程：使用 WorkSpaces 应用程序控制台创建自定义 WorkSpaces 应用程序镜像](tutorial-image-builder.md)中的*步骤 3：创建默认应用程序和 Windows 设置*。

当流式传输会话结束时，VHD 将卸载并上传到您账户的 Amazon S3 存储桶中。存储桶是在您首次为某个 AWS 区域中的堆栈启用永久性应用程序设置时创建的。该存储桶对于您的 AWS 账户和区域而言是唯一的。VHD 在传输过程中使用 Amazon S3 SSL 终端节点进行加密，静态使用[AWS 托管 CMKs](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)进行加密。

VHD 将挂载到 %username% 和 D:\$1C:\$1Users\$1%username% 中的流实例。如果您的实例未加入 Active Directory 域，则 Windows 用户名为 PhotonUser。如果您的实例已加入 Active Directory 域，则 Windows 用户名为已登录用户的用户名。

应用程序设置持久性无法跨不同的操作系统版本工作。例如，如果在一个堆栈上启用应用程序设置持久性且该堆栈与使用 Windows Server 2012 R2 映像的实例集关联，则在将实例集更新为使用运行不同的操作系统的映像（例如 Windows Server 2016）时，不会为堆栈用户保存之前的流式传输会话中的设置。相反，在更新实例集以使用新映像后，当用户从实例集实例启动流式传输会话时，将创建新的 Windows 用户配置文件。但是，如果对映像上的同一操作系统应用更新，则会保存之前的流式传输会话中的用户自定义项和设置。如果将对同一操作系统的更新应用于映像，则在用户从实例集实例启动流式传输会话时，将使用相同的 Windows 用户配置文件。

**重要**  
WorkSpaces 只有当流媒体实例加入[微软 Active Directory 域时，应用程序才支持依赖微软数据保护 API](https://docs.microsoft.com/en-us/windows/desktop/seccng/cng-dpapi) 的应用程序。如果流媒体实例未加入 Active Directory 域，则每个队列实例上的 Windows 用户是不同的。 PhotonUser由于 DPAPI 安全模型的运行方式，用户的密码不会为在此情况下使用 DPAPI 的应用程序保留。如果流实例已加入 Active Directory 域并且用户是域用户，则 Windows 用户名为已登录用户的用户名，并且用户的密码将为使用 DPAPI 的应用程序保留。

WorkSpaces 应用程序会自动将所有文件和文件夹保存在此路径中，但以下文件夹除外：
+ 联系人
+ 桌面
+ Documents
+ Downloads
+ 链接
+ 图片
+ Saved Games
+ Searches
+ 视频

在这些文件夹之外创建的文件和文件夹将保存在 VHD 中并同步到 Amazon S3。弹性实例集的默认 VHD 最大大小为 1 GB，始终在线和按需实例集的默认 VHD 最大大小为 5 GB。保存的 VHD 的大小是它所包含的文件和文件夹的总大小。 WorkSpaces 应用程序会自动为用户保存 HKEY\$1CURRENT\$1USER 注册表配置单元。对于新用户（Amazon S3 中不存在个人资料的用户）， WorkSpaces 应用程序使用默认配置文件创建初始配置文件。此配置文件是在映像生成器的以下位置创建：C:\$1users\$1default。

**注意**  
整个 VHD 必须先下载到流实例，然后流式传输会话才能开始。因此，包含大量数据的 VHD 可能会使流式传输会话的开始时间延迟。有关更多信息，请参阅 [启用应用程序设置持久性的最佳做法](best-practices-app-settings-persistence.md)。

启用应用程序设置持久性时，您必须指定一个设置组。设置组决定将哪些已保存的应用程序设置用于该堆栈中的流式传输会话。 WorkSpaces 应用程序会为设置组创建一个新的 VHD 文件，该文件单独存储在您 AWS 账户的 S3 存储桶中。如果该设置组在各堆栈之间共享，将在每个堆栈中使用相同的应用程序设置。如果堆栈需要自己的应用程序设置，请为堆栈指定一个唯一的设置组。

# 启用应用程序设置持久性
<a name="enabling-app-settings-persistence"></a>

查看以下主题，了解如何为应用程序用户启用应用程序设置持久性。 WorkSpaces 

**Topics**
+ [启用应用程序设置持久性的先决条件](prerequisites-app-settings-persistence.md)
+ [启用应用程序设置持久性的最佳做法](best-practices-app-settings-persistence.md)
+ [如何启用应用程序设置持久性](howto-enable-app-settings-persistence.md)

# 启用应用程序设置持久性的先决条件
<a name="prerequisites-app-settings-persistence"></a>

要启用应用程序设置持久性，您必须先执行以下操作：
+ 检查您是否拥有执行亚马逊 S3 操作的正确 AWS Identity and Access Management (IAM) 权限。有关更多信息，请参阅[亚马逊 WorkSpaces 应用程序的身份和访问管理](controlling-access.md)中的*用于主文件夹的 IAM 策略和 Amazon S3 存储桶*部分。
+ 使用根据 2017 年 12 月 7 日当天或之后发布 AWS 的基本图像创建的图像。有关已发布 AWS 基础映像的最新列表，请参阅[WorkSpaces 应用程序基础映像和托管映像更新发行说明](base-image-version-history.md)。
+ 将计划启用此功能的堆栈与基于使用 2018 年 8 月 29 日或之后发布的 A WorkSpaces pplications 代理版本的映像的队列相关联。有关更多信息，请参阅 [WorkSpaces 应用程序代理发行说明](agent-software-versions.md)。
+ 通过配置 Internet 访问或 Amazon S3 的 VPC 端点，启用从您的虚拟私有云（VPC）到 Amazon S3 的网络连接。有关更多信息，请参阅 [Amazon WorkSpaces 应用程序的联网和访问](managing-network.md)中的*主文件夹和 VPC 端点* 部分。

# 启用应用程序设置持久性的最佳做法
<a name="best-practices-app-settings-persistence"></a>

要启用应用程序设置持久性而不提供对实例的 Internet 访问，请使用 VPC 端点。此终端节点必须位于您的 WorkSpaces 应用程序实例所连接的 VPC 中。您必须附加自定义策略才能允许 WorkSpaces 应用程序访问终端节点。有关如何创建自定义策略的信息，请参阅[Amazon WorkSpaces 应用程序的联网和访问](managing-network.md)中的“主文件夹和 VPC 端点”**部分。有关私有 Amazon S3 端点的更多信息，请参阅《Amazon VPC 用户指南》**中的 [VPC 端点](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html)和 [Amazon S3 的端点](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html)。

# 如何启用应用程序设置持久性
<a name="howto-enable-app-settings-persistence"></a>

在创建堆栈时或创建堆栈之后，您可以使用应用程序控制台、 WorkSpaces WorkSpaces 应用程序 API、 AWS SDK 或 AWS 命令行界面 (CLI) 启用或禁用应用程序设置持久性。对于每个 AWS 区域，永久性应用程序设置存储在您账户的 S3 存储桶中。

首次为某个区域中的堆栈启用应用程序设置持久性时， WorkSpaces 应用程序会在同一 AWS 区域的 AWS 账户中创建一个 S3 存储桶。同一个存储桶存储该区域中所有用户和所有堆栈的应用程序设置 VHD 文件。 AWS 有关更多信息，请参阅[管理 VHDs 适用于您的用户的应用程序设置](administer-app-settings-vhds.md)中的 *Amazon S3 存储桶设置*。

**在创建堆栈期间启用应用程序设置持久性**
+ 按照[在 Amazon WorkSpaces 应用程序中创建堆栈](set-up-stacks-fleets-install.md)中的步骤操作，并确保选中了 **Enable Application Settings Persistence (启用应用程序设置持久性)**。

**为现有堆栈启用应用程序设置持久性**

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

1. 在左侧导航窗格中，选择 **Stacks (堆栈)**，然后选择要为其启用应用程序设置持久性的堆栈。

1. 在堆栈列表下，依次选择 **User Settings (用户设置)**、**Application Settings Persistence (应用程序设置持久性)**、**Edit (编辑)**。

1. 在 **Application Settings Persistence (应用程序设置持久性)** 对话框中，选择 **Enable Application Settings Persistence (启用应用程序设置持久性)**。

1. 确认当前设置组或键入新设置组的名称。完成后，选择 **Update (更新)**。

新的流式传输会话现在便已启用应用程序设置持久性。

# 管理 VHDs 适用于您的用户的应用程序设置
<a name="administer-app-settings-vhds"></a>

查看以下主题，了解如何管理 WorkSpaces 应用程序用户的应用程序设置的虚拟硬盘 (VHD) 文件。

**Topics**
+ [Amazon S3 存储桶存储](app-persistence-s3-buckets.md)
+ [重置用户的应用程序设置](app-persistence-s3-reset.md)
+ [启用 Amazon S3 对象版本控制和恢复用户的应用程序设置](app-persistence-enable-versions-revert-settings.md)
+ [增加应用程序设置 VHD 的大小](app-persistence-increase-VHD-size.md)

# Amazon S3 存储桶存储
<a name="app-persistence-s3-buckets"></a>

启用应用程序设置持久性后，用户的应用程序自定义和 Windows 设置将自动保存到虚拟硬盘 (VHD) 文件中，该文件存储在您的 AWS 账户中创建的 Amazon S3 存储桶中。对于每个 AWS 区域， WorkSpaces 应用程序都会在您的账户中创建一个存储桶，该存储桶对于您的账户和该地区都是独一无二的。用户所配置的所有应用程序设置都将存储在该区域的这个存储桶中。

您无需执行任何配置任务即可管理这些 S3 存储桶；它们完全由 WorkSpaces 应用程序服务管理。存储在每个存储桶中的 VHD 文件在传输过程中使用 Amazon S3 的 SSL 终端节点进行加密，静态文件则使用[AWS 托管 CMKs](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)进行加密。存储桶以特定格式命名，如下所述：

```
appstream-app-settings-region-code-account-id-without-hyphens-random-identifier
```

***region-code***  
这是使用应用程序设置持久性创建堆栈的 AWS 区域代码。

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

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

```
appstream-app-settings-us-west-2-1234567890123-abcdefg
```

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

启用应用程序设置持久性后，将为每个设置组创建一个唯一的文件夹来存储设置 VHD。S3 存储桶中该文件夹的层次结构取决于用户启动流式传输会话的方式，如下面一节所述。

存储在您账户的 S3 存储桶中的设置 VHD 所在的文件夹路径使用以下结构：

```
bucket-name/Windows/prefix/settings-group/access-mode/user-id-SHA-256-hash
```

***bucket-name***  
存储用户应用程序设置的 S3 存储桶的名称。该名称格式如本节中前面所述。

***prefix***  
Windows 版本特定的前缀。例如，Windows Server 2012 R2 的 v4。

***settings-group***  
设置组值。此值将应用于共享相同应用程序设置的一个或多个堆栈。

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

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

以下示例文件夹结构适用于使用 API 或 CLI 访问的直播会话，其用户 ID 为，ID 为`testuser@mydomain.com`，设置组`test-stack`位于美国西部（俄勒冈）区域 (us-west-2)： AWS 账户 `123456789012`

```
appstream-app-settings-us-west-2-1234567890123-abcdefg/Windows/v4/test-stack/custom/a0bcb1da11f480d9b5b3e90f91243143eac04cfccfbdc777e740fab628a1cd13
```

您可以通过网站或网上提供的开源编码库生成用户 ID 的小写 SHA-256 哈希值，并据此确定特定用户的文件夹。

# 重置用户的应用程序设置
<a name="app-persistence-s3-reset"></a>

要重置用户的应用程序设置，您必须从 AWS 账户的 S3 存储桶中找到并删除 VHD 和关联的元数据文件。请确保在用户的活动流式传输会话期间不执行此操作。删除用户的 VHD 和元数据文件后，下次用户从启用了应用程序设置持久性的流媒体实例启动会话时， WorkSpaces 应用程序会为该用户创建新的设置 VHD。

**重置用户的应用程序设置**

1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在 **Bucket name (存储桶名称)** 列表中，选择包含要重置的应用程序设置 VHD 的 S3 存储桶。

1. 找到该 VHD 所在的文件夹。有关如何导航 S3 存储桶文件夹结构的更多信息，请参阅本主题前面的 *Amazon S3 存储桶存储*。

1. 在 **Name (名称)** 列表中，选中该 VHD 和 REG 旁的复选框，选择 **More (更多)**，然后选择 **Delete (删除)**。

1. 在 **Delete objects (删除对象)** 对话框中，验证 VHD 和 REG 已列出，然后选择 **Delete (删除)**。

下次用户从启用了应用程序设置持久性并带有适用设置组的实例集进行流式传输时，将创建一个新的应用程序设置 VHD。此 VHD 将在会话结束时保存到 S3 存储桶中。

# 启用 Amazon S3 对象版本控制和恢复用户的应用程序设置
<a name="app-persistence-enable-versions-revert-settings"></a>

当您的用户更改其应用程序设置时，您可以使用 Amazon S3 对象版本控制和生命周期策略来管理这些设置。通过 Amazon S3 对象版本控制，您可以保留、检索和还原设置 VHD 的每个版本。这使您可以从意外用户操作和应用程序故障进行恢复。如果启用了版本控制，每个流式传输会话之后，应用程序设置 VHD 的新版本将同步到 Amazon S3。新版本不会覆盖早期版本，因此如果您的用户设置发生问题，可以恢复到 VHD 的上一个版本。

**注意**  
应用程序设置 VHD 的每个版本都将作为一个单独对象保存到 Amazon S3 中，并且需要支付相应费用。

默认情况下在 S3 存储桶中不启用对象版本控制，因此您必须显式启用它。

**为应用程序设置 VHD 启用对象版本控制**

1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在 **Bucket name (存储桶名称)** 列表中，选择要启用对象版本控制的应用程序设置 VHD 所在的 S3 存储桶。

1. 选择**属性**。

1. 依次选择 **Versioning (版本控制)**、**Enable versioning (启用版本控制)**，然后选择 **Save (保存)**。

要使旧版本的应用程序设置过期 VHDs，您可以使用 Amazon S3 生命周期策略。有关信息，请参阅《Amazon Simple Storage Service 用户指南》**中的[如何为 S3 存储桶创建生命周期策略？](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-lifecycle.html)

**恢复用户的应用程序设置 VHD**

通过从适用的 S3 存储桶删除 VHD 的较新版本，您可以恢复到用户应用程序设置 VHD 的早期版本。当用户是否具有活动的流式传输会话时，请不要执行此操作。

1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在 **Bucket name (存储桶名称)** 列表中，选择要恢复到的用户应用程序设置 VHD 版本所在的 S3 存储桶。

1. 找到并选择该 VHD 所在的文件夹。有关如何导航 S3 存储桶文件夹结构的信息，请参阅本主题前面的 *Amazon S3 存储桶存储*。

   选择该文件夹时，即会显示设置 VHD 及关联的元数据文件。

1. 要显示 VHD 及元数据文件版本的列表，请选择 **Show (显示)**。

1. 找到要恢复到的 VHD 版本。

1. 在 **Name (名称)** 列表中，选中该 VHD 及关联元数据文件的较新版本旁的复选框，选择 **More (更多)**，然后选择 **Delete (删除)**。

1. 确认要恢复到的应用程序设置 VHD 及关联的元数据文件是这些文件的最新版本。

下次用户从启用了应用程序设置持久性并带有适用设置组的实例集进行流式传输时，用户设置的已恢复版本即会显示出来。

# 增加应用程序设置 VHD 的大小
<a name="app-persistence-increase-VHD-size"></a>

弹性实例集的默认 VHD 最大大小为 1 GB，始终在线和按需实例集的默认 VHD 最大大小为 5 GB。如果用户需要额外的应用程序设置空间，您可以将适用的应用程序设置 VHD 下载到 Windows 计算机以对其进行扩展。然后，将 S3 存储桶中的当前 VHD 替换为更大的一个 VHD。当用户是否具有活动的流式传输会话时，请不要执行此操作。

**注意**  
要减小虚拟硬盘（VHD）的物理大小，请在结束会话之前清除回收站。这还能减少上传和下载时间，并改善整体用户体验。

**增加应用程序设置 VHD 的大小**
**注意**  
必须先下载完整 VHD，然后用户才能流式传输应用程序。增加应用程序设置 VHD 的大小可能会增加用户启动应用程序流式传输会话所需的时间。

1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在 **Bucket name (存储桶名称)** 列表中，选择包含要扩展的应用程序设置 VHD 的 S3 存储桶。

1. 找到并选择该 VHD 所在的文件夹。有关如何导航 S3 存储桶文件夹结构的信息，请参阅本主题前面的 *Amazon S3 存储桶存储*。

   选择该文件夹时，即会显示设置 VHD 及关联的元数据文件。

1. 将 Profile.vhdx 文件下载到 Windows 计算机上的一个目录中。下载完成后，请勿关闭您的浏览器，因为稍后您将再次使用浏览器上传扩展的 VHD。

1. 要使用 Diskpart 将 VHD 的大小增加到 7 GB，请以管理员身份打开命令提示符，并键入以下命令。

   `diskpart`

   `select vdisk file="C:\path\to\application\settings\profile.vhdx"`

   `expand vdisk maximum=7000`

1. 然后，键入以下 Diskpart 命令找到和附加该 VHD，并显示卷列表：

   `select vdisk file="C:\path\to\application\settings\profile.vhdx"`

   `attach vdisk`

   `list volume`

   在输出中，记下带有 “AppStreamUsers” 标签的卷号。在下一步中，您将选择此卷，以便可将其扩大。

1. 键入以下命令：

   `select volume ###`

   其中 \$1 \$1 \$1 是卷列表输出中的编号。

1. 键入以下命令：

   `extend`

1. 键入以下命令，确认 VHD 上该分区的大小是否已按预期增加（在此示例中为 2 GB）：

   `diskpart`

   `select vdisk file="C:\path\to\application\settings\profile.vhdx"`

   `list volume`

1. 键入以下命令分离 VHD，以便可将其上传：

   `detach vdisk`

1. 返回带有 Amazon S3 控制台的浏览器，依次选择**上传**、**添加文件**，然后选择扩大的 VHD。

1. 选择**上传**。

上传 VHD 后，下次用户从启用了应用程序设置持久性并带有适用设置组的实例集进行流式传输时，更大的应用程序设置 VHD 即会可用。