Ir para o conteúdo

Como executar um comando em uma instância do Windows existente do Amazon EC2 ao reinicializar ou iniciar a instância?

5 minuto de leitura
0

Quero executar um script personalizado na minha instância do Windows existente do Amazon Elastic Compute Cloud (Amazon EC2) ao reinicializar ou iniciar a instância.

Breve descrição

Para executar um comando ao iniciar ou reinicializar sua instância do EC2, configure um script de dados do usuário para ser executado ao reinicializar ou iniciar a instância.

Com base em seu sistema operacional (SO), sua configuração usa os seguintes agentes para processar dados do usuário:

  • O Windows Server 2012 R2 e versões anteriores usam o EC2Config.
  • O Windows Server 2016 e 2019 usam o EC2Launch.
  • O Windows Server 2022 e 2025 usam o EC2Launch v2.

Observação: para atualizar os dados do usuário da sua instância com o console do Amazon EC2, você deve interromper a instância. No entanto, no EC2Launch v2, é possível usar um script YAML para atualizar a instância sem interrupção e execução.

Resolução

(Somente EC2Launch v2) Use um script YAML para atualizar sua instância sem interrupção e execução

Use o Remote Desktop Protocol (RDP) para se conectar à sua instância do Windows.

Para executar o script a cada reinicialização, atualize o arquivo agent-config.yml. Adicione a tarefa executeScript a stage: postReady e defina frequency como always.

Exemplo de arquivo YAML:

version: "1.0"
config:
  - stage: boot
    tasks:
      - task: extendRootPartition
  - stage: preReady
    tasks:
      - task: activateWindows
        inputs:
          activation:
            type: amazon
      - task: setDnsSuffix
        inputs:
          suffixes:
            - $REGION.ec2-utilities.amazonaws.com
      - task: setAdminAccount
        inputs:
          password:
            type: random
      - task: setWallpaper
        inputs:
          attributes:
            - hostName
            - instanceId
            - privateIpAddress
            - publicIpAddress
            - ipv6Address
            - instanceSize
            - availabilityZone
            - architecture
          path: C:\Windows\Web\Wallpaper\Windows\img0.jpg
  - stage: postReady
    tasks:
      - task: startSsm
      - task: executeScript
        inputs:
          - frequency: always
            type: powershell
            runAs: localSystem
            content: |-
                New-Item -Path 'C:\PowerShellTest.txt' -ItemType File

Para executar o script somente na próxima reinicialização da instância, abra C:\ProgramData\Amazon\EC2Launch\state e exclua o arquivo .run-once. Atualize o arquivo agent-config.yml para adicionar a tarefa executeScript a stage: postReady e defina frequency como once.

Importante: quando você exclui o arquivo .run-once, a senha do administrador local da instância é alterada na reinicialização. Se você executou a instância sem um par de chaves ou perdeu o par de chaves, pode perder o acesso à sua instância ao reiniciar.

Para obter mais informações sobre a sintaxe do comando, consulte Sintaxe para scripts de configuração YAML.

Configure sua instância para interrupção e execução

Observação: quando você interrompe e executa uma instância, o endereço IP público dela muda. É uma prática recomendada usar um endereço IP elástico para rotear tráfego externo para a sua instância em vez de um endereço IP público. Se você usa o Amazon Route 53, talvez seja necessário atualizar os registros DNS do Route 53 quando o endereço IP público mudar. Uma interrupção e execução é diferente de uma reinicialização de instância. Para obter mais informações, consulte Como funciona a inicialização e a interrupção de uma instância do EC2.

Antes de interromper e executar sua instância, realize as seguintes ações:

Atualize os dados de usuário da sua instância

Adicione seus comandos como um script aos dados do usuário em sua instância. Para obter mais informações sobre como configurar o script para ser executado em cada reinicialização, consulte Executar scripts durante inícios ou reinicializações subsequentes.

Observação: para executar o script em cada execução ou reinicialização do EC2Launch v2, adicione um script YAML como a tarefa executeScript ou um script XML. No YAML, defina frequency como always e, em scripts XML, adicione a tag <persist>true</persist>. Em todos os agentes, inclua os dados do usuário em uma tag que define se o comando é executado no prompt de comando ou no Windows PowerShell. Para obter mais informações sobre a sintaxe de comando, consulte Sintaxe para scripts do Windows PowerShell.

Solucione problemas

Para solucionar problemas, verifique a saída padrão e os fluxos de erro padrão nos arquivos de log EC2Config, EC2Launch ou EC2Launch v2.

Para encontrar os arquivos de log, verifique os seguintes locais:

  • No EC2Config, verifique C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2Config.log.
  • No EC2Launch, verifique C:\ProgramData\Amazon\EC2-Windows\Launch\Log\UserdataExecution.log.
  • No EC2Launch v2, verifique C:\ProgramData\Amazon\EC2Launch\log\agent.log.

Informações relacionadas

How do I run a command on a new Amazon EC2 Windows instance at launch? (Como executar um comando na execução de uma nova instância do Windows do EC2?)

AWS OFICIALAtualizada há 7 meses