

# 使用 EC2Launch v2 代理在 EC2 Windows 实例启动期间执行任务
<a name="ec2launch-v2"></a>

默认情况下，从 AWS Windows Server 2022 和 Windows Server 2025 AMI 启动的所有受支持的 Amazon EC2 实例包含 EC2Launch v2 启动代理 (`EC2Launch.exe`)。我们还提供 Windows Server 2016 和 2019 AMI，其中安装了 EC2Launch v2 作为默认的启动代理。除了包含 EC2Launch v1 的 Windows Server 2016 和 2019 AMI 之外，还提供了这些 AMI。您可以在 Amazon EC2 控制台 **AMI** 页面的搜索中输入以下前缀来搜索默认包含 EC2Launch v2 的 Windows AMI：`EC2LaunchV2-Windows_Server-*`。

要比较启动代理版本的功能，请参阅 [比较 Amazon EC2 启动代理](configure-launch-agents.md#ec2launch-agent-compare)。

EC2Launch v2 在实例启动期间执行任务，并可在实例停止并稍后启动或重新启动时运行。EC2Launch v2 还可按需执行任务。部分任务可自动启用，而其他任务必须手动启用。EC2Launch v2 服务支持所有 EC2Config 和 EC2Launch 功能。

此服务使用配置文件来控制其操作。您可以使用图形工具或直接将其作为单个 .yml 文件 (`agent-config.yml`) 进行编辑，以此来更新配置文件。有关文件位置的更多信息，请参阅 [EC2Launch v2 目录结构](#ec2launch-v2-directory)。

EC2Launch v2 发布 Windows 事件日志，帮助您进行故障排除和设置触发器。有关更多信息，请参阅 [Windows 事件日志](ec2launchv2-troubleshooting.md#ec2launchv2-windows-event-logs)。

**支持的操作系统版本**  
EC2Launch v2 代理支持以下 Windows Server 操作系统（OS）版本：
+ Windows Server 2025
+ Windows Server 2022
+ Windows Server 2019（长期服务渠道和半年期服务渠道）
+ Windows Server 2016

**默认运行的任务**  
EC2Launch v2 代理在初始实例启动期间默认仅运行以下任务一次。任务按照其在启动阶段的运行顺序进行组织。

`Boot` 阶段
+ extendRootPartition

`PreReady` 阶段
+ activateWindows
+ setDnsSuffix
+ setAdminAccount
+ setWallpaper

`PostReady` 阶段
+ startSsm

## EC2Launch v2 概念
<a name="ec2launch-v2-concepts"></a>

在考虑使用 EC2Launch v2 时，以下概念很有用。

**agent-config**  
`agent-config` 是位于 EC2Launch v2 的配置文件夹中的文件。它包括用于 boot、network、PreReady 和 PostReady 阶段的配置。此文件用于指定在 AMI 首次引导或以后引导时，应运行任务的实例配置。  
默认情况下，EC2Launch v2 安装会安装一个 `agent-config` 文件，其中包含在标准 Amazon Windows AMI 中使用的推荐配置。您可以更新配置文件以更改 EC2Launch v2 为您的 AMI 指定的默认引导体验。有关文件位置的更多信息，请参阅 [EC2Launch v2 目录结构](#ec2launch-v2-directory)。

**频率**  
任务频率决定任务的运行时间，具体取决于引导上下文。大多数任务的频率只有一次。您可以指定 `executeScript` 任务的频率。  
您将在 [EC2Launch v2 任务配置](ec2launch-v2-settings.md#ec2launch-v2-task-configuration) 中看到以下频率。  
+ 一次 — 任务在 AMI 首次引导时（完成了 Sysprep）运行一次。
+ 始终 — 任务在每次启动代理运行时都会运行。启动代理在以下情况运行：
  + 实例启动或重新启动时
  + EC2Launch 服务运行时
  + `EC2Launch.exe run` 被调用

**阶段**  
阶段是 EC2Launch v2 代理运行的任务的逻辑分组。某些任务只能在特定阶段运行。另一些任务可以分多个阶段运行。使用 `agent-config.yml` 时，必须指定阶段列表以及每个阶段内运行的任务列表。  
该服务按以下顺序运行阶段：    
第 1 阶段：启动  
  
第 2 阶段：网络  
  
第 3 阶段：PreReady  
  
Windows 准备就绪  
PreReady 阶段完成后，该服务会将 `Windows is ready` 消息发送到 Amazon EC2 控制台。  
第 4 阶段：PostReady  
用户数据在 *PostReady* 阶段运行。有些脚本版本在 `agent-config.yml` 文件 *PostReady* 阶段之前运行，有些则在之后运行，如下所示：    
在 `agent-config.yml` 之前：  
+ YAML 用户数据版本 1.1
+ XML 用户数据  
在 `agent-config.yml` 之后  
+ YAML 用户数据版本 1.0（用于向后兼容的旧版本）
有关示例阶段和任务，请参阅 [示例：`agent-config.yml`](ec2launch-v2-settings.md#ec2launch-v2-example-agent-config)。  
使用用户数据时，必须指定要运行的启动代理的任务列表。阶段是默认的。有关示例任务，请参阅 [示例：用户数据](ec2launch-v2-settings.md#ec2launch-v2-example-user-data)。  
EC2Launch v2 会按照您在 `agent-config.yml` 和用户数据中指定的顺序运行任务列表。阶段按顺序运行。上一阶段完成后，开始下一阶段。任务也按顺序运行。

**Task**  
您可以调用任务来对实例执行操作。您可以在 `agent-config.yml` 文件中或通过用户数据配置任务。有关 EC2Launch v2 的可用任务列表，请参阅 [EC2Launch v2 任务](#ec2launch-v2-tasks)。有关任务配置架构和详细信息，请参阅 [EC2Launch v2 任务配置](ec2launch-v2-settings.md#ec2launch-v2-task-configuration)。

**用户数据**  
用户数据是在启动实例时可配置的数据。您可以更新用户数据以动态更改如何配置自定义 AMI 或快速启动 AMI。EC2Launch v2 支持 60 kB 用户数据输入长度。用户数据仅包括 UserData 阶段，因此在 `agent-config` 文件之后运行。您可以在使用启动实例向导启动实例时输入用户数据，也可以从 EC2 控制台修改用户数据。有关使用用户的更多信息，请参阅[Amazon EC2 如何处理 Windows 实例的用户数据](user-data.md#ec2-windows-user-data)。

## EC2Launch v2 任务概览
<a name="ec2launch-v2-tasks"></a>

EC2Launch v2 可以在每次引导时执行以下任务：
+ 设置新的（可选）自定义壁纸，以呈现有关实例的信息。
+ 为在本地计算机上创建的管理员账户设置属性。
+ 将 DNS 后缀添加到搜索后缀列表中。只有尚不存在的后缀才会添加到列表中。
+ 为任何附加卷设置驱动器盘符，并扩展它们以使用可用空间。
+ 将配置中的文件写入磁盘。
+ 运行 EC2Launch v2 配置文件或 `user-data` 中指定的脚本。`user-data` 的脚本可以是纯文本，也可以是压缩文件，并以 base64 格式提供。
+ 使用给定参数运行程序。
+ 设置计算机名称。
+ 将实例信息发送到 Amazon EC2 控制台。
+ 向 Amazon EC2 控制台发送 RDP 证书指纹。
+ 请动态扩展操作系统分区，以包含所有未分区的空间。
+ 运行用户数据。有关指定用户数据的更多信息，请参阅[EC2Launch v2 任务配置](ec2launch-v2-settings.md#ec2launch-v2-task-configuration)。
+ 设置非持久静态路由以访问元数据服务和 AWS KMS 服务器。
+ 将非引导分区设置为 `mbr` 或 `gpt`。
+ 在 Sysprep 之后启动 Systems Manager 服务。
+ 优化 ENA 设置。
+ 为更高版本的 Windows 启用 OpenSSH。
+ 启用巨型帧。
+ 将 Sysprep 设置为与 EC2Launch v2 一起运行。
+ 发布 Windows 事件日志。

## EC2Launch v2 目录结构
<a name="ec2launch-v2-directory"></a>

EC2Launch v2 应安装在以下目录中：
+ 服务二进制文件：`%ProgramFiles%\Amazon\EC2Launch`
+ 服务数据（设置、日志文件和状态文件）：`%ProgramData%\Amazon\EC2Launch`

**注意**  
默认情况下，Windows 会隐藏 `C:\ProgramData` 下的文件和文件夹。要查看 EC2Launch v2 目录和文件，必须在 Windows 资源管理器中输入路径，或者更改文件夹属性以显示隐藏的文件和文件夹。

`%ProgramFiles%\Amazon\EC2Launch` 目录包含二进制文件和支持库。它包括以下子目录：
+ `settings`
  + `EC2LaunchSettingsUI.exe`：用于修改 `agent-config.yml` 文件的用户界面
  + `YamlDotNet.dll`：用于支持用户界面中部分操作的 DLL
+ `tools`
  + `ebsnvme-id.exe`：用于检查实例上 EBS 卷的元数据的工具
  + `AWSAcpiSpcrReader.exe`：用于确定要使用的正确 COM 端口的工具
  + `EC2LaunchEventMessage.dll`：用于支持 EC2Launch 的 Windows 事件日志记录的 DLL
+ `service`
  + `EC2LaunchService.exe`：当启动代理作为一项服务运行时所启动的 Windows 服务可执行文件
+ `EC2AgentTelemetry.dll`：用于支持 EC2 代理遥测的 DLL
+ `EC2Launch.exe`：主要 EC2Launch 可执行文件
+ `EC2LaunchAgentAttribution.txt`：EC2Launch 中使用的代码的归因

`%ProgramData%\Amazon\EC2Launch` 目录包含以下子目录。服务生成的所有数据（包括日志、配置和状态）都存储在此目录中。
+ `config` – 配置

  服务配置文件作为 `agent-config.yml` 存储在此目录中。此文件可以进行更新以修改、添加或删除由服务运行的原定设置任务。在此目录中创建文件的权限仅限于管理员账户，以防止特权提升。
+ `log` – 实例日志

  服务（`agent.log`）、性能（`bench.log`）和遥测（`telemetry.log`）的日志都存储在此目录中。当 `agent.log` 大小达到 1 MB 时，它会自动轮换，并使用时间戳格式创建备份文件（例如，`agent-2026-03-02T18-56-39.188.log`）。一次只能维护一个备份日志文件。
+ `state` – 服务状态数据

  服务用于确定应运行哪些任务的状态存储在此处。其中有一个 `.run-once` 文件，指示服务是否已在 Sysprep 之后运行（因此，频率为一次的任务在下次运行时将跳过）。此子目录包含 `state.json` 和 `previous-state.json`，用于跟踪每个任务的状态。
+ `sysprep` – Sysprep

  此目录包含的文件用于确定 Sysprep 在创建可重复使用的自定义 Windows AMI 时，需要执行哪些操作。
+ `wallpaper` – 墙纸

  此墙纸图像存储在此目录中。

## 遥测
<a name="ec2launch-v2-telemetry"></a>

遥测是附加信息，可帮助 AWS 更好地了解您的需求、诊断问题并提供功能，以改善 AWS 服务 带给您的体验。

EC2Launch v2 版本 `2.1.592` 及更高版本会收集遥测，例如使用情况指标和错误。此数据是从运行 EC2Launch v2 的 Amazon EC2 实例收集的。这包括 AWS 拥有的所有 Windows AMI。

EC2Launch v2 收集以下类型的遥测：
+ **使用情况信息** — 代理命令、安装方法和计划的运行频率。
+ **错误和诊断信息** — 代理安装错误代码、运行错误代码和错误调用堆栈。

从 2.0.592 到 2.1.1 版本收集的数据示例：

```
2025/07/18 22:38:52Z: EC2LaunchTelemetry: IsTelemetryEnabled=true
2025/07/18 22:38:52Z: EC2LaunchTelemetry: AgentOsArch=windows_amd64
2025/07/18 22:38:52Z: EC2LaunchTelemetry: IsAgentScheduledPerBoot=true
2025/07/18 22:38:52Z: EC2LaunchTelemetry: AgentCommandErrorCode=0
2025/07/18 22:38:52Z: EC2LaunchTelemetry: AdminPasswordTypeCode=0
2025/07/18 22:38:52Z: EC2LaunchTelemetry: IpConflictDetectionCode=0
2025/07/18 22:38:52Z: EC2LaunchTelemetry: AgentErrorLocation=addroutes.go:49
```

从 2.2.63 版本开始，EC2 代理遥测数据被格式化为 JSON 对象：

```
{"type":"EC2AgentTelemetry","agentId":"WindowsLaunchAgentV2" ... }
```

预设情况下，遥测处于启用状态。您可以随时禁用遥测收集。

**在实例上禁用遥测**  
要禁用单个实例的遥测，您可以设置系统环境变量，也可以使用 MSI 修改安装。

要通过设置系统环境变量来禁用遥测，请以管理员身份运行以下命令。

```
setx /M EC2LAUNCH_TELEMETRY 0
```

要使用 MSI 禁用遥测，请在[下载 MSI](ec2launch-v2-install.md) 后运行以下命令。

```
msiexec /i ".\AmazonEC2Launch.msi" Remove="Telemetry" /q
```

**Topics**
+ [EC2Launch v2 概念](#ec2launch-v2-concepts)
+ [EC2Launch v2 任务概览](#ec2launch-v2-tasks)
+ [EC2Launch v2 目录结构](#ec2launch-v2-directory)
+ [遥测](#ec2launch-v2-telemetry)
+ [安装最新版本的 EC2Launch v2](ec2launch-v2-install.md)
+ [配置 Windows 实例的 EC2Launch v2 设置](ec2launch-v2-settings.md)
+ [EC2Launch v2 启动任务的任务定义](ec2launch-v2-task-definitions.md)
+ [排查 EC2Launch v2 代理的问题](ec2launchv2-troubleshooting.md)
+ [EC2Launch v2 版本历史记录](ec2launchv2-versions.md)

# 安装最新版本的 EC2Launch v2
<a name="ec2launch-v2-install"></a>

您可以使用以下方法之一，在您的 EC2 实例上安装 EC2Launch v2 代理：
+ 从 Amazon S3 下载代理并使用 Windows PowerShell 进行安装。有关下载 URL，请参阅 [在 Amazon S3 上下载 EC2Launch v2](#lv2-download-s3)。
+ 使用 SSM 分发服务器安装。
+ 创建自定义映像时，从 EC2 Image Builder 组件安装。
+ 从预安装了 EC2Launch v2 的 AMI 启动您的实例。

**警告**  
AmazonEC2Launch.msi 不会卸载先前版本的 EC2 启动服务，如 EC2Launch (v1) 和 EC2Config。

有关安装步骤，请选择与您的首选方法相匹配的选项卡。

------
#### [ PowerShell ]

要使用 Windows PowerShell 安装最新版本的 EC2Launch v2 代理，请按照以下步骤操作。

1. 创建本地目录。

   ```
   New-Item -Path "$env:USERPROFILE\Desktop\EC2Launchv2" -ItemType Directory
   ```

1. 设置下载位置的 URL。使用您将使用的 Amazon S3 URL 运行以下命令。有关下载 URL，请参阅 [在 Amazon S3 上下载 EC2Launch v2](#lv2-download-s3)

   ```
   $Url = "Amazon S3 URL/AmazonEC2Launch.msi"
   ```

1. 使用以下混合命令下载代理并运行安装 

   ```
   $DownloadFile = "$env:USERPROFILE\Desktop\EC2Launchv2\" + $(Split-Path -Path $Url -Leaf)
   Invoke-WebRequest -Uri $Url -OutFile $DownloadFile
   msiexec /i "$DownloadFile"
   ```
**注意**  
如果您在下载文件时收到错误，并且正在使用 Windows Server 2016 或更早的版本，则可能需要为 PowerShell 终端启用 TLS 1.2。可以使用以下命令为当前 PowerShell 会话启用 TLS 1.2，然后重试：  

   ```
   [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
   ```

1. **msiexec** 命令在 Windows Server 实例上的以下位置安装 EC2Launch v2：`%ProgramFiles%\Amazon\EC2Launch`。要验证安装是否已运行，可以检查实例上的本地文件系统。

------
#### [ AWS Systems Manager Distributor ]

要使用 AWS Systems Manager 快速设置功能为 EC2Launch v2 配置自动更新，请参阅 [使用 Distributor 快速设置功能自动安装和更新 EC2Launch v2](#lv2-distributor-quick-setup)。

也可以从 AWS Systems Manager Distributor 处一次性安装 `AWSEC2Launch-Agent` 软件包。有关如何从系统管理器分发服务器安装软件包的说明，请参阅《AWS Systems Manager 用户指南》**中的[安装或更新软件包](https://docs.aws.amazon.com/systems-manager/latest/userguide/distributor-working-with-packages-deploy.html)。

------
#### [ EC2 Image Builder component ]

您可以在使用 EC2 Image Builder 构建自定义映像时安装 `ec2launch-v2-windows` 组件。有关如何使用 EC2 Image Builder 构建自定义映像的说明，请参阅 *EC2 Image Builder 用户指南*中的[使用 EC2 Image Builder 控制台创建映像管道向导](https://docs.aws.amazon.com/imagebuilder/latest/userguide/start-build-image-pipeline.html)。

------
#### [ AMI ]

EC2Launch v2 默认预安装在 Windows Server 2022 及更高版本操作系统的 AMI 上：
+ Windows\$1Server-*版本*-English-Full-Base
+ Windows\$1Server-*版本*-English-Core-Base
+ Windows\$1Server-*版本*-English-Core-EKS\$1Optimized
+ 具有所有其他语言的 Windows Server *版本*
+ 安装了 SQL 的 Windows Server *版本*

以下 Windows Server AMI 上也预装了 EC2Launch v2。您可以在 Amazon EC2 控制台上查找这些 AMI，也可以通过使用以下搜索前缀查找：`EC2LaunchV2-` 在 AWS CLI 中
+ EC2LaunchV2-Windows\$1Server-2019-English-Core-Base
+ EC2LaunchV2-Windows\$1Server-2019-English-Full-Base
+ EC2LaunchV2-Windows\$1Server-2016-English-Core-Base
+ EC2LaunchV2-Windows\$1Server-2016-English-Full-Base

------

## 使用 AWS Systems Manager Distributor 快速设置功能自动安装和更新 EC2Launch v2
<a name="lv2-distributor-quick-setup"></a>

使用 AWS Systems Manager Distributor 快速设置功能，可以为 EC2Launch v2 设置自动更新。以下过程可在您的实例上设置 Systems Manager 关联，该关联以您指定的频率自动更新 EC2Launch v2 代理。Distributor 快速设置功能创建的关联可包括 AWS 账户 和区域内的实例，也可以包括 AWS 组织内的实例。有关设置组织的更多信息，请参阅《*AWS Organizations 用户指南*》中的[教程：创建和配置组织](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_basic.html)。

开始之前，请确保实例满足所有先决条件。

### 先决条件
<a name="lv2-distributor-quickset-prereq"></a>

要使用 Distributor 快速设置功能设置自动更新，实例必须满足以下先决条件。
+ 至少有一个支持 EC2Launch v2 的正在运行的实例。请参阅 [EC2Launch v2](ec2launch-v2.md) 支持的操作系统。
+ 已在实例上执行了 Systems Manager 设置任务。有关更多信息，请参阅《*AWS Systems Manager 用户指南*》中的[设置 Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-setting-up-ec2.html)。
+ EC2Launch v2 必须是实例上安装的唯一启动代理。如果安装了多个启动代理，则 Distributor 快速设置功能配置将失败。在使用 Distributor 快速设置功能配置 EC2Launch v2 之前，请卸载 EC2Config 或 EC2Launch v1 启动代理（如果存在）。

### 为 EC2Launch v2 配置 Distributor 快速设置功能
<a name="lv2-distributor-quickset-config"></a>

要使用 Distributor 快速设置功能为 EC2Launch v2 创建配置，请在完成 [Distributor 包部署](https://docs.aws.amazon.com/systems-manager/latest/userguide/quick-setup-distributor.html)步骤时使用以下设置：
+ **软件包：**Amazon EC2Launch v2 代理。
+ **更新频率：**从列表中选择一个频率。
+ **目标：**从可用的部署选项中进行选择。

要检查配置的状态，请导航至 AWS 管理控制台 中的 Systems Manager 快速设置功能**配置**选项卡。

1. 访问 [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)，打开 AWS Systems Manager 控制台。

1. 在导航窗格中，选择**快速设置**。

1. 在**配置**选项卡中，选择与您创建的配置关联的行。**配置**选项卡列出了您的配置，并包括关键详细信息的摘要，例如**区域**、**部署状态**和**关联状态**。
**注意**  
每个 EC2Launch v2 Distributor 配置的关联名称都以以下前缀开头：`AWS-QuickSetup-Distributor-EC2Launch-Agent-`。

1. 要查看详细信息，请选择配置，然后选择**查看详细信息**。

有关更多信息和故障排除步骤，请参阅《*AWS Systems Manager 用户指南》*中的[对快速设置结果进行故障排除](https://docs.aws.amazon.com/systems-manager/latest/userguide/quick-setup-results-troubleshooting.html)。

## 在 Amazon S3 上下载 EC2Launch v2
<a name="lv2-download-s3"></a>

要安装最新版本的 EC2Launch v2，请从以下位置下载安装程序：
+ [https://s3.amazonaws.com/amazon-ec2launch-v2/windows/amd64/latest/AmazonEC2Launch.msi](https://s3.amazonaws.com/amazon-ec2launch-v2/windows/amd64/latest/AmazonEC2Launch.msi)

## 配置安装选项
<a name="lv2-configure-install"></a>

安装或升级 EC2Launch v2 时，可以使用 EC2Launch v2 安装对话框或命令行 shell 中的 **msiexec** 命令配置安装选项。

EC2Launch v2 安装程序首次在实例上运行时，它会按照以下方式初始化实例上的启动代理设置：
+ 它会创建本地路径并将启动代理文件写入其中。这有时被称为*净安装*。
+ 它创建了 `EC2LAUNCH_TELEMETRY` 环境变量（如果还不存在），然后根据您的配置进行设置。

有关配置详细信息，请选择与您将使用的配置方法相匹配的选项卡。

------
#### [ Amazon EC2Launch Setup dialog ]

安装或升级 EC2Launch v2 时，可以使用 EC2Launch v2 安装对话框配置以下安装选项。**基本安装**选项

**发送遥测**  
当您在设置对话框中包含此功能时，安装程序会将 `EC2LAUNCH_TELEMETRY` 环境变量的值设置为 `1`。如果您禁用**发送遥测**，安装程序会将环境变量的值设置为 `0`。  
当 EC2Launch v2 代理运行时，它会读取 `EC2LAUNCH_TELEMETRY` 环境变量，用于确定是否上传遥测数据。如果值等于 `1`，它会上传数据。否则，它不会上传。

**默认配置**  
EC2Launch v2 的默认配置为：如果本地启动代理已经存在，则将其覆盖。首次在实例上运行安装时，默认配置会执行净安装。如果您在初次安装时禁用默认配置，则安装将失败。  
如果您在实例上再次运行安装程序，则可以禁用默认配置，以执行不取代 `%ProgramData%/Amazon/EC2Launch/config/agent-config.yml` 文件的升级。

**示例：使用遥测升级 EC2Launch v2**  
以下示例显示了配置为升级当前安装并启用遥测的 EC2Launch v2 设置对话框。此配置在不替换代理配置文件的情况下执行安装程序，并将 `EC2LAUNCH_TELEMETRY` 环境变量设置为值 `1`。

![\[EC2Launch v2 升级配置。\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/ec2launchv2-clean-default-config.png)


------
#### [ Command line ]

安装或升级 EC2Launch v2 时，可以使用命令行 Shell 中的 **msiexec** 命令配置以下安装选项。`ADDLOCAL`参数值

**基本**（必需）  
安装启动代理。如果此值不存在于 `ADDLOCAL` 参数，安装将结束。

**清除**  
当您将 `Clean` 值包含在 `ADDLOCAL` 参数中，安装程序会将代理配置文件写入以下位置：`%ProgramData%/Amazon/EC2Launch/config/agent-config.yml`。如果代理配置文件已经存在，它会覆盖该文件。  
当您留下 `ADDLOCAL` 参数中的 `Clean` 值，安装程序执行的升级不会替换代理配置文件。

**遥测**  
当您在 `ADDLOCAL` 中包含 `Telemetry` 值，安装程序会将 `EC2LAUNCH_TELEMETRY` 环境变量的值设置为 `1`。  
当您留下 `ADDLOCAL` 参数中的 `Telemetry` 值，安装程序会将环境变量的值设置为 `0`。  
当 EC2Launch v2 代理运行时，它会读取 `EC2LAUNCH_TELEMETRY` 环境变量，用于确定是否上传遥测数据。如果值等于 `1`，它会上传数据。否则，它不会上传。

**示例：安装带有遥测功能的 EC2Launch v2**

```
& msiexec /i "C:\Users\Administrator\Desktop\EC2Launchv2\AmazonEC2Launch.msi" ADDLOCAL="Basic,Clean,Telemetry" /q
```

------

## 验证 EC2Launch v2 版本
<a name="lv2-verify-version"></a>

使用以下过程之一验证您的实例上安装的 EC2Launch v2 版本。



------
#### [ PowerShell ]

使用 Windows PowerShell 验证已安装的 EC2Launch v2 版本，如下所示。

1. 从 AMI 启动实例并连接到该实例。

1. 使用以下 PowerShell 中的命令验证已安装的 EC2Launch v2 版本：

   ```
   & "C:\Program Files\Amazon\EC2Launch\EC2Launch.exe" version
   ```

------
#### [ Windows Control Panel ]

验证 Windows 控制面板中安装的 EC2Launch v2 版本，如下所示。

1. 从 AMI 启动实例并连接到该实例。

1. 打开 Windows 控制面板，然后选择**程序和功能**。

1. 在已安装程序的列表中查找 `Amazon EC2Launch`。其版本号会显示在 **Version (版本)** 列中。

------

要查看 AWS Windows AMI 的最近更新，请参阅《AWS Windows AMI 参考》中的 [Windows AMI version history](https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/ec2-windows-ami-version-history.html)**。

有关 EC2Launch v2 的最新版本，请参阅 [EC2Launch v2 版本历史记录](ec2launchv2-versions.md#ec2launchv2-version-history)。

您可在 EC2Launch v2 服务的新版本发布时收到通知。有关更多信息，请参阅 [订阅 EC2 Windows 启动代理通知](launch-agents-subscribe-notifications.md)。

# 配置 Windows 实例的 EC2Launch v2 设置
<a name="ec2launch-v2-settings"></a>

本节包含有关如何配置 EC2Launch v2 的设置的信息。

**Topics**
+ [使用 EC2Launch v2 设置对话框更改设置](#ec2launch-v2-ui)
+ [使用 CLI 配置 EC2Launch v2](#ec2launch-v2-cli)
+ [EC2Launch v2 任务配置](#ec2launch-v2-task-configuration)
+ [EC2Launch v2 退出代码并重新启动](#ec2launch-v2-exit-codes-reboots)
+ [EC2Launch v2 和 Sysprep](#ec2launch-v2-sysprep)

## 使用 EC2Launch v2 设置对话框更改设置
<a name="ec2launch-v2-ui"></a>

以下过程介绍如何使用 EC2Launch v2 设置对话框来启用或禁用设置。
**注意**  
如果您在 agent-config.yml 文件中适当配置了自定义任务，并尝试打开 Amazon EC2Launch settings（Amazon EC2Launch 设置）对话框，则会收到错误消息。有关示例架构，请参阅 [示例：`agent-config.yml`](#ec2launch-v2-example-agent-config)。

1. 启动并连接到您的 Windows 实例。

1. 从“开始”菜单，选择**所有程序**，然后导航到 **EC2Launch 设置**。在选择**使用 Sysprep 关机**或**不使用 Sysprep 关机**之前，请务必保存要在运行关机时应用的所有更改。  
![\[EC2 Launch Settings 应用程序。\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/ec2launchv2-settings.png)

1. 在 **EC2Launch 设置** 对话框的**常规**选项卡上，您可以启用或禁用以下设置。

   1. **Set Computer Name**（设置电脑名称）

      如果启用此设置（默认情况下禁用），则每次引导时会将当前主机名与所需主机名进行比较。如果主机名不匹配，则会重置主机名，然后系统可以选择重新启动以接受新的主机名。如果未指定自定义主机名，则该主机名会以十六进制格式的私有 IPv4 地址生成，例如：`ip-AC1F4E6`。若要防止修改现有主机名，请不要启用该设置。

   1. **扩展引导卷**

      此设置可动态扩展 `Disk 0`/`Volume 0` 以包含所有未分区的空间。从具有自定义大小的根卷启动实例时，此设置非常有用。

   1. **设置管理员帐户**

      启用后，您可以为在本地计算机上创建的管理员账户设置用户名和密码属性。如果未启用此功能，则在 Sysprep 之后，不会在系统上创建管理员账户。仅当 `adminPassword` 为 `adminPasswordtype` 时，在 `Specify` 中提供密码。

      密码类型定义如下：

      1. `Random`

         EC2Launch 生成一个密码并使用用户的密钥对其进行加密。系统会在实例启动后禁用此设置，以便在重新启动或停止再启动实例后该密码仍然存在。

      1. `Specify`

         EC2Launch 使用您在 `adminPassword` 中指定的密码 如果密码不满足系统要求，EC2Launch 会生成随机密码。该密码以明文方式存储在 `agent-config.yml` 文件中，并且在 Sysprep 设置管理员密码时会被删除。EC2Launch 使用用户的密钥对密码进行加密。

      1. `Do not set`

         EC2Launch 使用您在 unattend.xml 文件中指定的密码。如果未在 unattend.xml 中指定密码，管理员账户会被禁用。

   1. **启动 SSM 服务**

      如果选择此选项，Systems Manager 服务将启用，以便在 Sysprep 之后启动。EC2Launch v2 执行[前面](ec2launch-v2.md#ec2launch-v2-tasks)所述的所有任务，而 SSM Agent 处理 Run Command 和 State Manager 这样的 Systems Manager 功能的请求。

      您可以使用 Run Command 升级现有实例，以便使用最新版本的 EC2Launch v2 服务和 SSM Agent。有关更多信息，请参阅《AWS Systems Manager 用户指南》**中的[使用 Run Command 更新 SSM Agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command-tutorial-update-software.html)。

   1. **优化 ENA**

      在选中时，将配置 ENA 设置以确保针对 AWS 优化了 ENA 接收端扩展和接收队列深度设置。有关更多信息，请参阅[配置接收端缩放 CPU 关联](enhanced-networking-os.md#windows-rss-cpu-affinity)。

   1. **启用 SSH**

      此设置为更高版本的 Windows 启用 OpenSSH，以允许远程系统管理。

   1. **启用巨型帧**

      选择此项可启用巨型帧。巨型帧可能会对您的网络通信造成意外的影响，因此在启用之前，请确保您了解巨型帧将如何影响系统。有关巨型帧的详细信息，请参阅[巨型帧 (9001 MTU)](network_mtu.md#jumbo_frame_instances)。

   1. **准备映像**

      选择您希望在使用或不使用 Sysprep 的情况下关闭 EC2 实例。如果您希望将 Sysprep 与 EC2Launch v2 配合使用，请选择 **Shutdown with Sysprep (使用 Sysprep 关闭)**。

1. 在 **DNS 后缀**选项卡上，您可以选择是否要添加 DNS 后缀列表，供在 EC2 中运行的服务器的 DNS 解析使用，而不提供完全限定的域名。DNS 后缀可以包含变量 `$REGION` 和 `$AZ`。只有尚不存在的后缀才会添加到列表中。  
![\[EC2 Launch Settings 应用程序。\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/ec2launchv2-dns.png)

1. 在**墙纸**选项卡上，您可以使用背景图像配置实例墙纸，并为要显示的墙纸指定实例详细信息。Amazon EC2 会在您每次登录时生成详细信息。

   您可以使用以下控件配置墙纸。
   + **在墙纸上显示实例详细信息** – 此复选框会启用或禁用在墙纸上显示实例详细信息。
   + **图像路径 (.jpg)** – 指定用作墙纸背景的图像路径。
   + **选择要在墙纸上显示的属性** – 选中要在墙纸上显示的实例详细信息的复选框。清除之前选中的要从墙纸中删除的实例详细信息的复选框。
   + **在墙纸上显示实例标签** – 选择以下设置之一，以在墙纸上显示实例标签：
     + **无** – 不在墙纸上显示任何实例标签。
     + **显示全部** – 在墙纸上显示所有实例标签。
     + **显示筛选部分** – 在墙纸上显示指定的实例标签。当您选择此设置时，您可以在**实例标签筛选条件**框中添加要在墙纸上显示的实例标签。
**注意**  
必须启用元数据中的标签，才能在墙纸上显示标签。有关实例标签和元数据的更多信息，请参阅 [使用实例元数据来查看 EC2 实例的标签](work-with-tags-in-IMDS.md)。  
![\[EC2 Launch Setting“墙纸”选项卡。\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/ec2launchv2-wallpaper-02.png)

1. 在**卷**选项卡上，选择是否要初始化附加到实例的卷。启用时，可为任何附加卷设置驱动器盘符，并扩展它们以使用可用空间。如果选择**全部**，则初始化所有存储卷。如果选择**设备**，则只初始化列表中指定的设备。您必须为要初始化的每个设备进行输入。使用 EC2 控制台上列出的设备，例如，`xvdb` 或 `/dev/nvme0n1`。下拉列表显示已附加到实例的存储卷。要输入未附加到实例的设备，请在文本字段中输入该设备。

   **名称**、**盘符**和**分区**是可选字段。如果没有为**分区**指定值，则使用 `gpt` 分区类型初始化大于 2 TB 的存储卷，使用 `mbr` 分区类型初始化小于 2 TB 的存储卷。如果配置了设备，并且非 NTFS 设备包含分区表，或者磁盘的前 4 KB 包含数据，则跳过磁盘并记录操作。  
![\[EC2 Launch Settings 应用程序。\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/ec2launchv2-volumes.png)

## 使用 CLI 配置 EC2Launch v2
<a name="ec2launch-v2-cli"></a>

您可以使用命令行界面 (CLI) 配置 EC2Launch 设置和管理服务。以下部分包含您可用于管理 EC2Launch v2 的 CLI 命令的描述和使用信息。

**Topics**
+ [collect-logs](#ec2launch-v2-collect-logs)
+ [get-agent-config](#ec2launch-v2-get-agent-config)
+ [list-volumes](#ec2launch-v2-list-volumes)
+ [重置](#ec2launch-v2-reset)
+ [运行](#ec2launch-v2-run)
+ [status](#ec2launch-v2-settings-status)
+ [sysprep](#ec2launch-v2-settings-sysprep)
+ [验证](#ec2launch-v2-validate)
+ [版本](#ec2launch-v2-version)
+ [wallpaper](#ec2launch-v2-wallpaper)

### collect-logs
<a name="ec2launch-v2-collect-logs"></a>

收集 EC2Launch 的日志文件，压缩文件，并将其放置在指定的目录中。

**示例**

```
ec2launch collect-logs -o C:\Mylogs.zip
```

**用法**

`ec2launch collect-logs [flags]`

**Flags**

`-h`, `--help`

`collect-logs` 的帮助

`-o`, `--output string`

压缩输出日志文件的路径

### get-agent-config
<a name="ec2launch-v2-get-agent-config"></a>

以指定的格式（JSON 或 YAML）输出 `agent-config.yml`。如果未指定格式，则会以先前指定的格式输出 `agent-config.yml`。

**示例**

```
ec2launch get-agent-config -f json
```

**用法**

`ec2launch get-agent-config [flags]`

**Flags**

`-h`, `--help`

`get-agent-config` 的帮助

`-f`, `--format string`

`agent-config` 文件的输出格式：`json`、`yaml`

### list-volumes
<a name="ec2launch-v2-list-volumes"></a>

列出附加到实例的所有存储卷，包括临时卷和 EBS 卷。

**示例**

```
ec2launch list-volumes
```

**用法**

`ec2launch list-volumes`

**Flags**

`-h`, `--help`

`list-volumes` 的帮助

### 重置
<a name="ec2launch-v2-reset"></a>

此任务的主要目标是在代理下次运行时对其进行重置 为此，**reset** 命令从本地 `EC2Launch` 目录中删除 EC2Launch v2 的所有代理状态数据（请参阅 [EC2Launch v2 目录结构](ec2launch-v2.md#ec2launch-v2-directory)）。重置可选择性地删除服务和 Sysprep 日志。

脚本行为取决于代理在哪种模式下运行脚本：内联或分离。

内联（默认）  
EC2Launch v2 代理一次只能运行一个脚本（`detach: false`）。这是默认设置。  
当您的内联脚本发出 **reset** 或 **sysprep** 命令时，它会立即运行并重置代理。当前任务完成，然后代理在不运行任何其他任务的情况下关闭。  
例如，如果发出命令的任务之后会有 `startSsm` 任务（默认情况下在用户数据运行后包括在内），则该任务不会运行，Systems Manager 服务也不会启动。

已分离  
EC2Launch v2 代理与其他任务同时运行脚本（`detach: true`）。  
当分离的脚本发出 **reset** 或 **sysprep** 命令时，这些命令会等待代理完成后再运行。executeScript 之后的任务仍将运行。

**示例**

```
ec2launch reset -c
```

**用法**

`ec2launch reset [flags]`

**Flags**

`-c`, `--clean`

在`reset`前清除实例日志

`-h`, `--help`

`reset` 的帮助

### 运行
<a name="ec2launch-v2-run"></a>

运行 EC2Launch v2。

**示例**

```
ec2launch run
```

**用法**

`ec2launch run [flags]`

**Flags**

`-h`, `--help`

`run` 的帮助

### status
<a name="ec2launch-v2-settings-status"></a>

获取 EC2Launch v2 代理的状态。也可选择在代理完成运行之前阻止该进程。进程退出代码决定了代理状态：
+ `0` – 代理已运行并且成功。
+ `1` – 代理已运行但失败。
+ `2` – 代理仍在运行中。
+ `3` – 代理处于未知状态。代理状态为未运行或已停止。
+ `4` – 尝试检索代理状态时出现错误。
+ `5` – 代理未运行，并且上次已知运行的状态未知。这可能意味着以下之一：
  + `state.json` 和 `previous-state.json` 都将被删除。
  + `previous-state.json` 已损坏。

  这是运行 [`reset`](#ec2launch-v2-reset) 命令后的代理状态。

**示例：**

```
ec2launch status -b
```

**用法**

`ec2launch status [flags]`

**Flags**

`-b`,`--block`

在代理完成运行前阻止才进程

`-h`,`--help`

`status` 的帮助

### sysprep
<a name="ec2launch-v2-settings-sysprep"></a>

此任务的主要目标是在代理下次运行时对其进行重置 为此，**sysprep** 命令会重置代理状态、更新 `unattend.xml` 文件、禁用 RDP 并运行 Sysprep。

脚本行为取决于代理在哪种模式下运行脚本：内联或分离。

内联（默认）  
EC2Launch v2 代理一次只能运行一个脚本（`detach: false`）。这是默认设置。  
当您的内联脚本发出 **reset** 或 **sysprep** 命令时，它会立即运行并重置代理。当前任务完成，然后代理在不运行任何其他任务的情况下关闭。  
例如，如果发出命令的任务之后会有 `startSsm` 任务（默认情况下在用户数据运行后包括在内），则该任务不会运行，Systems Manager 服务也不会启动。

已分离  
EC2Launch v2 代理与其他任务同时运行脚本（`detach: true`）。  
当分离的脚本发出 **reset** 或 **sysprep** 命令时，这些命令会等待代理完成后再运行。executeScript 之后的任务仍将运行。

**示例：**

```
ec2launch sysprep
```

**用法**

`ec2launch sysprep [flags]`

**Flags**

`-c`,`--clean`

在`sysprep`前清除实例日志

`-h`,`--help`

Sysprep 的帮助

`-s`,`--shutdown`

`sysprep`之后关闭实例

### 验证
<a name="ec2launch-v2-validate"></a>

验证 `agent-config` 文件 `C:\ProgramData\Amazon\EC2Launch\config\agent-config.yml`。

**示例**

```
ec2launch validate
```

**用法**

`ec2launch validate [flags]`

**Flags**

-h` `，`--help`

`validate` 的帮助

### 版本
<a name="ec2launch-v2-version"></a>

获取可执行版本。

**示例**

```
ec2launch version
```

**用法**

`ec2launch version [flags]`

**Flags**

`-h`, `--help`

`version` 的帮助

### wallpaper
<a name="ec2launch-v2-wallpaper"></a>

将新壁纸设置为提供的壁纸路径（.jpg 文件），并显示选定的实例详细信息。

#### 语法
<a name="lv2-wallpaper-syntax"></a>

```
ec2launch wallpaper ^
--path="C:\ProgramData\Amazon\EC2Launch\wallpaper\Ec2Wallpaper.jpg" ^
--all-tags ^
--attributes=hostName,instanceId,privateIpAddress,publicIpAddress,ipv6Address,instanceSize,availabilityZone,architecture
```

#### 输入
<a name="lv2-wallpaper-inputs"></a>参数

**--allowed-tags [*tag-name-1*、*tag-name-n*]**  
（可选）要显示在墙纸上的实例标签名称的 JSON 数组（采用 Base64 编码）。您可以使用此标签或 `--all-tags`，但不能同时使用两者。

**--attributes *attribute-string-1*、*attribute-string-n***  
（可选）以逗号分隔的 `wallpaper` 属性字符串列表，用于将设置应用于墙纸。

**[--path \$1 -p] *path-string***  
（必需）指定 `wallpaper` 背景图像文件路径。Flags

**--all-tags**  
（可选）显示墙纸上的所有实例标签。您可以使用此标签或 `--allowed-tags`，但不能同时使用两者。

**[--help \$1 -h]**  
显示 **wallpaper** 命令的帮助信息。

## EC2Launch v2 任务配置
<a name="ec2launch-v2-task-configuration"></a>

本节包括 `agent-config.yml` 和用户数据的配置架构、任务、详细信息和示例。

**Topics**
+ [架构：`agent-config.yml`](#ec2launch-v2-schema-agent-config)
+ [配置在启动或重启期间运行的 EC2Launch v2 用户数据脚本](#ec2launch-v2-schema-user-data)

### 架构：`agent-config.yml`
<a name="ec2launch-v2-schema-agent-config"></a>

`agent-config.yml` 文件的结构如下所示。请注意，不能在同一阶段重复一个任务。有关任务属性，请参阅随后的任务说明。

#### 文档结构：agent-config.yml
<a name="ec2launch-v2-schema-agent-config-doc-structure"></a>

**JSON**

```
{
	"version": "1.1",
	"config": [
		{
			"stage": "string",
			"tasks": [
				{
					"task": "string",
					"inputs": {
						...
					}
				},
				...
			]
		},
		...
	]
}
```

**YAML**

```
version: 1.1
config:
- stage: string
  tasks:
  - task: string
	inputs:
	  ...
  ...
...
```

#### 示例：`agent-config.yml`
<a name="ec2launch-v2-example-agent-config"></a>

以下示例显示了 `agent-config.yml` 配置文件的设置。

```
version: 1.1
config:
- stage: boot
  tasks:
  - task: extendRootPartition
- stage: preReady
  tasks:
  - task: activateWindows
    inputs:
      activation:
        type: amazon
  - task: setDnsSuffix
    inputs:
      suffixes:
      - $REGION.ec2-utilities.amazonaws.com
  - task: setAdminAccount
    inputs:
      password:
        type: random
  - task: setWallpaper
    inputs:
      path: C:\ProgramData\Amazon\EC2Launch\wallpaper\Ec2Wallpaper.jpg
      attributes:
      - hostName
      - instanceId
      - privateIpAddress
      - publicIpAddress
      - instanceSize
      - availabilityZone
      - architecture
- stage: postReady
  tasks:
  - task: startSsm
```

### 配置在启动或重启期间运行的 EC2Launch v2 用户数据脚本
<a name="ec2launch-v2-schema-user-data"></a>

以下 JSON 和 YAML 示例显示了用户数据的文档结构。Amazon EC2 解析您在文档中指定的 `tasks` 数组中命名的每个任务。每个任务都有自己的一组属性和要求。有关详细信息，请参阅 [EC2Launch v2 启动任务的任务定义](ec2launch-v2-task-definitions.md)。

**注意**  
任务只能在用户数据任务数组中出现一次。

#### 文档结构：用户数据
<a name="ec2launch-v2-schema-user-data-doc-structure"></a>

**JSON**

```
{
	"version": "1.1",
	"tasks": [
		{
			"task": "string",
			"inputs": {
				...
			},
		},
		...
	]
}
```

**YAML**

```
version: 1.1
tasks:
- task: string
  inputs:
    ...
...
```

#### 示例：用户数据
<a name="ec2launch-v2-example-user-data"></a>

有关用户数据的更多信息，请参阅 [Amazon EC2 如何处理 Windows 实例的用户数据](user-data.md#ec2-windows-user-data)。

以下 YAML 文档示例显示了 EC2Launch v2 作为用户数据运行的 PowerShell 脚本，用于创建文件。

```
version: 1.1
tasks:
- task: executeScript
  inputs:
  - frequency: always
    type: powershell
    runAs: localSystem
    content: |-
      New-Item -Path 'C:\PowerShellTest.txt' -ItemType File
```

您可以对用户数据使用与先前版本的启动代理兼容的 XML 格式。EC2Launch v2 在 `UserData` 阶段将脚本作为 `executeScript` 任务运行。为了符合 EC2Launch v1 和 EC2Config 的行为，默认情况下，用户数据脚本以附加/内联进程运行。

您可以添加可选标签来自定义脚本的运行方式。例如，要在实例重新启动时运行用户数据脚本以及在实例启动时运行一次用户数据脚本，您可以使用以下标签：

`<persist>true</persist>`

**示例：**

```
<powershell>
  $file = $env:SystemRoot + "\Temp" + (Get-Date).ToString("MM-dd-yy-hh-mm")
  New-Item $file -ItemType file
</powershell>
<persist>true</persist>
```

您可以使用 `<powershellArguments>` 标签来指定一个或多个 PowerShell 参数。如果未传递任何参数，则默认情况下，EC2Launch v2 会添加以下参数：`-ExecutionPolicy Unrestricted`。

**示例：**

```
<powershell>
  $file = $env:SystemRoot + "\Temp" + (Get-Date).ToString("MM-dd-yy-hh-mm")
  New-Item $file -ItemType file
</powershell>
<powershellArguments>-ExecutionPolicy Unrestricted -NoProfile -NonInteractive</powershellArguments>
```

要将 XML 用户数据脚本作为分离的进程运行，请在您的用户数据中添加以下标签。

`<detach>true</detach>`

**示例：**

```
<powershell>
  $file = $env:SystemRoot + "\Temp" + (Get-Date).ToString("MM-dd-yy-hh-mm")
  New-Item $file -ItemType file
</powershell>
<detach>true</detach>
```

**注意**  
以前的启动代理不支持分离标签。

#### 更改日志：用户数据
<a name="ec2launch-v2-versions-user-data"></a>

下表列出了用户数据更改，并将其交叉引用至适用的 EC2Launch v2 代理版本。


| 用户数据版本 | Details | 已引入 | 
| --- | --- | --- | 
| 1.1 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launch-v2-settings.html) | EC2Launch v2 版本 2.0.1245 | 
| 1.0 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launch-v2-settings.html) | EC2Launch v2 版本 2.0.0 | 

\$1 与默认 `agent-config.yml` 文件结合使用时。

## EC2Launch v2 退出代码并重新启动
<a name="ec2launch-v2-exit-codes-reboots"></a>

您可以使用 EC2Launch v2 定义脚本如何处理退出代码。默认情况下，脚本中运行的最后一个命令的退出代码将报告为整个脚本的退出代码。例如，如果脚本包含三个命令，而第一个命令失败，但以下命令成功，则运行状态将报告为 `success`，因为最后一个命令成功。

如果您希望脚本重启实例，则必须在脚本中指定 `exit 3010`，即使重启是脚本中的最后一步，也必须在脚本中指定。`exit 3010` 指示 EC2Launch v2 重新启动实例并再次调用脚本，直到它返回不是 `3010` 的退出代码，或者直到达到最大重启计数为止。EC2Launch v2 允许每个任务最多重启 5 次。如果您尝试使用其他机制（例如）从脚本重启实例 `Restart-Computer`，则脚本运行状态将不一致。例如，它可能会陷入重启循环或不执行重启。

如果您使用的是与旧代理兼容的 XML 用户数据格式，则用户数据的运行时间可能会超过您预期的运行时间。有关更多信息，请参阅排查部分中的[服务多次运行用户数据](ec2launchv2-troubleshooting.md#ec2launchv2-troubleshooting-user-data-more-than-once)。

## EC2Launch v2 和 Sysprep
<a name="ec2launch-v2-sysprep"></a>

EC2Launch v2 服务会运行 Sysprep，借助该 Microsoft 工具您可以创建可重复使用的自定义 Windows AMI。在 EC2Launch v2 调用 Sysprep 时，会使用 `%ProgramData%\Amazon\EC2Launch` 中的设置文件来确定要执行的操作。您可以使用 **EC2Launch 设置**对话框间接编辑这些文件，也可以直接使用 YAML 编辑器或文本编辑器直接编辑。然而，有些高级设置并未包含在 **EC2Launch 设置** 对话框中，因此您必须直接编辑这些条目。

如果您在更新某实例的设置之后从中创建了一个 AMI，则新设置会应用到所有从新 AMI 启动的实例。有关创建 AMI 的信息，请参阅[创建 Amazon EBS-backed AMI](creating-an-ami-ebs.md)。

# EC2Launch v2 启动任务的任务定义
<a name="ec2launch-v2-task-definitions"></a>

EC2Launch v2 在启动期间运行的每个任务都有自己的一组属性和要求。任务详细信息包括任务运行频率的设置（一次或始终）、运行代理启动过程的哪个阶段、语法和 YAML 文档示例。有关更多信息，请查看本参考中显示的任务详细信息。

**Topics**
+ [activateWindows](#ec2launch-v2-activatewindows)
+ [enableJumboFrames](#ec2launch-v2-enablejumboframes)
+ [enableOpenSsh](#ec2launch-v2-enableopenssh)
+ [executeProgram](#ec2launch-v2-executeprogram)
+ [executeScript](#ec2launch-v2-executescript)
+ [extendRootPartition](#ec2launch-v2-extendrootpartition)
+ [initializeVolume](#ec2launch-v2-initializevolume)
+ [optimizeEna](#ec2launch-v2-optimizeena)
+ [setAdminAccount](#ec2launch-v2-setadminaccount)
+ [setDnsSuffix](#ec2launch-v2-setdnssuffix)
+ [setHostName](#ec2launch-v2-sethostname)
+ [setWallpaper](#ec2launch-v2-setwallpaper)
+ [startSsm](#ec2launch-v2-startssm)
+ [sysprep](#ec2launch-v2-task-sysprep)
+ [writeFile](#ec2-launch-v2-writefile)

## activateWindows
<a name="ec2launch-v2-activatewindows"></a>

针对一组 AWS KMS 服务器激活 Windows。如果实例被检测为自带许可（BYOL），则会跳过激活过程。

*Frequency* – 一次

*AllowedStages* – `[PreReady]`

*输入* – 

`activation`：（映射）

`type`：（字符串）使用的激活类型，设置为 `amazon`

*示例*

```
task: activateWindows
  inputs:
    activation:
    type: amazon
```

## enableJumboFrames
<a name="ec2launch-v2-enablejumboframes"></a>

启用巨型帧，这会增加网络适配器的最大传输单位 (MTU)。有关更多信息，请参阅[巨型帧 (9001 MTU)](network_mtu.md#jumbo_frame_instances)。

*Frequency* – 始终

*AllowedStages* – `[PostReady, UserData]`

*Inputs* – 无

*示例*

```
task: enableJumboFrames
```

## enableOpenSsh
<a name="ec2launch-v2-enableopenssh"></a>

启用 Windows OpenSSH 并将实例的公有密钥添加到授权密钥文件夹中。

*Frequency* – 一次

*AllowedStages* – `[PreReady, UserData]`

*Inputs* – 无

*示例*

以下示例说明如何在实例上启用 OpenSSH，以及如何将实例的公有密钥添加到授权的密钥文件夹中。此配置仅适用于运行 Windows Server 2019 及更高版本的实例。

```
task: enableOpenSsh
```

## executeProgram
<a name="ec2launch-v2-executeprogram"></a>

使用可选参数并以指定的频率运行程序。

**阶段：**您可以在 `PreReady`、`PostReady` 和 `UserData` 阶段运行 `executeProgram` 任务。

**频率：**可配置，参见*输入*。

**输入**  
本节包含一个或多个供 **executeProgram** 任务运行的程序（输入）。每个输入可能包括以下可配置设置：    
**频率（字符串）**  
（必填）确切指定以下默认值中的一项：  
+ `once`
+ `always`  
**路径（字符串）**  
（必填）要运行的可执行文件的路径。  
**参数（字符串列表）**  
（可选）以逗号分隔的参数列表，作为输入提供给程序。  
**运行为（字符串）**  
（必填）必须设置为 `localSystem`

**Output**  
所有任务都会将日志文件条目写入 `agent.log` 文件。`executeProgram` 任务的其他输出会单独存储在一个动态命名的文件夹中，如下所示：  
`%LocalAppData%\Temp\EC2Launch#########\outputfilename.tmp`  
输出文件的确切路径包含在 `agent.log` 文件中，例如：  

```
Program file is created at: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\EC2Launch123456789\ExecuteProgramInputs.tmp
Output file is created at: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\EC2Launch123456789\Output.tmp
Error file is created at: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\EC2Launch123456789\Err.tmp
```
**`executeProgram` 任务的输出文件**    
`ExecuteProgramInputs.tmp`  
包含可执行文件的路径以及 `executeProgram` 任务将在运行时传递给该可执行文件的所有输入参数。  
`Output.tmp`  
包含 `executeProgram` 任务运行的程序的运行时系统输出。  
`Err.tmp`  
包含 `executeProgram` 任务运行的程序的运行时系统错误消息。

**示例**  
以下示例演示了如何使用 `executeProgram` 任务从实例的本地目录运行可执行文件。  
**示例 1：带有一个参数的安装程序可执行文件**  
此示例演示了一个在静默模式下运行安装程序可执行文件的 `executeProgram` 任务。

```
task: executeProgram
  inputs:
    - frequency: always
      path: C:\Users\Administrator\Desktop\setup.exe
      arguments: ['-quiet']
```
**示例 2：带有两个参数的 VLC 可执行文件**  
此示例演示了一个运行具有两个参数的 VLC 可执行文件的 `executeProgram` 任务，该任务将这两个参数作为输入参数传递。

```
task: executeProgram
  inputs:
    - frequency: always
      path: C:\vlc-3.0.11-win64.exe 
      arguments: ['/L=1033','/S']
      runAs: localSystem
```

## executeScript
<a name="ec2launch-v2-executescript"></a>

使用可选参数和指定的频率运行脚本。脚本行为取决于代理在哪种模式下运行脚本：内联或分离。

内联（默认）  
EC2Launch v2 代理一次只能运行一个脚本（`detach: false`）。这是默认设置。  
当您的内联脚本发出 **reset** 或 **sysprep** 命令时，它会立即运行并重置代理。当前任务完成，然后代理在不运行任何其他任务的情况下关闭。  
例如，如果发出命令的任务之后会有 `startSsm` 任务（默认情况下在用户数据运行后包括在内），则该任务不会运行，Systems Manager 服务也不会启动。

已分离  
EC2Launch v2 代理与其他任务同时运行脚本（`detach: true`）。  
当分离的脚本发出 **reset** 或 **sysprep** 命令时，这些命令会等待代理完成后再运行。executeScript 之后的任务仍将运行。

**阶段：**您可以在 `PreReady`、`PostReady` 和 `UserData` 阶段运行 `executeScript` 任务。

**频率：**可配置，参见*输入*。

**输入**  
本节包含一个或多个供 **executeScript** 任务运行的脚本（输入）。每个输入可能包括以下可配置设置：    
**频率（字符串）**  
（必填）确切指定以下默认值中的一项：  
+ `once`
+ `always`  
**类型（字符串）**  
（必填）确切指定以下默认值中的一项：  
+ `batch`
+ `powershell`  
**参数（字符串列表）**  
（可选）要传递给 Shell（但不是 PowerShell 脚本）的字符串参数的列表。`type: batch` 不支持此参数。如果未传递任何参数，则默认情况下，EC2Launch v2 会添加以下参数：`-ExecutionPolicy Unrestricted`。  
**内容（字符串）**  
（必填）脚本内容。  
**运行为（字符串）**  
（必填）确切指定以下默认值中的一项：  
+ `admin`
+ `localSystem`  
**分离（布尔值）**  
（可选）EC2Launch v2 代理默认每次运行一个脚本（`detach: false`）。要与其他任务同时运行脚本，请将此值设置为 `true` (`detach: true`)。  
如果将 `detach` 设置为 `true`，则脚本退出代码（包括 `3010`）不产生作用。

**Output**  
所有任务都会将日志文件条目写入 `agent.log` 文件。`executeScript` 任务运行的脚本的其他输出会单独存储在一个动态命名的文件夹中，如下所示：  
`%LocalAppData%\Temp\EC2Launch#########\outputfilename.ext`  
输出文件的确切路径包含在 `agent.log` 文件中，例如：  

```
Program file is created at: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\EC2Launch123456789\UserScript.ps1
Output file is created at: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\EC2Launch123456789\Output.tmp
Error file is created at: C:\Windows\system32\config\systemprofile\AppData\Local\Temp\EC2Launch123456789\Err.tmp
```
**`executeScript` 任务的输出文件**    
`UserScript.ext`  
包含 `executeScript` 任务运行的脚本。文件扩展名取决于您在 `executeScript` 任务的 `type` 参数中指定的脚本类型，如下所示：  
+ 如果类型为 `batch`，则文件扩展名为 `.bat`。
+ 如果类型为 `powershell`，则文件扩展名为 `.ps1`。  
`Output.tmp`  
包含 `executeScript` 任务运行的脚本的运行时系统输出。  
`Err.tmp`  
包含 `executeScript` 任务运行的脚本的运行时系统错误消息。

**示例**  
以下示例演示了如何使用 `executeScript` 任务运行内联脚本。  
**示例 1：Hello world 输出文本文件**  
此示例演示了一个运行 PowerShell 脚本，以在 `C:` 驱动器上创建一个“Hello world”文本文件的 `executeScript` 任务。

```
task: executeScript
  inputs:
    - frequency: always
      type: powershell
      runAs: admin
      content: |-
        New-Item -Path 'C:\PowerShellTest.txt' -ItemType File
        Set-Content 'C:\PowerShellTest.txt' "Hello world"
```
**示例 2：运行两个脚本**  
此示例说明了 `executeScript` 任务可以运行多个脚本，并且脚本类型不必一致。
第一个脚本 (`type: powershell`) 会将当前在实例上运行的进程的摘要写入 `C:` 驱动器上的一个文本文件。  
第二个脚本 (`batch`) 会将系统信息写入 `Output.tmp` 文件。  

```
task: executeScript
  inputs:
    - frequency: always
      type: powershell
      runAs: localSystem
      content: |
        Get-Process | Out-File -FilePath C:\Process.txt
    - frequency: always
      type: batch
      runAs: localSystem
      content: |
        systeminfo
```
**示例 3：重启后的幂等系统配置**  
此示例显示了一个运行一个幂等脚本来执行以下系统配置，并在每个步骤之间重新启动的 `executeScript` 任务：
+ 将计算机重命名。
+ 将计算机加入到域中。
+ 启用 Telnet。
该脚本会确保每个操作仅运行一次，从而防止循环重启并确保脚本的幂等性。  

```
task: executeScript
  inputs:
    - frequency: always
      type: powershell
      runAs: localSystem
      content: |-
        $name = $env:ComputerName
        if ($name -ne $desiredName) {
          Rename-Computer -NewName $desiredName
          exit 3010
        }
        $domain = Get-ADDomain
        if ($domain -ne $desiredDomain) 
        {
          Add-Computer -DomainName $desiredDomain
          exit 3010
        }
        $telnet = Get-WindowsFeature -Name Telnet-Client
        if (-not $telnet.Installed)
        {
          Install-WindowsFeature -Name "Telnet-Client"
          exit 3010 
        }
```

## extendRootPartition
<a name="ec2launch-v2-extendrootpartition"></a>

扩展根卷以使用磁盘上的所有可用空间。

*Frequency* – 一次

*AllowedStages* – `[Boot]`

*Inputs* – 无

*示例* 

```
task: extendRootPartition
```

## initializeVolume
<a name="ec2launch-v2-initializevolume"></a>

初始化附加到实例的空卷，以便对它们进行激活和分区。如果启动代理检测到卷不是空卷，则会跳过初始化。如果卷的前 4KiB 为空，或者卷没有 [Windows 可识别的驱动器布局](https://learn.microsoft.com/en-us/windows/win32/api/winioctl/ns-winioctl-drive_layout_information_ex)，则该卷被视为空卷。

无论驱动器是否已初始化，此任务运行时始终应用 `letter` 输入参数。

`initializeVolume` 任务执行以下操作。
+ 将磁盘属性 `offline` 和 `readonly` 设置为 false。
+ 创建分区。如果在 `partition` 输入参数中未指定分区类型，则应用以下默认值：
  + 如果磁盘大小小于 2TB，则将分区类型设置为 `mbr`。
  + 如果磁盘大小为 2TB 或更大，则将分区类型设置为 `gpt`。
+ 将卷格式设置为 NTFS。
+ 按如下方式设置卷标：
  + 使用 `name` 输入参数的值（如已指定）。
  + 如果卷是临时卷，并且未指定名称，请将卷标设置为 `Temporary Storage Z`。
+ 如果卷是临时卷（SSD 或 HDD，而不是 Amazon EBS），请在卷的根目录下创建一个包含以下内容的 `Important.txt` 文件：

  ```
  This is an 'Instance Store' disk and is provided at no additional charge.
  
  *This disk offers increased performance since it is local to the host
  *The number of Instance Store disks available to an instance vary by instance type
  *DATA ON THIS DRIVE WILL BE LOST IN CASES OF IMPAIRMENT OR STOPPING THE INSTANCE. PLEASE ENSURE THAT ANY IMPORTANT DATA IS BACKED UP FREQUENTLY
  
  For more information, please refer to: 适用于 EC2 实例的实例存储临时块存储.
  ```
+ 将驱动器号设置为 `letter` 输入参数中指定的值。

**阶段：**您可以在 `PostReady` 和 `UserData` 阶段运行 `initializeVolume` 任务。

**频率：**始终。

**输入**  
您可将运行时系统参数配置如下：    
**设备（映射列表）**  
（如有条件）启动代理初始化的每个设备的配置。当 `initialize` 输入参数设置为 `devices` 时，则为必需。  
+ **设备（字符串，必需）**- 在创建实例期间标识设备。例如，`xvdb`、`xvdf` 或 `\dev\nvme0n1`。
+ **字母（字符串，可选）**- 一个字符。要分配的驱动器号。
+ **名称（字符串，可选）**- 要分配的卷名称。
+ **分区（字符串，可选）**- 为要创建的分区类型指定以下值之一，或者让启动代理根据卷大小进行默认设置：
  + mbr
  + gpt  
**初始化（字符串）**  
（必填）确切指定以下默认值中的一项：  
+ `all`
+ `devices`

**示例**  
以下示例显示了 `initializeVolume` 任务的示例输入配置。  
**示例 1：在一个实例上初始化两个卷**  
此示例显示了一个在实例上初始化两个辅助卷的 `initializeVolume` 任务。示例中名为 `DataVolume2` 的设备是临时的。

```
task: initializeVolume
inputs:
  initialize: devices
  devices:
  - device: xvdb
    name: DataVolume1
    letter: D
    partition: mbr
  - device: /dev/nvme0n1
    name: DataVolume2
    letter: E
    partition: gpt
```

**示例 2：初始化附加到实例的 EBS 卷**  
此示例显示了一个对附加到实例的所有空 EBS 卷进行初始化的 `initializeVolume` 任务。

```
task: initializeVolume
inputs:
  initialize: all
```

## optimizeEna
<a name="ec2launch-v2-optimizeena"></a>

根据当前实例类型优化 ENA 设置；可能会重新引导实例。

*Frequency* – 始终

*AllowedStages* – `[PostReady, UserData]`

*Inputs* – 无

*示例* 

```
task: optimizeEna
```

## setAdminAccount
<a name="ec2launch-v2-setadminaccount"></a>

为在本地计算机上创建的管理员账户设置默认属性。

*Frequency* – 一次

*AllowedStages* – `[PreReady]`

*输入* – 

`name`：（字符串）管理员账户的名称

`password`：（映射）

`type`：（字符串）用于设置密码的策略，可为 `static`、`random` 或 `doNothing`

`data`：（字符串）存储数据，如果 `type` 字段为 static

*示例*

```
task: setAdminAccount
inputs:
  name: Administrator
  password:
  type: random
```

## setDnsSuffix
<a name="ec2launch-v2-setdnssuffix"></a>

将 DNS 后缀添加到搜索后缀列表中。只有尚不存在的后缀才会添加到列表中。有关启动代理如何设置 DNS 后缀的更多信息，请参阅 [为 EC2 Windows 启动代理配置 DNS 后缀](launch-agents-set-dns.md)。

*Frequency* – 始终

*AllowedStages* – `[PreReady]`

*输入* – 

`suffixes`：（字符串列表）一个或多个有效 DNS 后缀的列表；有效替换变量是 `$REGION` 和 `$AZ`

*示例*

```
task: setDnsSuffix
inputs:
  suffixes:
  - $REGION.ec2-utilities.amazonaws.com
```

## setHostName
<a name="ec2launch-v2-sethostname"></a>

将计算机的主机名设置为自定义字符串，如果未指定 `hostName`，则该值为私有 IPv4 地址。

*Frequency* – 始终

*AllowedStages* – `[PostReady, UserData]`

*输入* – 

`hostName`：（字符串）可选主机名，必须采用如下格式。
+ 必须为 15 个字符或更少
+ 必须仅包含字母数字字符（a-z、A-Z、0-9）和连字符 (-)。
+ 不能完全由数字字符组成。

`reboot`：（布尔值）表示在更改主机名时是否允许重新引导

*示例*

```
task: setHostName
inputs:
  reboot: true
```

## setWallpaper
<a name="ec2launch-v2-setwallpaper"></a>

在每个现有用户的启动文件夹中创建 `setwallpaper.lnk` 快捷方式文件，但 `Default User` 除外。当用户在实例启动后首次登录时，此快捷方式文件就会运行。使用显示实例属性的自定义壁纸设置实例。

快捷方式文件路径是：

```
$env:SystemDrive/Users/<user>/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/setwallpaper.lnk
```

**注意**  
删除 `setWallpaper` 任务不会删除此快捷方式文件。有关更多信息，请参阅 [`setWallpaper` 任务未启用，但壁纸会在重新启动时重置](ec2launchv2-troubleshooting.md#ec2launchv2-troubleshooting-wallpaper-resets)。

**阶段：**您可以在 `PreReady` 和 `UserData` 阶段配置墙纸。

**频率：**`always`

**墙纸配置**  
您可以使用以下设置配置墙纸。

**输入**  
您提供的输入参数以及可设置以配置墙纸的属性：    
**路径（字符串）**  
（必需）用于墙纸图像的本地 .jpg 格式图像文件的文件名路径。  
**属性（字符串列表）**  
（可选）您可以向墙纸添加以下一项或多项属性：  
+ `architecture`
+ `availabilityZone`
+ `hostName`
+ `instanceId`
+ `instanceSize`
+ `privateIpAddress`
+ `publicIpAddress`
+ `ipv6Address`  
**InstanceTags**  
（可选）您可以仅使用以下选项之一进行此设置。  
+ **AllTags**（字符串）– 将所有实例标签添加到墙纸。

  ```
  instanceTags: AllTags
  ```
+ **InstanceTags**（字符串列表）– 指定要添加到墙纸的实例标签名称列表。例如：

  ```
  instanceTags:
    - Tag 1
    - Tag 2
  ```

**示例**  
以下示例显示墙纸配置输入（可设置墙纸背景图像文件路径）、名为 `Tag 1` 和 `Tag 2` 的实例标签，以及实例的主机名、实例 ID 及私有和公有 IP 地址等属性。

```
task: setWallpaper
inputs:
  path: C:\ProgramData\Amazon\EC2Launch\wallpaper\Ec2Wallpaper.jpg
  attributes:
  - hostName
  - instanceId
  - privateIpAddress
  - publicIpAddress
  instanceTags:
  - Tag 1
  - Tag 2
```

**注意**  
必须启用元数据中的标签，才能在墙纸上显示标签。有关实例标签和元数据的更多信息，请参阅 [使用实例元数据来查看 EC2 实例的标签](work-with-tags-in-IMDS.md)。

## startSsm
<a name="ec2launch-v2-startssm"></a>

在 Sysprep 之后启动 Systems Manager (SSM) 服务。

*Frequency* – 始终

*AllowedStages* – `[PostReady, UserData]`

*Inputs* – 无

*示例*

```
task: startSsm
```

## sysprep
<a name="ec2launch-v2-task-sysprep"></a>

重置服务状态、更新 `unattend.xml`、禁用 RDP 并运行 Sysprep。此任务仅在所有其他任务完成后才会运行。

*Frequency* – 一次

*AllowedStages* – `[UserData]`

*输入* – 

`clean`：（布尔值）在运行 Sysprep 之前清理实例日志

`shutdown`：（布尔值）在运行 Sysprep 后关闭实例

*示例*

```
task: sysprep
inputs:
clean: true
shutdown: true
```

## writeFile
<a name="ec2-launch-v2-writefile"></a>

将文件写入目标。

*Frequency* – 请参阅 *Inputs*

*AllowedStages* – `[PostReady, UserData]`

*输入* – 

`frequency`：（字符串）`once` 或 `always` 之一

`destination`：（字符串）写入内容的路径

`content`：（字符串）要写入目标的文本

*示例*

```
task: writeFile
inputs:
  - frequency: once
  destination: C:\Users\Administrator\Desktop\booted.txt
  content: Windows Has Booted
```

# 排查 EC2Launch v2 代理的问题
<a name="ec2launchv2-troubleshooting"></a>

本节介绍 EC2Launch v2 的常见故障排除场景以及有关查看 Windows 事件日志及控制台日志输出和消息的信息。

**Topics**
+ [常见场景](#ec2launchv2-troubleshooting-scenarios)
+ [Windows 事件日志](#ec2launchv2-windows-event-logs)
+ [EC2Launch v2 控制台日志输出](#ec2launchv2-console-output)

## 常见故障排除场景
<a name="ec2launchv2-troubleshooting-scenarios"></a>

本节介绍常见的故障排除场景和解决步骤。

**Topics**
+ [服务无法设置壁纸](#ec2launchv2-troubleshooting-wallpaper)
+ [服务无法运行用户数据](#ec2launchv2-troubleshooting-user-data)
+ [服务只运行一次任务](#ec2launchv2-troubleshooting-task-once)
+ [服务无法运行任务](#ec2launchv2-troubleshooting-task-failed)
+ [服务多次运行用户数据](#ec2launchv2-troubleshooting-user-data-more-than-once)
+ [EC2Launch v1 中的计划任务在迁移到 EC2Launch v2 后无法运行](#ec2launchv2-troubleshooting-scheduled-tasks-migration)
+ [服务初始化不为空的 EBS 卷](#ec2launchv2-troubleshooting-ebs-initialize)
+ [`setWallpaper` 任务未启用，但壁纸会在重新启动时重置](#ec2launchv2-troubleshooting-wallpaper-resets)
+ [服务停留在运行状态](#ec2launchv2-troubleshooting-service-stuck-running)
+ [无效的 `agent-config.yml` 会阻止打开 EC2Launch v2 设置对话框](#ec2launchv2-troubleshooting-invalid-agent-config)
+ [`task:executeScript should be unique and only invoked once`](#ec2launchv2-troubleshooting-executescript)

### 服务无法设置壁纸
<a name="ec2launchv2-troubleshooting-wallpaper"></a>

**解决方案**

1. 确保存在 `%AppData%\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\setwallpaper.lnk` 。

1. 检查 `%ProgramData%\Amazon\EC2Launch\log\agent.log` 是否发生任何错误。

### 服务无法运行用户数据
<a name="ec2launchv2-troubleshooting-user-data"></a>

**可能的原因**：服务可能在运行用户数据之前失败。

**解决方案**

1. 检查 `%ProgramData%\Amazon\EC2Launch\state\previous-state.json`。

1. 查看 `boot`、`network`、`preReady` 和 `postReadyLocalData` 是否全部标记为成功。

1. 如果其中一个阶段失败，请检查 `%ProgramData%\Amazon\EC2Launch\log\agent.log` 中的具体错误。

### 服务只运行一次任务
<a name="ec2launchv2-troubleshooting-task-once"></a>

**解决方案**

1. 检查任务的频率。

1. 如果服务已在 Sysprep 之后运行，并且任务频率设置为 `once`，则该任务不会再次运行。

1. 如果您希望任务在每次运行 EC2Launch v2 时运行，请将任务的频率设置为 `always`。

### 服务无法运行任务
<a name="ec2launchv2-troubleshooting-task-failed"></a>

**解决方案**

1. 检查 `%ProgramData%\Amazon\EC2Launch\log\agent.log` 中的最新条目。

1. 如果没有发生错误，请尝试从 `"%ProgramFiles%\Amazon\EC2Launch\EC2Launch.exe" run` 手动运行服务以查看任务是否成功。

### 服务多次运行用户数据
<a name="ec2launchv2-troubleshooting-user-data-more-than-once"></a>

**解决方案**  
用户数据在 EC2Launch v1 和 EC2Launch v2 之间的处理方式不同。将 `persist` 设置为 `true` 时，EC2Launch v1 在实例上将用户数据作为计划任务运行。如果 `persist` 设置为 `false`，则即使重新启动后退出或运行时中断，也不会计划该任务。

EC2Launch v2 将用户数据作为代理任务运行并跟踪其运行状态。如果用户数据发出计算机重启或用户数据在运行时中断，则运行状态将保持不变，`pending` 并且用户数据将在下次实例启动时再次运行。如果要阻止用户数据脚本多次运行，请使脚本具有幂等性。

以下示例幂极脚本设置计算机名称并加入域。

```
<powershell>
  $name = $env:computername
  if ($name -ne $desiredName) {
	Rename-Computer -NewName $desiredName
  }
  $domain = Get-ADDomain
  if ($domain -ne $desiredDomain) 
  {
	Add-Computer -DomainName $desiredDomain
  }
  $telnet = Get-WindowsFeature -Name Telnet-Client
  if (-not $telnet.Installed)
  {
	Install-WindowsFeature -Name "Telnet-Client"
  }
</powershell>
<persist>false</persist>
```

### EC2Launch v1 中的计划任务在迁移到 EC2Launch v2 后无法运行
<a name="ec2launchv2-troubleshooting-scheduled-tasks-migration"></a>

**解决方案**  
迁移工具不会检测任何链接到 EC2Launch v1 脚本的计划任务；因此，它不会在 EC2Launch v2 中自动设置这些任务。要配置这些任务，请编辑 [`agent-config.yml`](ec2launch-v2-settings.md#ec2launch-v2-task-configuration) 文件或使用 [EC2Launch v2 设置对话框](ec2launch-v2-settings.md#ec2launch-v2-ui)。例如，如果实例的计划任务正在运行 `InitializeDisks.ps1`，则在运行迁移工具之后，您必须在 EC2Launch v2 设置对话框中指定要初始化的卷。请参阅 [使用 EC2Launch v2 设置对话框更改设置](ec2launch-v2-settings.md#ec2launch-v2-ui) 程序的步骤 6。

### 服务初始化不为空的 EBS 卷
<a name="ec2launchv2-troubleshooting-ebs-initialize"></a>

**解决方案**  
在初始化卷之前，EC2Launch v2 会尝试检测该卷是否为空。如果卷不为空，则会跳过初始化。不初始化任何检测到不为空的卷。如果卷的前 4 KiB 为空，或者卷没有 [Windows 可识别的驱动器布局](https://learn.microsoft.com/en-us/windows/win32/api/winioctl/ns-winioctl-drive_layout_information_ex)，则该卷被视为空。在 Linux 系统上初始化和格式化的卷没有 Windows 可识别的驱动程序布局，例如 MBR 或 GPT。因此，它将被视为空并已初始化。如果要保留此数据，请不要依赖 EC2Launch v2 空驱动器检测。相反，请指定要在 [EC2Launch v2 设置对话框](ec2launch-v2-settings.md#ec2launch-v2-ui)（请参阅步骤 6）或 [`agent-config.yml`](ec2launch-v2-task-definitions.md#ec2launch-v2-initializevolume) 中初始化的卷。

### `setWallpaper` 任务未启用，但壁纸会在重新启动时重置
<a name="ec2launchv2-troubleshooting-wallpaper-resets"></a>

`setWallpaper` 任务在每个现有用户的启动文件夹中创建 `setwallpaper.lnk` 快捷方式文件。当用户在实例启动后首次登录时，此快捷方式文件就会运行。使用显示实例属性的自定义壁纸设置实例。删除 `setWallpaper` 任务不会删除此快捷方式文件。您必须手动删除此文件或使用脚本将其删除。

快捷方式路径是：

`$env:SystemDrive/Users/<user>/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/setwallpaper.lnk`

**解决方案**  
手动删除此文件，或使用脚本将其删除。

**删除快捷方式文件的 PowerShell 脚本示例**

```
foreach ($userDir in (Get-ChildItem "C:\Users" -Force -Directory).FullName)
{
	$startupPath = Join-Path $userDir -ChildPath "AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
	if (Test-Path $startupPath)
	{
		$wallpaperSetupPath = Join-Path $startupPath -ChildPath "setwallpaper.lnk"
		if (Test-Path $wallpaperSetupPath)
		{
			Remove-Item $wallpaperSetupPath -Force -Confirm:$false
		}
	}
}
```

### 服务停留在运行状态
<a name="ec2launchv2-troubleshooting-service-stuck-running"></a>

**描述**

EC2Launch v2 被阻止，日志消息（`agent.log`）与以下类似：

```
2022-02-24 08:08:58 Info: *****************************************************************************************
2022-02-24 08:08:58 Info: EC2Launch Service starting
2022-02-24 08:08:58 Info: Windows event custom log exists: Amazon EC2Launch
2022-02-24 08:08:58 Info: ACPI SPCR table not supported. Bailing Out
2022-02-24 08:08:58 Info: Serial port is in use. Waiting for Serial Port...
2022-02-24 08:09:00 Info: ACPI SPCR table not supported. Use default console port.
2022-02-24 08:09:02 Info: ACPI SPCR table not supported. Use default console port.
2022-02-24 08:09:04 Info: ACPI SPCR table not supported. Use default console port.
2022-02-24 08:09:06 Info: ACPI SPCR table not supported. Use default console port.
```

**可能的原因**  
SAC 已启用并使用串行端口。有关更多信息，请参阅[使用 SAC 排查 Windows 实例的问题](troubleshoot-using-serial-console.md#troubleshooting-sac)。

**解决方案**  
请尝试以下步骤来解决该问题：
+ 禁用使用串行端口的服务。
+ 如果您希望服务继续使用串行端口，请编写自定义脚本来执行启动代理任务，并将其作为计划的任务调用。

### 无效的 `agent-config.yml` 会阻止打开 EC2Launch v2 设置对话框
<a name="ec2launchv2-troubleshooting-invalid-agent-config"></a>

**说明**  
EC2Launch v2 设置在打开对话框之前尝试解析 `agent-config.yml` 文件。如果 YAML 配置文件不遵循支持的架构，则对话框将显示以下错误：

`Unable to parse configuration file agent-config.yml. Review configuration file. Exiting application.`

**解决方案**

1. 验证配置文件是否遵循[支持的架构](ec2launch-v2-settings.md#ec2launch-v2-schema-agent-config)。

1. 如果想从头开始，请将默认配置文件复制到 `agent-config.yml` 中。您可以使用“任务配置”部分中提供的[示例 `agent-config.yml`](ec2launch-v2-settings.md#ec2launch-v2-example-agent-config)。

1. 您也可以通过删除 `agent-config.yml` 重新开始。EC2Launch v2 设置会生成空配置文件。

### `task:executeScript should be unique and only invoked once`
<a name="ec2launchv2-troubleshooting-executescript"></a>

**说明**  
不能在同一阶段重复一个任务。

**解决方案**  
有些任务必须作为数组输入，例如 [**executeScript**](ec2launch-v2-task-definitions.md#ec2launch-v2-executescript) 和 [**executeProgram**](ec2launch-v2-task-definitions.md#ec2launch-v2-executeprogram)。有关如何将脚本编写为数组的示例，请参阅 [**executeScript**](ec2launch-v2-task-definitions.md#ec2launch-v2-executescript)。

## Windows 事件日志
<a name="ec2launchv2-windows-event-logs"></a>

EC2Launch v2 发布重要事件的 Windows 事件日志，例如服务启动、Windows 已就绪以及任务成功和失败。事件标识符唯一标识特定事件。每个事件都包含阶段、任务和级别信息以及描述。您可以使用事件标识符为特定事件设置触发器。

事件 ID 提供有关事件的信息，并唯一标识某些事件。事件 ID 的最低有效位表示事件的严重性。


| 活动 | 最低有效位 | 
| --- | --- | 
|  Success  | . . .0 | 
| Informational | . . .1 | 
| Warning | . . .2 | 
| Error | . . .3 | 

当服务启动或停止时生成的与服务相关的事件，包括个位数事件标识符。


| 活动 | 个位数标识符 | 
| --- | --- | 
|  Success  | 0 | 
| Informational | 1 | 
| Warning | 2 | 
| Error | 3 | 

`EC2LaunchService.exe` 事件的事件消息以 `Service:` 开头。`EC2Launch.exe` 事件的事件消息不以 `Service:` 开头。

四位数的事件 ID 包括有关事件阶段、任务和严重性的信息。

**Topics**
+ [事件 ID 格式](#ec2launchv2-windows-event-logs-format)
+ [事件 ID 示例](#ec2launchv2-windows-event-logs-id-examples)
+ [Windows 事件日志架构](#ec2launch-v2-windows-event-logs-schema)

### 事件 ID 格式
<a name="ec2launchv2-windows-event-logs-format"></a>

下表显示了 EC2Launch v2 事件标识符的格式。


| 3 | 2 1 | 0 | 
| --- | --- | --- | 
|  S  |  T  |  L  | 

表中的字母和数字代表以下事件类型和定义。


| Event type | 定义 | 
| --- | --- | 
|  S（阶段）  |  0 – 服务级别消息 1 – Boot 2 – Network 3 – PreReady 5 – Windows 准备就绪 6 – Postready 7 – UserData  | 
|  T（任务）  |  由相应的两个值表示的任务在每个阶段都不同。要查看事件的完整列表，请参阅 [Windows 事件日志架构](#ec2launch-v2-windows-event-logs-schema)。  | 
| L（事件级别） |  0 – 成功 1 – 信息性 2 – 警告 3 – 错误  | 

### 事件 ID 示例
<a name="ec2launchv2-windows-event-logs-id-examples"></a>

以下是示例事件 ID。
+ `5000` – Windows 已准备好使用
+ `3010` – PreReady 阶段中的激活 Windows 任务已成功执行
+ `6013` – Postready 本地数据阶段中的设置壁纸任务遇到错误

### Windows 事件日志架构
<a name="ec2launch-v2-windows-event-logs-schema"></a>


| 消息/事件 ID | 事件消息 | 
| --- | --- | 
|  . . .0  | Success | 
|  . . .1  | Informational | 
|  . . .2  | Warning | 
|  . . .3  | Error | 
|  x  | EC2Launch service-level logs | 
|  0  | EC2Launch service exited successfully | 
|  1  |  EC2Launch service informational logs | 
|  2  |  EC2Launch service warning logs | 
| 3 | EC2Launch service error logs | 
|  10  | Replace state.json with previous-state.json | 
| 100 | Serial Port | 
| 200 | Sysprep | 
| 300 | PrimaryNic | 
| 400 | Metadata | 
|  x000  | Stage (1 digit), Task (2 digits), Status (1 digit) | 
|  1000  | Boot | 
|  1010  | Boot - extend\$1root\$1partition | 
| 2000 | Network | 
|  2010  | Network - add\$1routes | 
|  3000  | PreReady | 
|  3010  | PreReady - activate\$1windows | 
|  3020  | PreReady - install\$1egpu\$1manager | 
|  3030  | PreReady - set\$1monitor\$1on | 
|  3040  | PreReady - set\$1hibernation | 
|  3050  | PreReady - set\$1admin\$1account | 
|  3060  | PreReady - set\$1dns\$1suffix | 
|  3070  | PreReady - set\$1wallpaper | 
|  3080  | PreReady - set\$1update\$1schedule | 
|  3090  | PreReady - output\$1log | 
|  3100  | PreReady - enable\$1open\$1ssh | 
|  5000  | Windows is Ready to use | 
|  6000  | PostReadyLocalData | 
| 7000 | PostReadyUserData | 
|  6010/7010  | PostReadyLocal/UserData - set\$1wallpaper | 
|  6020/7020  | PostReadyLocal/UserData - set\$1update\$1schedule | 
|  6030/7030  | PostReadyLocal/UserData - set\$1hostname | 
|  6040/7040  | PostReadyLocal/UserData - execute\$1program | 
|  6050/7050  | PostReadyLocal/UserData - execute\$1script | 
|  6060/7060  | PostReadyLocal/UserData - manage\$1package | 
|  6070/7070  | PostReadyLocal/UserData - initialize\$1volume | 
|  6080/7080  | PostReadyLocal/UserData - write\$1file | 
|  6090/7090  | PostReadyLocal/UserData - start\$1ssm | 
|  7100  | PostReadyUserData - enable\$1open\$1ssh | 
|  6110/7110  | PostReadyLocal/UserData - enable\$1jumbo\$1frames | 

## EC2Launch v2 控制台日志输出
<a name="ec2launchv2-console-output"></a>

本部分包含 EC2Launch v2 的示例控制台日志输出，并列出所有 EC2Launch v2 控制台日志错误消息，以帮助您排查问题。有关实例控制台输出及如何进行访问的更多信息，请参阅 [实例控制台输出](troubleshoot-unreachable-instance.md#instance-console-console-output)。

**Topics**
+ [EC2Launch v2 控制台日志输出](#ec2launchv2-console-log-output)
+ [EC2Launch v2 控制台日志消息](#ec2launchv2-console-log-messages)

### EC2Launch v2 控制台日志输出
<a name="ec2launchv2-console-log-output"></a>

以下是 EC2Launch v2 的示例控制台日志输出。本示例中的某些值被用大括号括起来的代表性文本替换。

```
2025/07/22 21:26:53Z: Windows sysprep configuration complete.
2025/07/22 21:26:53Z: Message: Waiting for access to metadata...
2025/07/22 21:26:53Z: Message: Meta-data is now available.
2025/07/22 21:26:53Z: AMI Origin Version: 2024.12.13
2025/07/22 21:26:53Z: AMI Origin Name: Windows_Server-2022-English-Full-Base
2025/07/22 21:26:53Z: OS: Microsoft Windows NT 10.0.20348
2025/07/22 21:26:53Z: OsVersion: 10.0
2025/07/22 21:26:53Z: OsProductName: Windows Server 2022 Datacenter
2025/07/22 21:26:53Z: OsBuildLabEx: 20348.1.amd64fre.fe_release.210507-1500
2025/07/22 21:26:53Z: OsCurrentBuild: 20348
2025/07/22 21:26:53Z: OsReleaseId: 2009
2025/07/22 21:26:53Z: Language: en-US
2025/07/22 21:26:53Z: TimeZone: UTC
2025/07/22 21:26:53Z: Offset: UTC +0000
2025/07/22 21:26:53Z: Launch: EC2 Launch v2.2.63
2025/07/22 21:26:53Z: AMI-ID: ami-1234567890abcdef1
2025/07/22 21:26:53Z: Instance-ID: i-1234567890abcdef0
2025/07/22 21:26:54Z: Instance Type: t3.xlarge
2025/07/22 21:26:54Z: Driver: AWS NVMe Driver v1.6.0.35
2025/07/22 21:26:54Z: SubComponent: 1.6.0.35; EnableSCSIPersistentReservations: 0
2025/07/22 21:26:54Z: Driver: AWS PV Driver Package v8.5.0
2025/07/22 21:26:55Z: Driver: Amazon Elastic Network Adapter v2.8.0.0
2025/07/22 21:26:55Z: HOSTNAME: EC2AMAZ-9FJG5CC
2025/07/22 21:26:55Z: RDPCERTIFICATE-SUBJECTNAME: {certificate subject name}
2025/07/22 21:26:55Z: RDPCERTIFICATE-THUMBPRINT: {thumbprint hash}
2025/07/22 21:26:56Z: SSM: Amazon SSM Agent v3.3.2746.0
2025/07/22 21:26:57Z: User data format: no_user_data
2025/07/22 21:26:57Z: EC2LaunchTelemetry: IsTelemetryEnabled=true
2025/07/22 21:26:57Z: EC2LaunchTelemetry: AgentOsArch=windows_amd64
2025/07/22 21:26:57Z: EC2LaunchTelemetry: IsAgentScheduledPerBoot=true
2025/07/22 21:26:57Z: EC2LaunchTelemetry: AgentCommandErrorCode=1
2025/07/22 21:26:57Z: EC2LaunchTelemetry: AdminPasswordTypeCode=0
2025/07/22 21:26:57Z: EC2LaunchTelemetry: AgentErrorLocation=execute_windows.go:410
2025/07/22 21:26:57Z: EC2LaunchTelemetry: IpConflictDetectionCode=0
2025/07/22 21:26:57Z: Message: Windows is Ready to use
{"type":"EC2AgentTelemetry","agentId":"WindowsLaunchAgentV2", ...}
{"type":"EC2AgentTelemetry","agentId":"WindowsLaunchAgentV2", ...}
```

### EC2Launch v2 控制台日志消息
<a name="ec2launchv2-console-log-messages"></a>

以下是所有 EC2Launch v2 控制台日志消息的列表。

```
Error EC2Launch service is stopping. {error message}
```

停止服务错误详情：
+ `Error setting up EC2Launch agent folders`
+ `See instance logs for detail`
+ `Error stopping service`
+ `Error initializing service`

```
Windows sysprep configuration complete
```

```
Invalid administrator username: {invalid username}
```

```
Invalid administrator password
Username: {username}
Password: <Password>{encrypted password}</Password>
```

以下消息是包含 AMI 详细信息的信息块：

```
AMI Origin Version: {amiVersion}
AMI Origin Name: {amiName}
Microsoft Windows NT {currentVersion}.{currentBuildNumber}
OsVersion: {currentVersion}
OsProductName: {productName}
OsBuildLabEx: {buildLabEx}
OsCurrentBuild: {currentBuild}
OsReleaseId: {releaseId}
Language: {language}
TimeZone: {timeZone}
Offset: UTC {offset}
Launch agent: EC2Launch {BuildVersion}
AMI-ID: {amiId}
Instance-ID: {instanceId}
Instance Type: {instanceType}
HOSTNAME: {computer name}
RDPCERTIFICATE-SUBJECTNAME: {certificate subject name}
RDPCERTIFICATE-THUMBPRINT: {thumbprint hash}
SqlServerBilling: {sql billing}
SqlServerInstall: {sql patch leve, edition type}
Driver: AWS NVMe Driver {version}
Driver: Inbox NVMe Driver {version}
Driver: AWS PV Driver Package {version}
SSM: Amazon SSM Agent {version}
AWS VSS Version: {version}
```

```
Windows sysprep configuration complete.
Windows is being configured. 'SysprepState is {state}'
Windows is still being configured. 'SysprepState is {state}'
Windows is Ready to use
Waiting for access to metadata...
Meta-data is now available.
Metadata is not available for this instance.
Timed out waiting for access to metadata.
User data format: {format}
```

EC2Launch v2 遥测消息包括启动遥测属性值。从 2.2.63 版本开始，EC2 代理遥测数据被格式化为 JSON 对象。

```
EC2LaunchTelemetry: {telemetry property}
```

```
{"type":"EC2AgentTelemetry","agentId":"WindowsLaunchAgentV2" ... }
```

# EC2Launch v2 版本历史记录
<a name="ec2launchv2-versions"></a>

**Topics**
+ [EC2Launch v2 版本历史记录](#ec2launchv2-version-history)

## EC2Launch v2 版本历史记录
<a name="ec2launchv2-version-history"></a>

要确保安装了最新的启动代理，请参阅[安装最新版本的 EC2Launch v2](ec2launch-v2-install.md)。您可在 EC2Launch v2 代理的新版本发布时收到通知。有关更多信息，请参阅 [订阅 EC2 Windows 启动代理通知](launch-agents-subscribe-notifications.md)。

下表说明已发行的 EC2Launch v2 版本。


| 版本 | 详细信息 | 发行日期 | 
| --- | --- | --- | 
| 2.4.0 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2026 年 3 月 5 日 | 
| 2.3.237 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2026 年 2 月 25 日 | 
| 2.3.108 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2025 年 12 月 29 日 | 
| 2.3.56 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2025 年 11 月 4 日 | 
| 2.3.5 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2025 年 9 月 15 日 | 
| 2.2.63 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2025 年 7 月 29 日 | 
| 2.1.1 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2025 年 5 月 14 日 | 
| 2.0.2107 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2025 年 3 月 27 日 | 
| 2.0.2081 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2025 年 2 月 4 日 | 
| 2.0.2046 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2024 年 10 月 3 日 | 
| 2.0.1981 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2024 年 8 月 6 日 | 
| 2.0.1948 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2024 年 7 月 1 日 | 
| 2.0.1924 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2024 年 6 月 10 日 | 
| 2.0.1914 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2024 年 6 月 5 日 | 
| 2.0.1881 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2024 年 5 月 8 日 | 
| 2.0.1815 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2024 年 3 月 6 日 | 
| 2.0.1739 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2024 年 1 月 17 日 | 
| 2.0.1702 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2024 年 1 月 4 日 | 
| 2.0.1643 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2023 年 10 月 4 日 | 
| 2.0.1580 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2023 年 9 月 5 日 | 
| 2.0.1521 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2023 年 7 月 3 日 | 
| 2.0.1303 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2023 年 5 月 3 日 | 
| 2.0.1245 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2023 年 3 月 8 日 | 
| 2.0.1173 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2023 年 2 月 6 日 | 
| 2.0.1121 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2023 年 1 月 4 日 | 
| 2.0.1082 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2022 年 12 月 7 日 | 
| 2.0.1011 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2022 年 11 月 11 日 | 
| 2.0.1009 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2022 年 11 月 8 日 | 
| 2.0.982 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2022 年 10 月 31 日 | 
| 2.0.863 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2022 年 7 月 6 日 | 
| 2.0.698 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2022 年 1 月 30 日 | 
| 2.0.674 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2021 年 11 月 15 日 | 
| 2.0.651 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2021 年 10 月 7 日 | 
| 2.0.592 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2021 年 8 月 31 日 | 
| 2.0.548 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2021 年 8 月 4 日 | 
| 2.0.470 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2021 年 7 月 20 日 | 
| 2.0.285 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2021 年 3 月 8 日 | 
| 2.0.207 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2021 年 2 月 2 日 | 
| 2.0.160 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html) | 2020 年 12 月 4 日 | 
| 2.0.153 | 在 UserData 中添加 Sysprep 功能。 | 2020 年 11 月 3 日 | 
| 2.0.146 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2020 年 10 月 6 日 | 
| 2.0.124 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2020 年 9 月 10 日 | 
| 2.0.104 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ec2launchv2-versions.html)  | 2020 年 8 月 12 日 | 
| 2.0.0 | 首次发布。 | 2020 年 6 月 30 日 | 