Amazon Elastic Compute Cloud
Windows 实例用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

为 Windows 实例设置时间

对于许多服务器任务和进程来说,准确一致的时间参考是非常重要的。大多数系统日志包含时间戳,您可以用来确定问题发生的时间以及事件发生的顺序。如果您使用 AWS CLI 或 AWS 开发工具包从您的实例发送请求,这些工具会以您的名义签署请求。如果您的实例的日期和时间设置不正确,签名中的日期可能与请求的日期不匹配,进而导致 AWS 拒绝请求。建议对 Windows 实例使用协调世界时 (UTC)。不过,如果需要,可以使用其他时区。

更改时区

默认情况下,Windows 实例设置为 UTC 时区。您可以更改时间以符合本地时区或您的网络中其他部分的时区。

更改实例上的时区

  1. 从实例打开命令提示符窗口。

  2. 确定将在实例上使用的时区。要获取时区的列表,请使用以下命令:tzutil /l。该命令用以下格式返回所有可用时区的列表:

    display name time zone ID
  3. 查找要分配给该实例的时区 ID。

  4. 使用以下命令将时区分配给实例:

    tzutil /s "Pacific Standard Time"

    新时区应立即生效。

配置网络时间协议 (NTP)

Windows 实例使用 time.windows.com NTP 服务器配置系统时间。我们建议您配置实例以使用 Amazon Time Sync Service。该服务在每个 AWS 区域中使用一组与卫星连接的原子参考时钟,以提供准确的当前协调世界时 (UTC) 全球标准时间读数。Amazon Time Sync Service 自动消除在 UTC 中添加的任何闰秒。该服务是在 169.254.169.123 IP 地址中为 VPC 中运行的任何实例提供的,您的实例无需访问 Internet 即可使用该服务。

验证 NTP 配置

  1. 从实例打开命令提示符窗口。

  2. 通过键入以下命令获取当前 NTP 配置:

    w32tm /query /configuration

    该命令返回 Windows 实例的当前配置设置。

  3. (可选) 通过键入以下命令获取当前配置的状态:

    w32tm /query /status

    该命令返回实例与 NTP 服务器同步的最后时间和轮询间隔等信息。

更改 NTP 服务器以使用 Amazon Time Sync Service

  1. 从命令提示符窗口运行以下命令:

    w32tm /config /manualpeerlist:169.254.169.123 /syncfromflags:manual /update
  2. 使用以下命令验证新设置:

    w32tm /query /configuration

    在返回的输出中,确认 NtpServer 显示 169.254.169.123 IP 地址。

如果需要,您可以更改实例以使用一组不同的 NTP 服务器。例如,如果您的 Windows 实例无法访问 Internet,您可以将其配置为使用位于您的私有网络中的 NTP 服务器。您的实例的安全组必须允许端口 123 (NTP) 上的出站 UDP 流量。

更改 NTP 服务器

  1. 从命令提示符窗口运行以下命令:

    w32tm /config /manualpeerlist:comma-delimited list of NTP servers /syncfromflags:manual /update

    其中,comma-delimited list of NTP servers 是所使用的实例的 NTP 服务器列表。

  2. 使用以下命令验证新设置:

    w32tm /query /configuration

配置 Windows Server 2008 及更高版本的时间设置

在更改 Windows 实例上的时间时,必须确保该时间在系统重新启动后仍然保留。否则,当实例重新启动时,它会恢复使用 UTC 时间。对于 Windows Server 2008 及更高版本,可通过添加 RealTimeIsUniversal 注册表项来保留时间设置。

设置 RealTimeIsUniversal 注册表项

  1. 从实例打开命令提示符窗口。

  2. 使用以下命令添加注册表项:

    reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f
  3. 如果您使用的是在 2013 年 2 月 22 日之前创建的 Windows Server 2008 AMI (不是 Windows Server 2008 R2),则应验证是否安装了 Microsoft 修补程序 KB2800213。如果未安装该修补程序,请将其安装。该修补程序解决了一个已知问题,即 RealTimeIsUniversal 项会造成 Windows CPU 在夏令时期间以及在每个日历年开始时 (1 月 1 日) 在 100% 负荷下运行。

    如果使用的是运行 Windows Server 2008 R2 (不是 Windows Server 2008) 的 AMI,则必须验证是否安装了 Microsoft 修补程序 KB2922223。如果未安装该修补程序,请将其安装。该修补程序解决了一个已知问题,即 RealTimeIsUniversal 项阻止系统更新 CMOS 时钟。

  4. (可选) 验证该实例是否使用以下命令成功保存了该注册表项:

    reg query "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /s

    该命令返回 TimeZoneInformation 注册表项的子项。列表底部应具有 RealTimeIsUniversal 项,与下面类似:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation Bias REG_DWORD 0x1e0 DaylightBias REG_DWORD 0xffffffc4 DaylightName REG_SZ @tzres.dll,-211 DaylightStart REG_BINARY 00000300020002000000000000000000 StandardBias REG_DWORD 0x0 StandardName REG_SZ @tzres.dll,-212 StandardStart REG_BINARY 00000B00010002000000000000000000 TimeZoneKeyName REG_SZ Pacific Standard Time DynamicDaylightTimeDisabled REG_DWORD 0x0 ActiveTimeBias REG_DWORD 0x1a4 RealTimeIsUniversal REG_DWORD 0x1

有关 Windows 操作系统如何协调和管理时间 (包括闰秒的添加) 的更多信息,请参阅以下文档: