Amazon Elastic Compute Cloud
Windows 实例用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

使用 EC2Config 服务配置 Windows 实例

Windows Server 2016 之前的 Windows AMI 包括一项名为 Config 服务 (EC2Config.exeEC2) 的可选服务。EC2Config 在实例启动时启动,并且在启动期间以及您每次停止或启动实例时执行相关任务。EC2Config 还可按需执行任务。部分任务可自动启用,而其他任务必须手动启用。尽管此服务是可选的,但可让您访问否则无法访问的高级功能。此服务可使用 LocalSystem 账户运行。

注意

EC2Launch 在 Windows Server 2016 AMI 上替换 EC2Config。有关更多信息,请参阅 使用 EC2Launch 配置 Windows 实例

EC2Config 会使用设置文件来控制它的操作。您可以通过图形工具或直接编辑 XML 文件来更新这些设置文件。服务二进制文件和其他文件均包含在 %ProgramFiles%\Amazon\EC2ConfigService 目录中。

EC2Config 任务

当系统首次启动实例后又将其禁用时,EC2Config 会运行初始启动任务。要再次运行这些任务,您必须在关闭实例之前明确启用它们,或者手动运行 Sysprep。这些任务如下所示:

  • 设置管理员账户的随机加密密码。

  • 生成和安装远程桌面连接使用的主机证书。

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

  • 执行指定的用户数据 (和 Cloud-Init,如果已安装)。

每次实例启动时,EC2Config 会执行以下任务:

  • 更改主机名称以与十六进制表示法的私有 IP 地址匹配 (此任务在默认情况下处于禁用状态,必须启用才能在实例启动时运行)。

  • 配置密钥管理服务器 (AWS KMS),检查 Windows 激活状态并根据需要激活 Windows。

  • 挂载所有 Amazon EBS 卷和实例存储卷,并且将卷名称映射到驱动器盘符。

  • 将事件日志条目写入控制台以帮助排查问题 (此任务在默认情况下处于禁用状态,必须进行启用才能在实例启动时运行)。

  • 将 Windows 已准备就绪写入控制台。

  • 已连接多个 NIC 时,向主网适配器添加自定义路由,以启用以下 IP 地址:169.254.169.250、169.254.169.251 和 169.254.169.254。当您访问实例元数据时,Windows 激活会使用这些地址。

每次用户登录时,EC2Config 都会执行以下任务:

  • 在桌面背景中显示墙纸信息。

实例运行时,您可以请求 EC2Config 按需执行以下任务:

EC2Config 和 Amazon EC2 Systems Manager

对于在 2016 年 11 月之前发布的早于 Windows Server 2016 的 Windows Server 版本,EC2Config 服务可以处理从包含这些版本的 AMI 创建的实例上的 SSM 请求。

对于在 2016 年 11 月之后发布的早于 Windows Server 2016 的 Windows Server 版本,从包含这些版本的 AMI 创建的实例包含 EC2Config 服务和 SSM 代理。EC2Config 负责执行上文所述的所有任务,而 SSM 代理负责处理 Run Command 和 SSM Config 的请求。有关更多信息,请参阅 使用 EC2Launch 配置 Windows 实例

您可以使用 Run Command 更新现有实例,以便使用最新版本的 EC2Config 服务和 SSM 代理。有关更多信息,请参阅 Amazon EC2 Systems Manager 用户指南 中的使用 Systems Manager Run Command 更新 EC2Config 服务

EC2Config 和 SysPrep

EC2Config 服务会运行 Sysprep,借助该 Microsoft 工具您可以创建可重复使用的自定义 Windows AMI。在 EC2Config 调用 Sysprep 时,会使用 %ProgramFiles%\Amazon\EC2ConfigService\Settings 中的设置文件来确定要执行的操作。您可以使用 Ec2 Service Properties 对话框间接编辑这些文件,也可以使用 XML 编辑器或文本编辑器直接进行编辑。然而,有些高级设置并未包含在 Ec2 Service Properties (Ec2 服务属性) 对话框中,因此您必须直接编辑这些条目。

如果您在更新某实例的设置之后从中创建了一个 AMI,则新设置会应用到所有从新 AMI 启动的实例。有关创建 AMI 的信息,请参阅创建 Amazon EBS 支持的 Windows AMI

Ec2 服务属性

以下过程介绍如何使用 Ec2 Service Properties 对话框来启用或禁用设置。

