如何使用aws cli boto3在AWS EC2中使用userdata安装python3和Django

时间:2018-04-29 13:10:01

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

我需要通过EC2实例上的用户数据安装python3和django。我知道我可以使用Cloudformation或直接在EC2上进行,但我需要通过用户数据安装和部署它。我正在创建VPC和自动缩放器,但我需要自动自动安装和部署python3和django。

这是我所拥有的,但它似乎不起作用。

    UserData="""#!/bin/bash
            yum install httpd php php-mysql -y
            echo y | sudo yum install python36 python36-virtualenv python36-pip
            sudo pip install --upgrade pip
            python3 -m venv venv
            source ./venv/bin/activate
            pip install django
            pip install --upgrade pip
            yum update -y
            service httpd start
            chkconfig httpd on
            adduser Eteram

我试过将它们用双引号括起来但仍然不起作用。

我基本上是尝试安装python3和django并部署测试应用程序以便能够转到django管理URL。

如果我在EC2上运行上述命令,它运行就好了。但是当我将其包含在用户数据中时,在我登录EC2并检查cloud init日志后,我看到以下内容:

/var/lib/cloud/instance/scripts/part-001: line 3: echo y | sudo yum install python36 python36-virtualenv python36-p
ip: command not found
/var/lib/cloud/instance/scripts/part-001: line 4: sudo pip install --upgrade pip: command not found
/var/lib/cloud/instance/scripts/part-001: line 5: python3 -m venv venv: command not found
/var/lib/cloud/instance/scripts/part-001: line 6: source ./venv/bin/activate: No such file or directory
/var/lib/cloud/instance/scripts/part-001: line 7: pip install django: command not found
/var/lib/cloud/instance/scripts/part-001: line 8: pip install --upgrade pip: command not found

1 个答案:

答案 0 :(得分:2)

以下是我必须做的事情。

以下是在用户数据中使用boto3在aws上安装python 3和django的说明

    UserData="""#!/bin/bash
            yum install httpd php php-mysql -y
            yum install python36 python36-virtualenv python36-pip -y
            pip install --upgrade pip
            cd /home/ec2-user
            python3 -m venv /home/ec2-user/venv
            source /home/ec2-user/venv/bin/activate
            pip install django
            pip install --upgrade pip
            yum update -y
            service httpd start
            chkconfig httpd on
            """

感谢来自@dpwrussell的提示我不得不删除sudo,因为它不是必需的。接下来,我不得不更改目录以获取用户家中的虚拟环境。