我一直在努力引导AWS中的Windows实例。实例启动时,我需要从S3和其他位置下载一些内容并执行它们。
对于Linux实例而言,这似乎非常简单,但对于Windows实例而言却并非如此。
我有一个用户数据脚本,可以在登录实例后运行时运行,但是当它作为此处所述的EC2Launch / EC2Config的一部分运行时却无法运行:https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-windows-user-data.html
我发现它不起作用的原因是由于以下原因我无法从Internet下载内容:“由于用户尚未登录网络,未执行所请求的操作。服务不存在。“
我真正想做的是以下事情:
有人知道更好的方法吗?在我RDP加入之后,所有这些都可以工作,但不能作为启动脚本的一部分。
TL; DR -我需要使用提供给我的EC2 Windows实例的EC2Launch用户数据脚本下载内容,但该网络在运行时似乎不可用。
在此先感谢您的帮助!
答案 0 :(得分:0)
我遇到了类似的问题,我正在使用BITS在“用户数据”脚本上下载安装程序,并收到相同的错误:“由于用户尚未登录网络,未执行所请求的操作。指定的服务不存在。“
这不是由于网络问题,而是取决于BITS的工作方式,启动下载作业的用户必须登录到计算机上,“用户数据”似乎并非如此执行"runs as" the local Administrator,而不会以BITS可以识别的方式登录用户。来自BITS documentation:
为了使BITS能够检测到用户已登录,该用户必须使用以下交互式登录选项之一:
- 通过“欢迎”屏幕登录。
- 登录到终端客户端。
- 使用快速的用户切换。
- 从Windows 10版本开始,使用Remote Powershell从另一台设备登录。
在执行脚本的过程中,网络已挂载并可以使用,您可以使用不依赖BITS的其他方法(例如:Invoke-WebRequest(对于较大的文件,rather slow)下载文件,也可以使用System.Net.WebClient,都在PowerShell上。