使用 Ec2 Service Properties 对话框更改设置

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

  2. Start (开始) 菜单中,单击 All Programs (所有程序),然后单击 EC2ConfigService Settings (EC2ConfigService 设置)

  3. Ec2 Service Properties 对话框的 General 标签上,您可以启用或禁用以下设置。

    Set Computer Name

    如果此设置已启用 (默认情况下已启用),则会在每次启动时将主机名与当前内部 IP 地址进行比较;如果主机名和内部 IP 地址不匹配,则重置主机名以包含内部 IP 地址,随后系统重启以接受新主机名。若要设置您自己的主机名或防止修改现有主机名,请不要启用该设置。

    User Data

    执行用户数据让您可以在首次启动期间将脚本插入实例元数据。在实例中,您可以通过 http://169.254.169.254/latest/user-data/ 读取用户数据。实例存在期间脚本保持不变,而且在实例停止和启动时会持久保留直到实例终止。

    如果您使用的是大型脚本,我们建议您使用用户数据来下载该脚本,然后再执行它。

    有关更多信息,请参阅 用户数据执行

    Event Log (事件日志)

    使用此设置可在启动期间在控制台上显示事件日志条目,以便轻松监控和调试。

    单击 Settings (设置),为发送到控制台的日志条目指定筛选条件。默认筛选条件会将来自系统事件日志的最近三个错误条目发送到控制台。

    CloudWatch Logs (CloudWatch 日志)

    从 EC2Config 版本 2.2.5 开始 (建议使用版本 2.2.6 或更高版本),可以将系统日志、安全日志、应用程序日志和 IIS 日志中的所有 Windows Server 消息导出到 CloudWatch Logs,并使用 CloudWatch 指标对它们进行监控。EC2Config 版本 2.2.10 或更高版本添加了将任何事件日志数据、事件跟踪 (Windows) 数据或基于文本的日志文件导出到 CloudWatch Logs 的功能。此外,您还可以将性能计数器数据导出到 CloudWatch。有关更多信息,请参阅 Amazon CloudWatch 用户指南 中的 监控系统、应用程序和自定义日志文件

    1. 选择 Enable CloudWatch integration (启用 CloudWatch 集成),然后单击 OK (确定)

    2. 编辑 \Amazon\Ec2ConfigService\Settings\AWS.EC2.Windows.CloudWatch.json 文件并配置希望发送到 CloudWatch Logs 的日志的类型。有关更多信息,请参阅 向 Amazon CloudWatch 发送日志、事件和性能计数器

    如果您的实例运行的是 EC2Config 4.x 版或更高版本,则此选项不可用。SSM 代理会将日志数据发送到 CloudWatch。有关更多信息,请参阅 使用 EC2Config 4.x 配置 CloudWatch

    Wallpaper Information (壁纸信息)

    使用此设置可在桌面背景中显示系统信息。以下是桌面背景上所显示信息的示例。

    桌面背景上显示的信息受设置文件 EC2ConfigService\Settings\WallpaperSettings.xml 控制。

  4. 单击 Storage 标签。您可以启用或禁用以下设置。

    Root Volume

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

    Initialize Drives

    此设置可格式化并挂载在启动期间附加到实例的所有卷。

    Drive Letter Mapping (驱动器号映射)

    系统会将附加到实例的卷映射到驱动器号。对于 Amazon EBS 卷,默认以从 D: 到 Z: 的顺序分配驱动器盘符。对于实例存储卷,默认设置则取决于驱动器。Citrix 半虚拟化驱动程序以从 Z: 到 A: 的顺序分配实例存储卷驱动器盘符。Red Hat 驱动程序按 D: 到 Z: 的顺序分配实例存储卷驱动器号。

    要为您的卷选择驱动器号,请单击 Mappings (映射)。在 DriveLetterSetting (驱动器盘符设置) 对话框中,为每个卷指定 Volume Name (卷名称)Drive Letter (驱动器盘符) 值,然后单击 OK (确定)。我们建议您选择诸如字母表中间的字母作为驱动器号,以避免与可能在使用的驱动器号发生冲突。

    在指定驱动器号映射并连接与您指定的某个卷名称具有相同标签的卷之后,EC2Config 会自动为该卷分配您指定的驱动器号。然而,如果驱动器号已在使用,则驱动器号映射会失败。请注意,在您指定驱动器号映射之后,EC2Config 不会更改已装载卷的驱动器号。

  5. 要保存您的设置并在稍后继续对其进行处理,请单击 OK (确定) 以关闭 Ec2 Service Properties (Ec2 服务属性) 对话框。如果您已完成实例自定义并要从该实例创建 AMI,请参阅 使用 Sysprep 创建标准 Amazon 系统映像 (AMI)

