如何解決 CodeDeploy 中的 "Net::OpenTimeout" 錯誤?

1 分的閱讀內容
0

我想在 AWS CodeDeploy 中啟動 Windows Amazon Machine Image (AMI) 執行個體。但是,我在 AWS CodeDeploy 代理程式日誌檔中收到下列錯誤: "CodeDeploy Instance Agent Service: error during start or run: Net::OpenTimeout - execution expired - C:/Windows/TEMP/ocrFxxx.tmp/lib/ruby/2.3.0/net/http.rb:880:in 'initialize'"。

簡短描述

對於 AWS 提供的 Windows Server 2016 AMI 執行個體,EC2Launch 會在第一次開機時以統計方式設定中繼資料或 AWS Key Management Service (KMS) 路由。如果您從這些執行個體建立自訂 AMI,則會擷取路由作為作業系統組態的一部分。無論子網路位置為何,您從 AMI 啟動的任何新執行個體都會保留相同的路由。

從自訂 AMI 啟動時,除非下列其中一個組態成立,否則這些靜態路由不會更新:

  • 對自訂 AMI 使用 Sysprep。
  • 在建立 AMI 之前排程 Amazon Elastic Compute Cloud (Amazon EC2) 啟動初始化任務。

從自訂 AMI 啟動到不同的 Amazon Virtual Private Cloud (Amazon VPC)、子網路或 CIDR 區塊時,會發生下列問題:

  • 設定的路由不再有效。
  • 執行個體無法連線到執行個體啟用所需的中繼資料服務或 AWS KMS 伺服器。

解決方法

1.    在 Windows 中建立自訂 AMI

2.    使用在步驟 1 中建立的自訂 AMI 來啟動新執行個體

**重要事項:**如果您使用的是 Sysprep,請在啟動新執行個體之後使用 Sysprep。

3.    連線至已啟動的 Windows 執行個體

4.    以管理員身分登入 Windows PowerShell。

5.    在 PowerShell 中,導覽至 C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts。然後,輸入以下命令:

.\InitializeInstance.ps1 -Schedule

6.    按 Enter

7.    終止在步驟 3 中建立的執行個體。然後,從終止的執行個體建立新 AMI

8.    使用新的 AMI 在 CodeDeploy 中啟動執行個體。


AWS 官方
AWS 官方已更新 1 年前