如何在重启或启动实例时在现有 EC2 Windows 实例上运行命令?

1 分钟阅读
0

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

简短描述

向用户数据添加脚本,然后将其配置为在实例重启后或在实例启动时运行。EC2Config(Windows Server 2012 R2 及更早版本)、EC2Launch(Windows Server 2016 和 2019)或 EC2LaunchV2(Windows Server 2022)会处理用户数据。

解决方法

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

当实例正在运行时,您无法添加或更改用户数据,但可以查看这些数据。要添加或更改用户数据,实例必须处于已停止状态。当您重启或启动实例时,用户数据脚本不会自动运行。您可以将用户数据配置为在下次或每次重启或启动实例时运行。

重要事项

  • 如果您未使用弹性 IP 地址,那么在您停止实例时,系统会释放公有 IP 地址。
  • 如果该实例有实例存储卷,那么当停止该实例时,其中的所有数据都将丢失。
  • 如果将实例关闭行为设置为终止,则该实例会在停止时终止。
  • 如果该实例属于自动扩缩组,则先将其与自动扩缩组分离。然后,在停止并启动该实例后,将该实例再次附加到自动扩缩组。有关详细信息,请参阅停止和启动您的实例

1.    连接到您的 EC2 Windows 实例

2.    对于 Windows Server 2012 R2 或更早版本,请打开 C:\Program Files\Amazon\Ec2ConfigService\Ec2ConfigServiceSetting.exe。然后,对于用户数据,选择下次启动服务时启用 UserData 执行
注意:上述命令会在每次重启时更改实例的本地管理员密码。如果您使用选择了无密钥对选项的 AMI,则在重启时可能会无法访问您的实例。

对于 Windows Server 2016 和 2019,请打开 Windows PowerShell 命令窗口,然后运行以下命令:

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

对于 Windows Server 2022,将 UserData 作为脚本运行,并将频率设置为每次启动始终运行。有关详细信息,请参阅 executeScripts,了解语法和示例。

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

4.    选择实例并选择操作。然后,选择实例设置,再选择编辑用户数据

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

<persist>true</persist>

6.    启动实例。在实例启动过程中运行用户数据脚本。
对于其他故障排除,EC2Config、EC2Launch 和 EC2LaunchV2 日志文件包含标准输出和标准错误流的输出。日志文件位于以下位置:

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

相关信息

如何在启动时在新的 EC2 Windows 实例上运行命令?

AWS 官方
AWS 官方已更新 10 个月前