

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

# 导入图片
<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/"  
    }  
 ]
```