EC2Launch v2 概览
EC2Launch v2 是一种服务,可在实例启动期间执行任务,并可在实例停止并稍后启动或重新启动时运行。
比较 Amazon EC2 启动服务
下表显示了 EC2Config、EC2Launch v1 和 EC2Launch v2 之间的主要功能差异。
功能 | EC2Config | EC2Launch v1 | EC2Launch v2 |
---|---|---|---|
执行方式 | Windows 服务 |
PowerShell 脚本 |
Windows 服务 |
支持 |
Windows 2003 Windows 2008 Windows 2008 R2 Windows 2012 Windows 2012 R2 |
Windows 2016 Windows 2019(LTSC 和 SAC) |
Windows 2008 Windows 2008 R2 Windows 2012 Windows 2012 R2 Windows 2016 Windows 2019(LTSC 和 SAC) Windows 2022 |
配置文件 |
XML | XML |
YAML |
设置管理员用户名 |
否 | 否 |
是 |
用户数据大小 |
16 KB | 16 KB |
60 KB(压缩) |
本地用户数据录入到 AMI 上 |
否 | 否 | 是的,可配置 |
用户数据中的任务配置 | 否 | 否 | 是 |
可配置壁纸 |
否 | 否 |
是 |
自定义任务执行顺序 |
否 | 否 |
是 |
可配置任务 |
15 |
9 |
在启动时为 20 |
支持 Windows 事件查看器 |
是 |
否 |
是 |
事件查看器事件类型的数量 |
2 |
0 |
30 |
EC2Launch v2 概念
在考虑使用 EC2Launch v2 时,以下概念很有用。
任务
任务可以被调用来对实例执行操作。有关 EC2Launch v2 的可用任务的完整列表,请参阅 EC2Launch v2 任务。每个任务都包括一组在其中运行的阶段、定义的频率和输入。任务可以在 agent-config
文件中或通过 user-data
进行配置。
阶段
阶段是由服务运行的任务的逻辑分组。某些任务只能在特定阶段运行。另一些任务可以分多个阶段运行。使用本地数据时,您必须指定运行任务的阶段。使用用户数据时,阶段是隐含的。
下面的列表按运行顺序显示这些阶段:
-
Boot
-
Network
-
PreReady
-
PostReady
-
UserData
频率
任务频率用于计划任务运行的时间,具体取决于引导上下文。
可以指定以下频率:
-
一次 — 任务在 AMI 首次引导时(完成了 Sysprep)运行一次。
-
始终 — 任务在每次启动代理运行时都会运行。启动代理在以下情况运行:
-
实例启动或重新启动时
-
EC2Launch 服务运行时
-
EC2Launch.exe run
被调用
-
agent-config
agent-config
是位于 EC2Launch v2 的配置文件夹中的文件。它包括用于 Boot、Network、Preready 和 Postready 阶段的配置。此文件用于指定在 AMI 首次引导或以后引导时,应运行任务的实例的配置。
默认情况下,EC2Launch v2 安装会安装一个 agent-config
文件,其中包含在标准 Amazon Windows AMI 中使用的推荐配置。您可以更新配置文件以更改 EC2Launch v2 为您的 AMI 指定的默认引导体验。
用户数据
用户数据是在启动实例时可配置的数据。您可以更新用户数据以动态更改如何配置自定义 AMI 或快速启动 AMI。EC2Launch v2 支持 60 kB 用户数据输入长度。用户数据仅包括 UserData 阶段,因此在 agent-config
文件之后运行。您可以在使用启动实例向导启动实例时输入用户数据,也可以从 EC2 控制台修改用户数据。有关使用用户的更多信息,请参阅启动时在 Windows 实例上运行命令。
EC2Launch v2 任务
EC2Launch v2 可以在每次引导时执行以下任务:
-
设置新的(可选)自定义壁纸,以呈现有关实例的信息。
-
为在本地计算机上创建的管理员账户设置属性。
-
将 DNS 后缀添加到搜索后缀列表中。只有尚不存在的后缀才会添加到列表中。
-
为任何附加卷设置驱动器盘符,并扩展它们以使用可用空间。
-
将文件从 Internet 或从配置写入磁盘。如果内容在配置中,则可以对其进行 base64 解码或编码。如果内容来自 Internet,则可以解压缩。
-
执行来自 Internet 或来自配置的脚本。如果脚本来自配置,则可以对其进行 base64 解码。如果脚本来自 Internet,则可以解压缩。
-
使用给定参数执行程序。
-
设置计算机名称。
-
将实例信息发送到 Amazon EC2 控制台。
-
向 EC2 控制台发送 RDP 证书指纹。
-
请动态扩展操作系统分区,以包含所有未分区的空间。
-
执行用户数据。有关指定用户数据的更多信息,请参阅EC2Launch v2 任务配置。
-
设置非持久静态路由以访问元数据服务和 AWS KMS 服务器。
-
将非引导分区设置为 MBR 或 GPT。
-
在 Sysprep 之后启动 Systems Manager (SSM) 服务。
-
优化 ENA 设置。
-
为更高版本的 Windows 启用 OpenSSH。
-
启用巨型帧。
-
将 Sysprep 设置为与 EC2Launch v2 一起运行。
-
发布 Windows 事件日志。
遥测
遥测是附加信息,可帮助 AWS 更好地了解您的需求、诊断问题并提供功能,以改善 AWS 服务带给您的体验。
EC2Launch v2 版本 2.0.592
及更高版本会收集遥测,例如使用情况指标和错误。此数据是从运行 EC2Launch v2 的 Amazon EC2 实例收集的。这包括 AWS 拥有的所有 Windows AMI。
EC2Launch v2 收集以下类型的遥测:
-
使用情况信息 — 代理命令、安装方法和计划的运行频率。
-
错误和诊断信息 — 代理安装和运行错误代码。
收集的数据示例:
2021/07/15 21:44:12Z: EC2LaunchTelemetry: IsAgentScheduledPerBoot=true
2021/07/15 21:44:12Z: EC2LaunchTelemetry: IsUserDataScheduledPerBoot=true
2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentCommandCode=1
2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentCommandErrorCode=5
2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentInstallCode=2
2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentInstallErrorCode=0
预设情况下,遥测处于启用状态。您可以随时禁用遥测收集。如果启用了遥测,EC2Launch v2 会发送遥测数据,无需额外的客户通知。
遥测可见性
启用遥测后,它将显示在 Amazon EC2 控制台输出中,如下所示:
2021/07/15 21:44:12Z: Telemetry: <Data>
在实例上禁用遥测
要禁用单个实例的遥测,您可以设置系统环境变量,也可以使用 MSI 修改安装。
要通过设置系统环境变量来禁用遥测,请以管理员身份运行以下命令:
setx /M EC2LAUNCH_TELEMETRY 0
要使用 MSI 禁用遥测,请在下载 MSI 后运行以下命令:
msiexec /i ".\AmazonEC2Launch.msi" Remove="Telemetry" /q