EC2Config 设置文件

设置文件会控制 EC2Config 服务的操作。这些文件位于 C:\Program Files\Amazon\Ec2ConfigService\Settings 目录下:

  • ActivationSettings.xml – 使用密钥管理服务器 (KMS) 控制产品激活。

  • AWS.EC2.Windows.CloudWatch.json – 控制要发送到 CloudWatch 的性能计数器以及要发送到 CloudWatch Logs 的日志。有关如何更改此文件中的设置的更多信息,请参阅向 Amazon CloudWatch 发送日志、事件和性能计数器

  • BundleConfig.xml - 控制 EC2Config 为 AMI 创建准备实例存储支持的实例的方式。

  • Config.xml - 控制基本设置。

  • DriveLetterConfig.xml - 控制驱动器号映射。

  • EventLogConfig.xml:控制实例启动时控制台上显示的事件日志信息。

  • WallpaperSettings.xml:控制桌面背景上显示的信息。

ActivationSettings.xml

此文件包含用于控制产品激活的设置。当 Windows 启动时,EC2Config 服务会检查是否已激活 Windows。如果尚未激活 Windows,它会通过搜索指定的 KMS 服务器激活 Windows。

  • SetAutodiscover – 指示是否自动检测 KMS。

  • TargetKMSServer – 存储 KMS 的私有 IP 地址。KMS 必须与您的实例位于相同地区。

  • DiscoverFromZone:发现指定 DNS 区域中的 KMS 服务器。

  • ReadFromUserData:发现 UserData 中的 KMS 服务器。

  • LegacySearchZones:发现指定 DNS 区域中的 KMS 服务器。

  • DoActivate – 尝试使用本部分中的指定设置进行激活。该值可以是 truefalse

  • LogResultToConsole:在控制台中显示结果。

BundleConfig.xml

此文件包含用于控制 EC2Config 为 AMI 创建过程准备实例的方式的设置。

  • AutoSysprep – 指明是否自动使用 Sysprep。将值更改为 Yes 可使用 Sysprep。

  • SetRDPCertificate:为远程桌面服务器设置自签名证书。这样一来,您可以将 RDP 安全应用到实例中。如果新实例应该具有该证书,请将该值改为 Yes

    该设置不适用于 Windows Server 2008 或 Windows Server 2012 实例,因为它们会生成自己的证书。

  • SetPasswordAfterSysprep:在新启动的实例上设置随机密码,使用用户启动密钥对其加密并且将该加密密码输出到控制台中。如果新实例不应设置为随机加密密码,请将该设置的值改为 No

Config.xml

插件

  • Ec2SetPassword:在您每次启动实例时生成随机加密密码。默认情况下,首次启动之后该功能会被禁用,因此重新启动该实例并不会更改用户设置的密码。每次您启动实例时,请将该设置改为 Enabled,以继续生成密码。

    如果您计划从自己的实例创建一个 AMI,则该设置非常重要。

  • Ec2SetComputerName – 根据实例的 IP 地址将实例的主机名设置为唯一名称,并且重新启动实例。若要设置您自己的主机名或防止修改您的现有主机名,必须禁用此设置。

  • Ec2InitializeDrives - 在启动期间初始化和格式化所有卷。该功能已默认启用。

  • Ec2EventLog:在控制台中显示事件日志条目。默认情况下,会显示来自系统事件日志的最近三个错误条目。要指定将显示的事件日志条目,请编辑 EventLogConfig.xml 目录中的 EC2ConfigService\Settings 文件。有关该文件中设置的信息,请参阅 MSDN 库中的 Eventlog Key

  • Ec2ConfigureRDP:在实例上设置自签名证书,以便用户可以使用远程桌面安全访问实例。Windows Server 2008 和 Windows Server 2012 实例上已禁用该功能,因为它们可以生成自己的证书。

  • Ec2OutputRDPCert:在控制台中显示远程桌面证书信息,以便用户可以根据指纹对其进行验证。

  • Ec2SetDriveLetter:根据用户定义的设置,设置已装载卷的驱动器号。默认情况下,Amazon EBS 卷挂载到实例之后,系统会根据实例上的驱动器号进行装载。要指定您的驱动器号映射,请编辑 DriveLetterConfig.xml 目录中的 EC2ConfigService\Settings 文件。

  • Ec2WindowsActivate - 该插件处理 Windows 激活。它检查 Windows 是否已激活。如果未激活,则它会更新 KMS 客户端设置,然后激活 Windows。

    要修改 KMS 设置,请编辑 ActivationSettings.xml 目录中的 EC2ConfigService\Settings 文件。

  • Ec2DynamicBootVolumeSize:将磁盘 0/卷 0 扩展到包含所有未分区的空间。

  • Ec2HandleUserData:创建脚本并在运行 Sysprep 后首次启用实例时执行用户创建的脚本。脚本标签包含的命令会保存到批处理文件中,而 PowerShell 标签包含的命令会保存到 .ps1 文件中。

