【发布时间】:2021-05-13 14:51:27
【问题描述】:
我使用 CloudFormation 创建了架构,该架构利用 Windows 2016 EC2 服务器和 S3,以 JSON 编写。我有 7 个可执行文件上传到我的 S3 存储桶中。一旦我远程进入 EC2,我可以手动静默安装 Powershell for AWS 提示符中的所有内容。我可以一次做一个,甚至将它放在一个 .ps1 文件中,然后在 Powershell for AWS 中运行它,它可以正常运行。
我现在正尝试在创建 EC2 实例时让它静默安装。我就是做不到,我不明白为什么。 JSON 代码看起来是正确的。如您所见,我首先从 S3 存储桶下载所有内容,切换到所有下载内容的 c:\TEMP 目录,然后在无人值守安装模式下运行可执行文件。我的 CloudFormation 模板中没有任何错误。它运行“成功”。问题是什么都没有发生。这是权限的事情吗?欢迎和赞赏任何帮助。谢谢!
在 AWS::EC2::Instance 部分下,我的 UserData 部分看起来像这样(我缩短了下面的可执行文件名称):
"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
"<powershell>\n",
"copy-S3Object -BucketName mySilentInstallBucket -KeyPrefix * -LocalFolder c:\\TEMP\\",
"\n",
"cd c:\\TEMP\\",
"\n",
"firefox.exe -S ",
"\n",
"notepadpp.exe /S",
"\n",
"Git.exe /SILENT",
"\n",
"</powershell>"
]]}}
【问题讨论】:
-
查看系统日志可能会有所帮助。从 EC2 控制台中,选择操作 - 监控和故障排除 - 获取系统日志。然后查看运行 UserData 的部分并查看日志可能显示的内容。 CloudFormation 模板不会因 UserData 错误而失败(请参阅stackoverflow.com/questions/37373090/…)。
-
部分问题是需要将实例配置文件添加到我的 EC2 实例脚本信息中。我开始认为这里还涉及其他权限问题。将继续研究和尝试,如果我找到解决方案,会通知您。
-
还需要到 Internet 的网络连接,因此请检查您的安全组以及实例是否具有到 Internet 的路径(或 S3 的端点)。查看aws.amazon.com/premiumsupport/knowledge-center/… 以了解许多其他要检查的内容。
标签: amazon-web-services powershell user-data silent-installer aws-cloudformation-custom-resource