windows - 如何在 AWS Windows 实例中运行用户数据脚本之前启用网络

标签 windows amazon-web-services amazon-s3 amazon-ec2

我一直在努力在 AWS 中引导我的 Windows 实例。我需要在实例启动时从S3等地方下载一些东西并执行它们。

这对于 Linux 实例来说似乎非常简单,但对于 Windows 实例来说就不是那么简单了。

我有一个用户数据脚本,当我在登录实例后运行它时它可以工作,但是当它作为此处描述的 EC2Launch/EC2Config 的一部分运行时它不起作用:https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-windows-user-data.html

我发现它不起作用的原因是我无法从互联网上下载东西,原因是:“请求的操作没有执行,因为用户没有登录到网络。指定的服务不存在。”

我真正想做的是:

  1. 下载 AWS_CLI 安装程序
  2. 安装 AWS_CLI
    • 我可以使用 msiexec 和/qn 标志通过 CLI 安装程序安装 CLI,一旦它出现在盒子上
  3. 从 S3 中提取项目
    • 这应该可以通过 aws s3 cp 或 sync 来完成
  4. 安装 Python(存储在 S3 中的安装程序)
    • 一旦它出现在类似于 CLI 安装程序的盒子上,我就可以使用 msiexec 安装安装程序
  5. 执行从 S3 中提取的(python)脚本

有人知道更好的方法吗?这一切在我进入 RDP 后都有效,但不是作为启动脚本的一部分。

TL;DR - 我需要使用提供给我的 EC2 Windows 实例的 EC2Launch 用户数据脚本下载内容,但运行时网络似乎不可用。

预先感谢您的帮助!

最佳答案

我遇到了类似的问题,我正在使用 BITS 在“用户数据”脚本上下载安装程序,但遇到了同样的错误:“请求的操作未执行,因为用户尚未登录到网络.指定的服务不存在。”

这不是网络问题,而是 BITS 的工作原理,开始下载作业的用户必须登录到计算机上,“用户数据”似乎并非如此执行,"runs as" the local Administrator无需以 BITS 识别的方式登录用户。来自 BITS documentation :

For BITS to detect that a user is logged on, the user must use one of the following interactive logon options:

  • Log on through the Welcome screen.
  • Log on to a terminal client.
  • Use fast user switching.
  • Starting with Windows 10, version, log on from another device using Remote Powershell.

在脚本执行期间,网络已安装并可以使用,您可以使用不依赖 BITS 的其他方法下载文件(例如:Invoke-WebRequest(rather slow 用于更大的文件)或使用 System.Net.WebClient,都在 PowerShell 上)。

关于windows - 如何在 AWS Windows 实例中运行用户数据脚本之前启用网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51794752/

相关文章:

windows - 打包并安装的UWP App不在开始菜单中

php - PHP Intranet 可以共享 Windows 登录名吗?

windows - 在 Qt 中禁用进度条动画

amazon-web-services - AWS API Gateway - HTTP 直通路径参数

docker - 如何使用 Docker 和 DigitalOcean Spaces 部署 TensorFlow Serving

c - 为什么 gid_t 不在我的 sys/types 头文件中?

amazon-web-services - 如何使用 AWS Lambda 脚本通过 Terraform 部署 AWS 基础设施

amazon-web-services - 调用 AWS lambda 函数,等待完成

python - 使用 boto3 从 AWS S3 Bucket 下载文件导致 ClientError : An error occurred (403): Forbidden

amazon-web-services - Instagram 如何命名文件