首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >例如,不执行从自定义映像创建的AWS - UserData

例如,不执行从自定义映像创建的AWS - UserData
EN

Stack Overflow用户
提问于 2016-06-08 17:00:05
回答 2查看 2.9K关注 0票数 1

我用简单的PowerShell脚本mkdir C:\tempdir进行了测试,当我将它指定为UserData时--例如从Amazon启动的--一切都很好。如果我用指定的UserData启动实例并生成该实例的映像,则不会对从我的自定义映像创建的实例执行UserData。有趣的是,"C:\Program Files\Amazon\Ec2ConfigService\Scripts\UserScript.ps1"包含初始启动的UserData (在创建映像之前),尽管它应该包含上次启动时指定的数据。更有趣的是,即使存在UserScript.ps1,也不会执行它(应该创建文本文件,但不存在文本文件)。这是第二次发射的UserData

代码语言:javascript
代码运行次数:0
运行
复制
<powershell>
  mkdir C:\tempdir
</powershell>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-09 10:18:05

当实例启动时,用户数据脚本只运行一次(创建时没有启动)。然后在实例中禁用它们。因此,当您从该实例获取一个AMI并启动一个新的AMI时,用户数据已经被禁用。

启用UserData

要允许它再次运行,当您从创建的AMI启动一个新的UserData时,您必须在UserData设置实用程序中打开用户数据支持,方法是选中UserData框(在获取AMI之前)。

持久化启用UserData

现在,如果您再次重新启动实例,那么UserData将运行,并再次禁用自身。要禁用此功能,您还需要将<persist>true</persist>添加到实例的UserData中,这将使复选框保持相同的状态(如果打开的话)。

更多信息:

票数 2
EN

Stack Overflow用户

发布于 2019-07-12 10:18:09

我也有同样的问题。以下是解决这个问题的方法

  1. 如果您还没有从图像中启动一个实例
  2. RDP进入它
  3. 打开powershell,并运行此C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 –Schedule
  4. 如果您有实例的自定义密码,则在上一步中它将被重置。如果您想要返回它,请打开powershell并运行以下命令(假设您的用户名是管理员net user Administrator "your_new_password" (如果您没有自定义密码,并且只使用由.pem文件生成的密码,则可以忽略此步骤)
  5. 现在进入AWS控制台(即浏览器中的AWS控制台),从实例中创建一个AMI
  6. 确保您的用户数据是以下形式(持久化/真实部分是必不可少的)。
代码语言:javascript
代码运行次数:0
运行
复制
<powershell>
# Some powershell code here
</powershell>
<persist>true</persist>

就这样。您的userdata powershell脚本将在下次启动实例时运行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37708636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档