使用Python 3.7安装python模块时,从自定义AMI启动的实例无法启动

时间:2019-07-09 05:41:15

标签: python-3.x amazon-ec2 ubuntu-18.04 packer ec2-ami

我正在使用Packer创建自定义Ubuntu AMI,然后使用它启动EC2实例,然后使用CodeDeploy将其部署到应用程序中。

在此实例上,我需要使用Python3.7,因为我正在使用3.6中不支持的某些日期时间功能-Ubuntu的默认python3版本是Python3.6.8

我的问题是,当使用python3.7通过pip安装python模块时,启动自定义AMI失败,它永远不会达到正常状态。通过默认的python3安装相同的模块时,没有问题。

在打包程序构建期间,将通过以下脚本安装软件包:

#!/bin/bash

# wait for cloud-init to finish - other wise apt install can fail
while [ ! -f /var/lib/cloud/instance/boot-finished ]; do
   echo 'Waiting for cloud-init...'
   sleep 1
done

# Install apt packages
sudo apt-get update -y
for package in unzip jq python3.7 python3-pip ruby wget mysql-client-5.7
do
    sudo apt-get install -y $package
done

# Install python packages
sudo python3.7 -m pip install --upgrade pip --no-cache-dir
sudo python3.7 -m pip install --upgrade awscli --no-cache-dir
sudo python3.7 -m pip install --upgrade boto3 --no-cache-dir
sudo python3.7 -m pip install -r /tmp/requirements.txt --no-cache-dir

# Install and start codedeploy agent
wget https://aws-codedeploy-eu-central-1.s3.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto
sudo service codedeploy-agent start
sudo service codedeploy-agent status

上面的代码有效,但是自定义AMI无法达到健康状态。

以下代码可以正常工作,并且自定义AMI可以正常启动:

#!/bin/bash

# wait for cloud-init to finish - other wise apt install can fail
while [ ! -f /var/lib/cloud/instance/boot-finished ]; do
   echo 'Waiting for cloud-init...'
   sleep 1
done

# Install apt packages
sudo apt-get update -y
for package in unzip jq python3.7 python3-pip ruby wget mysql-client-5.7
do
    sudo apt-get install -y $package
done

# Install python packages
sudo pip3 install --upgrade pip --no-cache-dir
sudo pip3 install --upgrade awscli --no-cache-dir
sudo pip3 install --upgrade boto3 --no-cache-dir
sudo pip3 install -r /tmp/requirements.txt --no-cache-dir

# Install and start codedeploy agent
wget https://aws-codedeploy-eu-central-1.s3.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto
sudo service codedeploy-agent start
sudo service codedeploy-agent status

任何想法都可能导致实例故障吗?唯一的区别是python模块的安装方式。

编辑-命令已在本地测试,没有明显问题。

0 个答案:

没有答案