amazon-ec2 - AWS - 对于从自定义镜像创建的实例,不会执行 UserData

标签 amazon-ec2 ec2-ami

我使用简单的 PowerShell 脚本进行了测试mkdir C:\tempdir 当我将其指定为 UserData(例如从 Amazon 镜像启动)时,一切正常。如果我使用指定的 UserData 启动实例并制作该实例的镜像,则不会为从我的自定义镜像创建的实例执行 UserData。 有趣的是,“C:\Program Files\Amazon\Ec2ConfigService\Scripts\UserScript.ps1” 包含初始启动的 UserData(在创建镜像之前),尽管它应该包含上次启动期间指定的数据。 更有趣的是,即使 UserScript.ps1 存在,它也不会执行(它应该创建文本文件,但文本文件不存在)。 这是第二次启动时的用户数据

<powershell>
  mkdir C:\tempdir
</powershell>

最佳答案

用户数据脚本仅在实例启动时运行一次(创建而不是启动)。然后它们在实例上被禁用。因此,当您从该实例获取 AMI 并启动新的 AMI 时,用户数据已被禁用。

启用用户数据

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

持续启用用户数据

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

更多信息:

关于amazon-ec2 - AWS - 对于从自定义镜像创建的实例,不会执行 UserData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37708636/

相关文章:

asp.net - 使用elastic beanstalk部署Asp.net Web应用程序问题

amazon-web-services - 如何在不同地区找到相同规范的AMI?

php - 无法在 Amazon EC2 上设置 cron-job

amazon-web-services - 如何使用 Terraform 格式化和挂载临时磁盘?

tomcat https 端口上的 JSP 显示不正确

amazon-ec2 - RHEL 7.5 上不存在/var/log/cloud-init-output.log

java - map 缩小 : Unabale to run the code due to number of errors

php - 无法通过 PDO 连接到 AWS RDS

php - Xdebug 安装在 EC2 Linux 实例上并使用 PhpStorm 进行远程调试/开发

deployment - 如何将 TeamCity 的工件部署到 Amazon EC2 服务器