【发布时间】:2019-03-01 16:42:11
【问题描述】:
我正在按照本指南准备实例以创建 AMI(“使用 EC2Launch 手动运行 Sysprep”部分): https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2launch.html#ec2launch-sysprep
当我在步骤 7 (./SysprepInstance.ps1) 中运行脚本时,它会引发关于设置变量的错误(关于无法设置这些变量的错误,因为它们是只读的)。此错误来自第 37、38、39 行:
Set-Variable rootPath -Option Constant -Scope Local -Value (Join-Path $env:ProgramData -ChildPath "Amazon\EC2-Windows\Launch")
Set-Variable modulePath -Option Constant -Scope Local -Value (Join-Path $rootPath -ChildPath "Module\Ec2Launch.psd1")
Set-Variable scriptPath -Option Constant -Scope Local -Value (Join-Path $PSScriptRoot -ChildPath $MyInvocation.MyCommand.Name)
这些行似乎与 ./InitializeInstance.ps1 的第 64、65、66 行冲突:
Set-Variable rootPath -Option Constant -Scope Local -Value (Join-Path $env:ProgramData -ChildPath "Amazon\EC2-Windows\Launch")
Set-Variable modulePath -Option Constant -Scope Local -Value (Join-Path $rootPath -ChildPath "Module\Ec2Launch.psd1")
Set-Variable scriptPath -Option Constant -Scope Local -Value (Join-Path $PSScriptRoot -ChildPath $MyInvocation.MyCommand.Name)
在我上面提到的指南中,它建议手动运行这些脚本(在正确的文件夹中打开提示并运行这些脚本)。当我手动运行它们时它工作正常,因为我可以在运行 ./SysprepInstance.ps1 之前关闭终端。但是当我通过 UserData 运行它们时,我相信 ./InitializeInstance.ps1 将这些变量设置为只读,然后 ./SysprepInstance.ps1 会引发错误。 这会导致错误的 AMI,其中开始菜单不起作用,所有终端都很奇怪(powershell 有黑色背景,您无法滚动,cmd 提示符默认启用键盘的 Insert 键,以及其他奇怪的东西)。
这是我的用户数据脚本:
<powershell>
cd "C:\ProgramData\Amazon\EC2-Windows\Launch\\Scripts\"
./InitializeInstance.ps1 -Schedule
./SysprepInstance.ps1
<powershell/>
是否有人对如何准备 Windows 2016 实例以通过 UserData 创建 AMI 有任何经验?
【问题讨论】:
标签: amazon-web-services amazon-ec2 user-data ec2-ami