我用简单的PowerShell脚本mkdir C:\tempdir
进行了测试,当我将它指定为UserData时--例如从Amazon启动的--一切都很好。如果我用指定的UserData启动实例并生成该实例的映像,则不会对从我的自定义映像创建的实例执行UserData。有趣的是,"C:\Program Files\Amazon\Ec2ConfigService\Scripts\UserScript.ps1"
包含初始启动的UserData (在创建映像之前),尽管它应该包含上次启动时指定的数据。更有趣的是,即使存在UserScript.ps1,也不会执行它(应该创建文本文件,但不存在文本文件)。这是第二次发射的UserData
<powershell>
mkdir C:\tempdir
</powershell>
发布于 2016-06-09 02:18:05
当实例启动时,用户数据脚本只运行一次(创建时没有启动)。然后在实例中禁用它们。因此,当您从该实例获取一个AMI并启动一个新的AMI时,用户数据已经被禁用。
启用UserData
要允许它再次运行,当您从创建的AMI启动一个新的UserData时,您必须在UserData设置实用程序中打开用户数据支持,方法是选中UserData框(在获取AMI之前)。
持久化启用UserData
现在,如果您再次重新启动实例,那么UserData将运行,并再次禁用自身。要禁用此功能,您还需要将<persist>true</persist>
添加到实例的UserData中,这将使复选框保持相同的状态(如果打开的话)。
更多信息:
发布于 2019-07-12 02:18:09
我也有同样的问题。以下是解决这个问题的方法
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 –Schedule
net user Administrator "your_new_password"
(如果您没有自定义密码,并且只使用由.pem
文件生成的密码,则可以忽略此步骤)<powershell>
# Some powershell code here
</powershell>
<persist>true</persist>
就这样。您的userdata powershell脚本将在下次启动实例时运行。
https://stackoverflow.com/questions/37708636
复制相似问题