全局设置

  • ManageShutdown – 确保从实例存储支持的 AMI 启动的实例不会在运行 Sysprep 时终止。

  • SetDnsSuffixList – 为 Amazon EC2 设置网络适配器的 DNS 后缀。这允许 Amazon EC2 中运行的服务器的 DNS 解析,无需提供完全限定域名。

  • WaitForMetaDataAvailable – 确保 EC2Config 服务会在继续启动之前等待元数据处于可访问状态并且网络可用。此检查确保了 EC2Config 可以从激活和其他插件的元数据获取信息。

  • ShouldAddRoutes – 已连接多个 NIC 时,向主网适配器添加自定义路由,以启用以下 IP 地址:169.254.169.250、169.254.169.251 和 169.254.169.254。当您访问实例元数据时,Windows Activation 会使用这些地址。

  • RemoveCredentialsfromSyspreponStartup – 在下一次启动服务时从 Sysprep.xml 中删除管理员密码。要确保该密码持久保留,请编辑该设置。

DriveLetterConfig.xml

此文件包含用于控制驱动器号映射的设置。默认情况下,一个卷可映射到任何可用的驱动器号。您可按以下方式将卷装载为特定的驱动器号。

<?xml version="1.0" standalone="yes"?>
<DriveLetterMapping>
  <Mapping>
    <VolumeName></VolumeName>
    <DriveLetter></DriveLetter>
  </Mapping>
  . . .
  <Mapping>
    <VolumeName></VolumeName>
    <DriveLetter></DriveLetter>
  </Mapping>
</DriveLetterMapping>
  • VolumeName:卷标签。例如:My Volume。要为实例存储卷指定映射,请使用标签 Temporary Storage X,其中 X 为 0 到 25 之间的数字。

  • DriveLetter:驱动器号。例如:M:。如果驱动器号已在使用,则映射会失败。

EventLogConfig.xml

此文件包含用于控制实例启动时显示在控制台上的事件日志信息的设置。默认情况下,我们会显示来自系统事件日志的最近三个错误条目。

  • Category:监视器的事件日志密钥。

  • ErrorType – 事件类型 (例如 ErrorWarningInformation。)

  • NumEntries:此类别中所存储事件的数目。

  • LastMessageTime:为防止重复推送相同的消息,服务会在每次推送消息时更新此值。

  • AppName:事件源或记录事件的应用程序。

WallpaperSettings.xml

此文件包含用于控制在桌面背景上显示的信息的设置。默认情况下显示以下信息。

  • Hostname – 显示计算机名称。

  • Instance ID:显示实例的 ID。

  • Public IP Address:显示实例的公有 IP 地址。

  • Private IP Address:显示实例的私有 IP 地址。

  • Availability Zone:显示实例在其中运行的可用区。

  • Instance Size:显示实例的类型。

  • Architecture - 显示 PROCESSOR_ARCHITECTURE 环境变量的设置。

您可以通过删除条目删除默认显示的任何信息。您可以按如下所示添加其他要显示的实例元数据。

<WallpaperInformation>
  <name>display_name</name>
  <source>metadata</source>
  <identifier>meta-data/path</identifier>
</WallpaperInformation>

您可以按如下所示添加其他要显示的系统环境变量。

<WallpaperInformation>
  <name>display_name</name>
  <source>EnvironmentVariable</source>
  <identifier>variable-name</identifier>
</WallpaperInformation>

InitializeDrivesSettings.xml

此文件包含控制 EC2Config 如何初始化驱动器的设置。

默认情况下,EC2Config 用操作系统初始化未联机的驱动器。您可以自定义插件,如下所示。

Copy
<InitializeDrivesSettings> <SettingsGroup>setting</SettingsGroup> </InitializeDrivesSettings>

使用设置组指定要如何初始化驱动器:

