CodeDeploy の「Net::OpenTimeout」エラーの解決方法を教えてください。

最終更新日: 2020 年 4 月 7 日

Windows Amazon マシンイメージ (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 からインスタンスを起動すると、メタデータまたは AWS Key Management Service (AWS KMS) ルートは初回起動時に静的に設定されます。このようなインスタンスからカスタム AMI を作成する場合、これらのルートは OS 設定の一部としてキャプチャされます。AMI から起動する新しいインスタンスは、サブネットの配置に関係なく、同じルートを保持します。これらのルートは、以下のいずれかに該当しない限り、カスタム AMI から起動するときに更新されません。

  • カスタム AMI に Sysprep を使用しています。
  • Amazon Elastic Compute Cloud (Amazon EC2) の起動初期化タスクは、AMI を作成する前にスケジュールされていました。

このような AMI から別の Amazon Virtual Private Cloud (Amazon VPC)、サブネット、または CIDR ブロックに EC2 インスタンスを起動する場合、次のようになります。

  • 設定されたルートは無効です。
  • インスタンスは、インスタンスのアクティベーションに必要なメタデータサービスまたは AWS KMS サーバーにアクセスできません。

解決方法

1.    Windows でカスタム AMI を作成します

2.    ステップ 1 で作成したカスタム AMI を使用して、新しいインスタンスを起動します

重要: Sysprep を使用している場合は、新しいインスタンスの起動後に Sysprep を使用します。

3.    起動したインスタンスに接続します

4.    管理者として Windows PowerShell にログインします。

5.    PowerShell で、C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts に移動し、次のように入力します。

.\InitializeInstance.ps1 -Schedule

6.    Enter キーを押します。

7.    ステップ 3 で作成したインスタンスをシャットダウンし、シャットダウンしたインスタンスから新しいインスタンスを作成します。

8.    新しい AMI を使用して CodeDeploy でインスタンスを起動します。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合