【问题标题】:How to start a program on instance start on AWS EC2如何在 AWS EC2 上启动实例启动程序
【发布时间】:2023-04-05 22:43:01
【问题描述】:

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

到目前为止,我一直在关注同样的事情:

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

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 操作的最佳实践和方法。 我还需要帮助在我的实例上启动程序 - 我哪里出错或丢失了,还有什么需要做的等等?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon


    【解决方案1】:

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

    您有几个选项 - 所有这些都使用您的用户数据脚本

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

    【讨论】:

    • 我尝试了所有 3 个选项,但问题是 my_application.lnk 只有在我使用远程桌面并登录后才会执行...
    • 选项 3 - 将其注册到任务计划中。确保您已将其注册为的用户具有作为批处理作业登录的权限。并且不要使用 lnk - 使用实际的 exe
    • 选项 2 - 请参阅此链接以获取正确的密钥 akadia.com/services/windows_registry.html
    • 选项 1 - Facepalm。有时我是个白痴。对此感到抱歉 - 当然,在您登录之前,它不会从用户启动文件夹运行。
    • 非常感谢,我创建了一个 BAT 文件并在任务管理器中添加了该文件,并选择了“无论用户是否登录都运行”选项。它奏效了......再次非常感谢......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    相关资源
    最近更新 更多