FormatWithTRIM

在驱动器格式化时启用 TRIM 命令。在驱动器格式化和初始化后,系统还原 TRIM 配置。

从 EC2Config 版本 3.18 开始,在磁盘格式化操作过程中默认禁用 TRIM 命令。这将缩短格式化时间。对于 EC2Config 版本 3.18 及更高版本,在磁盘格式化操作期间使用此设置启用 TRIM。

FormatWithoutTRIM

在格式化驱动器时禁用 TRIM 命令并在 Windows 中改进格式化时间。在驱动器格式化和初始化后,系统还原 TRIM 配置。

DisableInitializeDrives

对新驱动器禁用格式化。使用此设置可手动初始化驱动器。

配置 EC2Config 服务的代理设置

您可以使用下列方法之一将 EC2Config 服务配置为通过协议进行通信:适用于 .NET 的 AWS 开发工具包、system.net 元素或 Microsoft 组策略和 Internet Explorer。使用适用于 .NET 的 AWS 开发工具包时可以指定用户名称和密码,因此,请优先使用此方法。

使用适用于 .NET 的 AWS 开发工具包配置代理设置 (首选方法)

您可以通过在 Ec2Config.exe.config 文件中指定 proxy 元素来配置 EC2Config 服务的代理设置。有关更多信息,请参阅适用于 .NET 的 AWS 开发工具包的配置文件参考

在 Ec2Config.exe.config 文件中指定代理元素

  1. 在需要 EC2Config 服务通过代理进行通信的实例上编辑 Ec2Config.exe.config 文件。默认情况下,该文件位于以下目录中:%ProgramFiles%\Amazon\Ec2ConfigService

  2. 将以下 aws 元素添加到 configSections。不要将此添加到任何现有 sectionGroups 中。

    适用于 EC2Config 3.17 版本或更早版本

    <configSections>
       <section name="aws" type="Amazon.AWSSection, AWSSDK"/>
    </configSections>

    适用于 EC2Config 3.18 版本或更新版本

    <configSections>
         <section name="aws" type="Amazon.AWSSection, AWSSDK.Core"/>
    </configSections>
    
  3. Ec2Config.exe.config 文件中添加下面的 aws 元素。

    <aws>
       <proxy
         host="string value"
         port="string value"
         username="string value"
         password="string value" />
    </aws>
  4. 保存您的更改。

使用 system.net 元素配置代理设置

您可以在 Ec2Config.exe.config 文件的 system.net 元素中指定代理设置。有关更多信息,请参阅 MSDN 上的 defaultProxy 元素 (网络设置)

在 Ec2Config.exe.config 文件中指定 system.net 元素

  1. 在需要 EC2Config 服务通过代理进行通信的实例上编辑 Ec2Config.exe.config 文件。默认情况下,该文件位于以下目录中:%ProgramFiles%\Amazon\Ec2ConfigService

  2. defaultProxy 条目添加 system.net 中。有关更多信息,请参阅 MSDN 上的 defaultProxy 元素 (网络设置)

    例如,下面的配置将路由所有流量并使用当前为 Internet Explorer 配置的代理,但元数据和授权流量除外 (这两者将绕过该代理)。

    <defaultProxy>
        <proxy usesystemdefault="true" />
        <bypasslist>
            <add address="169.254.169.250" />
            <add address="169.254.169.251" />
            <add address="169.254.169.254" />
        </bypasslist>
    </defaultProxy>
  3. 保存您的更改。

使用 Microsoft 组策略及 Microsoft Internet Explorer 配置代理设置

EC2Config 服务以本地系统用户账户运行。更改实例上的组策略设置后,您可以在 Internet Explorer 中为此账户指定实例级代理设置。

使用组策略及 Internet Explorer 配置代理设置

  1. 在需要 EC2Config 服务通过代理进行通信的实例上,以管理员身份打开命令提示符,键入 gpedit.msc,然后按 Enter。

  2. 在本地组策略编辑器中,依次选择本地计算机策略下的计算机配置管理模板Windows 组件Internet Explorer

  3. 在右侧窗格中,选择按计算机进行代理服务器设置(不是按用户),然后选择编辑策略设置

  4. 选择启用,然后选择应用

  5. 打开 Internet Explorer,然后选择工具按钮。

  6. 选择 Internet 选项,然后选择连接选项卡。

  7. 选择局域网设置

  8. 代理服务器下,选择为 LAN 使用代理服务器选项。

  9. 指定地址和端口信息,然后选择确定