You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows EC2实例上运行启动脚本?重启停止实例是否触发执行?

在Windows EC2实例上配置启动脚本 & 启动场景的疑问解答

嘿,刚好在Windows EC2上折腾过启动脚本的配置,结合你的需求(Lambda启动停止实例时脚本都能运行)给你唠唠清楚~

一、Windows EC2启动脚本的两种靠谱配置方式

和Linux的用户数据逻辑略有不同,Windows主要靠这两种方式实现启动时自动运行脚本:

1. 用EC2用户数据(UserData)配置

Windows实例默认用EC2Launch v2服务处理用户数据,你可以把PowerShell/CMD脚本包裹在特定标签里,让实例启动时执行。

举个PowerShell的示例(比如记录启动时间):

<powershell>
# 写你的启动逻辑,这里是生成启动日志
$logFile = "C:\EC2_Startup_Log.txt"
"实例启动时间: $(Get-Date)" | Out-File -Path $logFile -Append

# 关键:修改EC2Launch配置,让用户数据每次启动都执行(默认仅首次启动)
$configPath = "C:\ProgramData\Amazon\EC2Launch\config\launchconfig.json"
$config = Get-Content $configPath | ConvertFrom-Json
$config.UserData.RunOnce = $false
$config | ConvertTo-Json | Set-Content $configPath
</powershell>
  • 配置方式:创建实例时直接粘贴这段用户数据,或者在实例停止状态下通过EC2控制台/CLI修改用户数据,下次启动就会生效。
  • 为什么要加修改配置的命令?因为EC2Launch v2默认只让用户数据跑一次,改成RunOnce = false后,每次从停止状态启动都会执行脚本,完美匹配你的需求。

2. 用Windows任务计划程序配置

这种方式更稳定灵活,完全脱离EC2服务的限制,适合需要100%每次启动都触发的场景:

  • 登录Windows实例,打开「任务计划程序」,创建新任务:
    • 触发器:选「当计算机启动时」
    • 操作:选「启动程序」,可以指定PowerShell脚本(比如powershell.exe -File C:\Scripts\startup.ps1)、CMD命令或者可执行文件
    • 条件:勾选「唤醒计算机运行此任务」(确保停止后启动也能触发)
    • 设置:可选勾选「如果任务失败,每隔X分钟重试」,提升可靠性
  • 把你的脚本放在实例本地目录(比如C:\Scripts\),任务计划会在每次启动时自动执行它,不管是手动启动还是Lambda触发的启动都没问题。

二、你的核心疑问:停止后重启算不算“启动”?

明确给你答案:算! 已停止的实例被启动(不管是手动、Lambda还是其他方式触发),完全属于“启动”场景,根本不需要终止实例重新创建。

只要你按照上面的方法配置(比如修改了RunOnce的用户数据,或者用任务计划),每次Lambda启动你的停止实例时,脚本都会自动运行。

补充个小细节:终止后重新创建是「首次启动」,停止后启动是「后续启动」,两种场景下,只要你的配置支持重复执行,脚本都会触发。


内容的提问来源于stack exchange,提问作者stevec

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:09:46