1

我有一个 AWS EC2 Windows(2008 R2 实例),我想使用本地机器上的命令/脚本启动和停止它,并根据我的使用情况进行安排。我还希望在 EC2 实例上运行的几个程序在实例启动时启动。这些程序当前是使用实例中存在的 bat 文件启动的。

到目前为止,我做了同样的事情:

1- 我在 AWS IAM 中创建了一个 AWS 用户,并使用该用户的 auth_id 和密钥来使用 EC2 apis 和命令行实用程序。

2- 要启动和停止实例,我使用 EC2 Util 中的命令行实用程序。

start ->ec2-start-instances i-instanceID

stop  ->ec2-stop-instances i-instanceID

3-要安排它,我已将其添加到我的 Windows 调度程序中。

4- 在 AWS 管理控制台中添加了实例的用户数据。我的用户数据如下所示:

<script>
C:\Services\my_application.lnk
</script>

5- 我可以看到用户数据存在于我的 EC2 实例中的 C:\ProgramFiles\Amazon\Ec2ConfigServer\Scripts\UserScript

6- 在 C:\Program Files\Amazon\Ec2ConfigService\Settings\confi.xml 中,将 Ec2SetPassword 和 Ec2HandleUserData 的值更改为启用并添加了 true。

我面临以下问题:

1- 每次启动实例时都不会执行用户数据脚本。我不知道为什么。2- 实例重新启动时,在 Ec2ConfigService\Settings\confi.xml 中所做的更改将恢复为默认值。

我觉得这是一个常见的用例,并且想知道用于自动化 EC2 操作的最佳实践和方法。我还需要帮助在我的实例上启动程序 - 我哪里出错或丢失了,还有什么需要做的等等?

4

1 回答 1

2

userdata在第一次创建实例时执行。这是设计使然。

您有几个选项 - 所有选项都使用您的 userdata 脚本

  1. 将 my_application.lnk 复制到启动文件夹
  2. 在注册表中注册应用程序“运行”启动键(http://blogs.msdn.com/b/powershell/archive/2006/04/25/how-to-access-or-modify-startup-items-in-窗口注册表.aspx
  3. 将其注册到任务调度程序以将其配置为在启动时执行 ( http://technet.microsoft.com/en-us/library/bb490996.aspx )
于 2013-08-27T11:47:14.003 回答