How do I run a command on an existing EC2 Windows instance when I reboot or start the instance?

上次更新时间:2019 年 10 月 18 日

我想在重启或启动实例时在现有的 Amazon Elastic Compute Cloud (Amazon EC2) Windows 实例上运行自定义脚本。该如何操作? 

简短描述

您可以通过将实例添加到用户数据,运行在重启或启动实例后执行的脚本。用户数据由 EC2Config(Windows Server 2012 R2 及更早版本)或 EC2Launch(Windows Server 2016 及更高版本)处理。

解决方法

在将脚本添加到用户数据时,必须将其括在特殊标签中。此标签用于确定命令是在命令提示符窗口中运行还是在 Windows PowerShell 中运行。有关更多信息,请参阅启动时在 Windows 实例上运行命令

如果实例正在运行,则不能添加或更改用户数据,但您可以查看用户数据。要添加或更改用户数据,实例必须处于已停止状态。重启或启动实例时不会自动执行用户数据脚本。您可以在下次或每次重启或启动实例时启用用户数据执行操作。

警告:停止实例之前,您需要注意以下事项:

  • 如果您没有使用弹性 IP 地址,则当您停止实例时,将会释放公有 IP 地址。
  • 如果此实例具有实例存储卷,当实例停止时,实例上的任何数据都将丢失。
  • 如果实例关闭行为设置为终止,则实例停止时将会终止。
  • 如果实例属于 Auto Scaling 组,首先从 Auto Scaling 组分离该实例。在您停止并启动实例后,重新将该实例附加到 Auto Scaling 组。
    有关更多信息,请参阅停止和启动您的实例

1.    连接到 EC2 Windows 实例

2.    对于 Windows Server 2016 或更高版本,请打开 Windows PowerShell 命令窗口,然后运行以下命令:

C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 –Schedule

对于 Windows Server 2012 R2 或更早版本,请打开 C:\Program Files\Amazon\Ec2ConfigService\Ec2ConfigServiceSetting.exe

然后,对于用户数据,选择启用用户数据执行,以便下次启动服务

3.    从 Amazon EC2 控制台停止实例。

4.    选择该实例。对于操作,选择实例设置查看/更改用户数据

5.    添加或更新用户数据,然后选择保存
注意:要在每次重启或启动实例时执行用户数据脚本,请添加以下内容:

<persist>true</persist>

6.    启动实例。用户数据脚本作为实例启动进程的一部分执行。

对于其他问题排查,EC2Launch 和 EC2Config 日志文件包含标准输出和标准错误流的输出。日志文件的位置如下:

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

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助吗?