如何解决 CodeDeploy 中的“Net::OpenTimeout”错误?

1 分钟阅读
0

我正在尝试在 AWS CodeDeploy 中启动一个 Windows Amazon Machine Image (AMI) 实例。当我尝试启动该实例时,我的 AWS CodeDeploy 代理日志文件中收到类似以下内容的错误:“CodeDeploy 实例代理服务:在启动或运行期间发生错误: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 启动实例而言,元数据或 AWS Key Management Service (AWS KMS) 路由在第一次启动时进行静态设置。如果您从此类实例中创建自定义 AMI,将作为操作系统配置的一部分来捕获这些路由。您从 AMI 启动的任何新实例将保留相同的路由,无论子网置放如何。

从自定义 AMI 启动时,不会更新这些静态路由,除非下面的其中一项为真:

  • 您在将 Sysprep 用于您的自定义 AMI。
  • Amazon Elastic Compute Cloud (Amazon EC2) 会启动在您创建 AMI 之前计划的初始化任务。

如果您从此类 AMI 将 EC2 实例启动到另一个 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 中创建的实例。然后,从您关闭的实例创建一个新实例

8.    使用新的 AMI 在 CodeDeploy 中启动实例。


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