Amazon web services 实例启动时Amazon EC2用户数据脚本-python脚本不会运行?
我正在学习有关的教程 我有一个EC2实例,我已经确认它正在运行Amazon web services 实例启动时Amazon EC2用户数据脚本-python脚本不会运行?,amazon-web-services,amazon-ec2,Amazon Web Services,Amazon Ec2,我正在学习有关的教程 我有一个EC2实例,我已经确认它正在运行 python run.py 当我通过命令行将文件写入s3时,它正是我想要的。所以我在web UI中添加了 #!/bin/bash python run.py 进入用户数据字段。但当我重新启动时,什么也没发生。我一定忽略了什么,但不确定是什么 有一件事让我感到惊讶,那就是当我启动实例备份时,所有的python包和脚本仍然在那里,我认为所有的东西都会被删除,每次启动后我都必须从s3复制脚本。但我想那只是储藏室?就像我说的,我是新手
python run.py
当我通过命令行将文件写入s3时,它正是我想要的。所以我在web UI中添加了
#!/bin/bash
python run.py
进入用户数据字段。但当我重新启动时,什么也没发生。我一定忽略了什么,但不确定是什么
有一件事让我感到惊讶,那就是当我启动实例备份时,所有的python包和脚本仍然在那里,我认为所有的东西都会被删除,每次启动后我都必须从s3复制脚本。但我想那只是储藏室?就像我说的,我是新手,所以任何帮助都将不胜感激 你提到的链接中有一个通知 默认情况下,仅运行用户数据脚本和cloud init指令 在第一次启动实例的引导周期内。你可以 更新配置以确保用户数据脚本和 每次重新启动实例时都会运行cloud init指令 并链接到第页以了解更多详细信息 或者,您也可以简单地将作业添加到crontab,如下所示,以便通过SSH连接到EC2实例: @重新启动python/PATH/TO/run.py
这是因为您在从控制台启动实例后添加了用户数据。默认情况下,用户数据仅在实例首次启动时有效 即使在这种情况下,您使用的图像也应该具有您所引用的run.py文件。否则,只能传递shell命令。
检查日志文件/var/log/cloud-init-output.log将告诉您发生了什么。用户数据脚本通常会犯一个非常愚蠢的错误。我们忘记了它们是从根用户运行的。这意味着运行脚本时的当前目录将是用户root的主目录,而不是基于操作系统的Ubuntu用户或ec2用户的主目录
这意味着,如果命令成功运行,文件可能位于相关的主位置。但是,用户数据脚本希望它位于不同的位置。尝试给出脚本的绝对路径,看看是否有效 谢谢。我确实尝试了完整的脚本,只是将basch命令从“/bin/echo Hello World”更改为“>/tmp/testfile.txt改为“python run.py”,但也不起作用。在哪里添加@reboot命令?我试着在EC2终端上运行它,但是没有找到命令。你需要将它添加到crontab中,就像一个调度器一样。运行crontab-e,它将进入crontab环境。在那里输入那一行。如果你需要更多的细节,用谷歌搜索一下。