Quero executar uma instância de imagem de máquina da Amazon (AMI) para Windows no AWS CodeDeploy. No entanto, recebo o seguinte erro no arquivo de log do agente do AWS CodeDeploy: “Serviço do agente da instância do CodeDeploy: erro durante inicialização ou execução: Net::OpenTimeout - o tempo limite da execução expirou - C:/Windows/TEMP/ocrFxxx.tmp/lib/ruby/2.3.0/net/http.rb:880:em ‘initialize’”.
Breve descrição
Para instâncias da AMI do Windows Server 2016 fornecida pela AWS, o EC2Launch define estatisticamente os metadados ou as rotas do AWS Key Management Service (AWS KMS) na primeira inicialização. Se você criar uma AMI personalizada a partir dessas instâncias, as rotas serão capturadas como parte da configuração do sistema operacional. Todas as novas instâncias que você executar a partir da AMI reterão as mesmas rotas, não importa o posicionamento da sub‑rede.
Essas rotas estáticas não são atualizadas quando você executa uma instância a partir de uma AMI personalizada, a não ser que uma das afirmações a seguir seja verdadeira:
- Você usa o Sysprep para sua AMI personalizada.
- Você programa as tarefas de inicialização do Amazon Elastic Compute Cloud (Amazon EC2) antes de criar a AMI.
Ao executar uma instância a partir de uma AMI personalizada em uma Amazon Virtual Private Cloud (Amazon VPC), sub‑rede ou bloco CIDR diferente, os seguintes problemas ocorrem:
- As rotas configuradas não são mais válidas.
- A instância não consegue acessar o serviço de metadados ou os servidores do AWS KMS necessários para a ativação.
Resolução
1. Crie uma AMI personalizada no Windows.
2. Use a AMI personalizada criada na etapa 1 para executar uma nova instância.
Importante: Se você já estiver usando o Sysprep, use-o depois de executar a nova instância.
3. Conecte-se à instância do Windows.
4. Faça login no Windows PowerShell como administrador.
5. No PowerShell, navegue até C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts. Em seguida, digite o comando a seguir:
.\InitializeInstance.ps1 -Schedule
6. Pressione Enter.
7. Encerre a instância criada na etapa 3. Em seguida, crie uma nova AMI a partir da instância que você encerrou.
8. Use a nova AMI para executar a instância no CodeDeploy.