設定 Windows 執行個體的時間 - Amazon Elastic Compute Cloud

設定 Windows 執行個體的時間

對許多伺服器任務和程序而言,一致且精準的時間參考很重要。大部分系統日誌包含的時間戳記可用來判斷問題發生在何時,以及事件發生的順序。如果您使用 AWS CLI 或 AWS 開發套件從您的執行個體提出請求,這些工具會代您簽署請求。如果您執行個體的日期和時間未正確設定,簽章中的日期可能與請求的日期不符,AWS 會拒絕該請求。

Amazon 提供 Amazon Time Sync Service,該服務可從所有 EC2 執行個體存取,且同時由其他 AWS 服務使用。此服務使用衛星連線的佇列和每個區域的原子參考時鐘,透過網路時間協定 (NTP) 提供精準的國際標準時間 (UTC) 全球標準目前時間讀數。Amazon Time Sync Service 會自動消除新增至 UTC 的任何閏秒。

任何在 VPC 中執行的執行個體均可透過 NTP 在 169.254.169.123 IPv4 地址或 fd00:ec2::123 IPv6 地址取得 Amazon Time Sync Service。您的執行個體不必存取網際網路,您也不必設定安全群組規則或網路 ACL 規則允許存取。最新版的 AWS Windows AMI 預設會與 Amazon Time Sync Service 同步。

注意

本節中的範例使用 Amazon Time Sync Service 的 IPv4 地址:169.254.169.123。如果您要透過 IPv6 地址擷取 EC2 執行個體的時間,請確定您改用 IPv6 地址:fd00:ec2::123。IPv6 地址只能在 建置在 Nitro 系統上的執行個體 上存取。

我的執行個體是否應使用 UTC?

我們建議您的執行個體使用國際標準時間 (UTC),以避免人為錯誤,以及促進跨 CloudWatch Logs、指標、本機日誌和其他服務進行同步。不過,您可以選擇使用不同的時區,以便更符合您的需求。

當您使用本機時區而非 UTC 時,請確定您在自動化、程式碼、排程的任務、疑難排解活動 (關聯日誌) 及其他事項考慮了夏令時 (如適用) 等方面的情況。

透過命令提示,使用下列程序在您的執行個體上設定 Amazon Time Sync Service。或者,您也可以使用外部 NTP 來源。如需 NTP 和公有時間來源的詳細資訊,請參閱 http://www.ntp.org/。執行個體必須存取網際網路才能讓外部 NTP 時間來源運作。

若為 Linux 執行個體,請參閱設定 Linux 執行個體的時間

變更時區

Windows 執行個體預設為 UTC 時區。您可以變更時間以對應至您當地的時區或網路另一個部分的時區。

變更執行個體的時區

  1. 從執行個體中,開啟命令提示視窗。

  2. 找出執行個體使用的時區。若要取得時區清單,請使用下列命令:

    tzutil /l

    此命令會傳回所有可用時區清單,格式如下:

    display name time zone ID
  3. 找出要指派給執行個體的時區 ID。

  4. 使用下列命令指派替換時區:

    tzutil /s "Pacific Standard Time"

    新的時區應該會立即生效。

注意

您可以使用下列命令來指派建議的 UTC 時區:

tzutil /s "UTC"

設定網路時間通訊協定 (NTP)

Amazon 提供 Amazon Time Sync Service,該服務可從所有 EC2 執行個體存取,且同時由其他 AWS 服務使用。建議您設定執行個體使用 Amazon Time Sync Service。此服務在每個 AWS 區域使用一組與衛星連線的原子參考時鐘,提供對國際標準時間 (UTC) 全球標準最新的精準時間讀數。Amazon Time Sync Service 會自動消除新增至 UTC 的任何閏秒。此服務提供於任何在 VPC 中執行之執行個體的 169.254.169.123 IPv4 地址或 fd00:ec2::123 IPv6 地址,且您的執行個體不需要網際網路存取即可使用此服務。從 2018 年 8 月版本開始,Windows AMI 預設會使用 Amazon Time Sync Service。

確認 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 執行個體沒有網際網路存取,即可設定執行個體使用您私有網路內的 NTP 伺服器。如果您的執行個體在網域內,您應該變更設定來使用網域控制器作為時間來源,以避免時間偏移。執行個體的安全群組必須設定成允許連接埠 123 (NTP) 上的出站 UDP 流量。

變更 NTP 伺服器

  1. 從命令提示視窗,執行下列命令:

    w32tm /config /manualpeerlist:"NTP servers" /syncfromflags:manual /update

    其中 NTP servers (NTP 伺服器) 是一種為供執行個體使用的 NTP 伺服器空格區隔清單。

  2. 使用下列命令,確認新設定:

    w32tm /query /configuration

Amazon Windows AMI 的預設網路時間通訊協定 (NTP) 設定

Amazon Machine Images (AMIs) 通常依循立即可用的預設值,但需要變更才能在 EC2 基礎設施上運作的狀況除外。下列設定已確認在虛擬化環境中運作良好,以及可將任何時鐘漂移保持在一秒的準確度內:

  • 更新間隔 – 控管時間服務將調整系統時間以達準確的頻率。AWS 會將更新間隔設定為每兩分鐘發生一次。

  • NTP 伺服器 – 從 2018 年 8 月發行開始,AMI 現在預設會使用 Amazon Time Sync Service。可從 169.254.169.123 端點中的任何 EC2 區域存取此時間服務。此外,0x9 標記表示時間服務正作為用戶端,並使用 SpecialPollInterval 來判定以設定的時間伺服器進行查入的頻率。

  • 類型 – “NTP” 表示服務將充當獨立式 NTP 用戶端,而不是充當網域的一部分。

  • Enabled 和 InputProvider – 時間服務已啟用,並提供時間給作業系統。

  • 特殊輪詢間隔 – 每 900 秒或 15 分鐘檢查已設定的 NTP 伺服器。

登錄路徑 鍵值名稱 資料

HKLM:\System\CurrentControlSet\services\w32time\Config

UpdateInterval

120

HKLM:\System\CurrentControlSet\services\w32time\Parameters

NtpServer

169.254.169.123,0x9

HKLM:\System\CurrentControlSet\services\w32time\Parameters

類型

NTP

HKLM:\System\CurrentControlSet\services\w32time\TimeProviders\NtpClient

Enabled

1

HKLM:\System\CurrentControlSet\services\w32time\TimeProviders\NtpClient

InputProvider

1

HKLM:\System\CurrentControlSet\services\w32time\TimeProviders\NtpClient

SpecialPollInterval

900

設定 Windows Server 2008 和更新版本的時間設定

當您變更 Windows 執行個體上的時間時,必須確定在系統重新啟動之後仍然會持續保留時間。否則,執行個體重新啟動時,會回復成使用 UTC 時間。對於 Windows Server 2008 和更新版本,您可以新增 RealTimeIsUniversal 登錄機碼來持續保留時間設定。依預設,此機碼會在所有最新一代的執行個體上設定。若要確認是否已設定 RealTimeIsUniversal 登錄機碼,請參閱下列程序中的步驟 4。如果未設定機碼,請從頭開始執行下列步驟。

設定 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),我們建議更新至最新的 AWS Windows AMI。如果您使用的是執行 Windows Server 2008 R2 (「不是」 Windows Server 2008) 的 AMI,您必須確認 Microsoft Hotfix KB2922223 已確實安裝。如果未安裝此 Hotfix,建議您更新為最新的 AWS Windows AMI。

  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 作業系統如何協調和管理時間 (包括新增閏秒) 的詳細資訊,請參閱下列文件: