Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 实例启动时Amazon EC2用户数据脚本-python脚本不会运行?_Amazon Web Services_Amazon Ec2 - Fatal编程技术网

Amazon web services 实例启动时Amazon EC2用户数据脚本-python脚本不会运行?

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复制脚本。但我想那只是储藏室?就像我说的,我是新手

我正在学习有关的教程

我有一个EC2实例,我已经确认它正在运行

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环境。在那里输入那一行。如果你需要更多的细节,用谷歌搜索一下。