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

Str*_*ker 3 python django amazon-ec2 amazon-web-services 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
Run Code Online (Sandbox Code Playgroud)

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

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

如果我在 EC2 上运行上述命令,它运行得很好。但是当我将它包含在用户数据中时,在我登录到 EC2 并检查云初始化日志后,我看到以下内容:

/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
Run Code Online (Sandbox Code Playgroud)

Str*_*ker 5

这是我必须做的事情才能正常工作。

以下是在用户数据中使用 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
            """
Run Code Online (Sandbox Code Playgroud)

感谢@dpwrussell 的提示,我不得不删除 sudo,因为它不是必需的。接下来,我必须更改目录才能在我的用户主页下获取虚拟环境。