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?)