评价这篇文章

首次发布于网址:https://nivleshc.wordpress.com
引导是在AWS中定制实例的一种很棒的方法(类似的功能在Azure中存在)。
要启用引导,配置启动实例时,在步骤3:配置实例详细信息向下滚动到底部,然后展开先进的细节.
你会注意到用户数据文本框。这是您可以提供引导脚本的地方。该脚本将在实例首次启动时运行。
AWS引导脚本
我继续在文本框中输入脚本并继续完成实例配置。我的实例运行后,我启动了一个到它的远程桌面连接,以确认我的脚本已经运行。不幸的是,我看不到任何定制(这意味着我的脚本没有运行)
认为实例无法访问用户数据,我打开Internet Explorer,然后浏览到以下URL(这是一个可用于访问用户数据的内部URL)
http://169.254.169.254/latest/user-data/
我能够成功地访问用户数据,这意味着没有问题。但是当检查内容时,我注意到一个打字错误!啊哈,这就是为什么我的定制没有发生的原因。
不幸的是,根据AWS,用户数据只在启动时执行(对于那些想要读取的,在这里是AWS的官方文件)。要运行固定的引导脚本,我将不得不终止我的实例,并使用更正后的脚本启动一个新的实例(我试图在纠正了我的拼写错误后重新启动我的windows实例,但是它没有运行)。
我对终止当前实例然后启动一个新实例不是很满意,因为对于那些可能不知道的人,AWS EC2计算费用四舍五入到下一小时。这意味着如果我终止了当前实例并启动了一个新实例,我将收取2 x 1小时的费用而不是1 x 1小时!
所以我开始尝试寻找另一个解决方案。猜猜看,我找到了
阅读AWS文件,我发现当提供Windows实例时,调用使用用户数据进行定制的服务EC2Config.此服务在实例首次启动时运行初始启动任务,然后禁用它们。然而,有一种方法可以稍后重新启用启动任务,这里是提供更多信息的文档EC2Config.
Amazon Windows ami包含一个名为的实用程序EC2ConfigService设置.这允许您配置EC2Config在下次服务启动时执行用户数据。实用程序位于所有程序(或者你可以搜索它)。
aws_ec2configsettings_AllApps(配置)
aws_ec2configsettings_搜索
一旦打开,下概述您将看到以下选项
为下一个服务启动启用用户数据执行(在Sysprep自动启用),例如。或
aws eu ec2配置
勾选此选项,然后按下好吧.然后重新启动Windows实例。
Windows实例重启后,EC2Config将执行userData(引导脚本),然后它将自动从上面的选项中删除标记,以便在后续重启(或服务启动)时不执行userData
那就这样吧。在AWS Windows实例上重新运行引导脚本的简单方法,无需终止当前实例并启动一个新实例。
EC2ConfigService设置你也可以探索

类别:
亚马逊网络服务德沃斯
标签:

加入对话!11条评论

  1. 你是个救生员!!我花了一整天的时间尝试引导一个Windows AMI,完成此操作后,im现在可以运行用户数据了!!
    我用的是水磨石,所以在用户数据中
    用户data=“$文件(”webserversetup.ps1〃)”
    在完成了你展示的步骤之后,我创建了一个新的AMI并从中启动。
    工作得很有魅力!!

    答复
  2. 你是个救生员!!我花了一整天的时间尝试引导一个Windows AMI,完成此操作后,im现在可以运行用户数据了!!
    我用的是水磨石,所以在用户数据中
    用户data=“$文件(”webserversetup.ps1〃)”
    在完成了你展示的步骤之后,我创建了一个新的AMI并从中启动。
    工作得很有魅力!!

    答复
  3. 是否有一种方法可以使用PowerShell而不是选中GUI中的复选框?

    答复
  4. 是否有一种方法可以使用PowerShell而不是选中GUI中的复选框?

    答复
  5. AMI在创建时不包含此值

    答复
  6. AMI在创建时不包含此值

    答复
  7. 感谢。对于寻求自动完成此操作的人:

    1)您可以编辑下面的部分,并在文件中将其设置为“Enabled”:C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml

    Ec2HandleUserData
    启用

    2)通过脚本:(您可以添加额外的插件以在$enableElements数组中启用)

    $ec2settingsfile=“c:\\Program Files\\Amazon\\ec2configservice\\settings\\config.xml”
    $xml=[xml](获取内容$ec2设置文件)
    $xmlElement=$xml.get_documentElement()。
    $xmlElementToModify=$xmlElement.plugins
    $enableElements=“EC2handleUserData”
    $xmlementtomodify.plugin其中object$enableElements-包含$.name foreach object$u.state=“enabled”
    $xml.save($ec2设置文件)

    答复

留下答复