当作为UserData传递给ec2实例

时间:2018-04-16 23:45:12

标签: python bash amazon-web-services amazon-ec2 boto3

我正在尝试执行一个shell脚本,该脚本通过在启动时将shell脚本作为UserData传递给ec2实例(python SDK)来启动python脚本。

我正在尝试运行的目标python脚本需要作为具有所有用户环境变量的用户(而不是root)运行。运行此目标python脚本的bash脚本如下所示:

#!/usr/bin/env bash
source /home/ubuntu/.bashrc
source /opt/ros/kinetic/setup.bash
source /home/ubuntu/kartographer/install_isolated/setup.bash
source /home/ubuntu/catkin_ws/devel/setup.bash
/home/ubuntu/takecontrolofEC2.py $1 $2

我与ec2创建一起传递的bash脚本如下:

#!/usr/bin/env bash
echo "Start processing the data" > /home/ubuntu/process.log
whoami >> /home/ubuntu/process.log
sudo -H -u ubuntu bash -c "/home/ubuntu/runpostprocessingscript.sh s3://mapping/unprocessed_data/tax/2016-02-11/ s3://processed-data/test/tax/ >> /home/ubuntu/process.log"

process.log的o / p是

Start processing the data
root

我不明白为什么我的最后一个命令没有被执行。当我从终端以root身份运行它时,同样的命令也可以工作。即。

sudo su
<last command>

我不确定我哪里出错了。一切都有帮助。

由于

FYI: python脚本需要很长时间(2-3小时)才能完成数据处理。

注意:这在我使用SSH / paramiko时有效。但我的目的是让ec2实例完全封闭(没有ssh接口),因为所需的数据是在s3上。

0 个答案:

没有答案