EC2Launch v2 概览 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

EC2Launch v2 概览

EC2Launch v2 是一种服务,可在实例启动期间执行任务,并可在实例停止并稍后启动或重新启动时运行。

要比较启动代理版本的功能,请参阅 比较 Amazon EC2 启动代理

EC2Launch v2 概念

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

任务

您可以调用任务来对实例执行操作。您可以在 agent-config.yml 文件中或通过用户数据配置任务。有关 EC2Launch v2 的可用任务列表,请参阅 EC2Launch v2 任务。有关任务配置架构和详细信息,请参阅 EC2Launch v2 任务配置

舞台

阶段是 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 会按照您在 agent-config.yml 和用户数据中指定的顺序运行任务列表。阶段按顺序运行。上一阶段完成后,开始下一阶段。任务也按顺序运行。

频率

任务频率决定任务的运行时间,具体取决于引导上下文。大多数任务的频率只有一次。您可以指定 executeScript 任务的频率。

您将在 EC2Launch v2 任务配置 中看到以下频率。

  • 一次 — 任务在 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 控制台。

  • 向 Amazon EC2 控制台发送 RDP 证书指纹。

  • 请动态扩展操作系统分区,以包含所有未分区的空间。

  • 运行用户数据。有关指定用户数据的更多信息,请参阅EC2Launch v2 任务配置

  • 设置非持久静态路由以访问元数据服务和 Amazon KMS 服务器。

  • 将非引导分区设置为 MBR 或 GPT。

  • 在 Sysprep 之后启动 Systems Manager 服务。

  • 优化 ENA 设置。

  • 为更高版本的 Windows 启用 OpenSSH。

  • 启用巨型帧。

  • 将 Sysprep 设置为与 EC2Launch v2 一起运行。

  • 发布 Windows 事件日志。

遥测

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

EC2Launch v2 版本 2.0.592 及更高版本会收集遥测,例如使用情况指标和错误。此数据是从运行 EC2Launch v2 的 Amazon EC2 实例收集的。这包括 Amazon 拥有的所有 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