es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo instalar Python 3.9 en Amazon Linux 2 con cloud-init y CDK

Estoy intentando instalar Python 3.9 en una instancia EC2 que utiliza Amazon Linux 2. Intenté seguir esta guía: https://computingforgeeks.com/install-latest-python-on-centos-linux/, y pude instalar manualmente Python 3.9 en la instancia EC2 conectándome por SSH y ejecutando los comandos. Ahora estoy tratando de configurar la instancia EC2 con un script de UserData que llama a algunos scripts de CloudFormationInit para instalar dependencias, incluido Python 3.9, pero mi script está fallando.

Aquí está parte del script que estoy usando para instalar Python 3.9:

    const installPythonString = `

<h1>!/bin/bash</h1>

sudo amazon-linux-extras install -y epel
sudo yum -y update
sudo yum groupinstall "Development Tools" -y
sudo yum install openssl-devel libffi-devel bzip2-devel -y
gcc --version
sudo yum install wget -y
sudo mkdir -p /opt/python3.9/
sudo chown -R $USER:$USER /opt/python3.9/
wget https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tgz -P /opt/python3.9
cd /opt/python3.9/
tar xvf Python-3.9.9.tgz
whoami
sudo chown -R $USER:$USER Python-3.9.9
cd Python-3.9.9/
ls -al
pwd
./configure --enable-optimizations
sudo make altinstall
python3.9 --version
pip3.9 --version
`;
    init.addConfig('install<em>python39', new ec2.InitConfig([
      ec2.InitFile.fromString('/opt/install</em>python39.sh', installPythonString, {
        mode: '000755',
        owner: 'root',
        group: 'root',
      }),
      ec2.InitCommand.shellCommand('sudo sh install<em>python39.sh', {
        cwd: '/opt',
        key: 'install</em>python39',
      }),
]))

Estoy obteniendo los siguientes errores al intentar iniciar la instancia EC2:

Python build finished successfully!
...
WARNING: The script pip3.9 is installed in '/usr/local/bin' which is not on PATH.
install_python39.sh: line 21: python3.9: command not found
install_python39.sh: line 22: pip3.9: command not found

¿Existe una manera más fácil de instalar Python 3.9 en Amazon Linux 2 utilizando CloudFormationInit?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma más fácil de instalar Python 3.9 en Amazon Linux 2 usando CloudFormationInit. En lugar de descargar e instalar manualmente Python 3.9, puedes utilizar el comando amazon-linux-extras para instalar el paquete python3.9. Aquí tienes un ejemplo de script de User Data en TypeScript:

    import * as ec2 from 'aws-cdk-lib/aws-ec2';
    import * as cfn_init from 'aws-cdk-lib/aws-ec2/lib/cloud-init';
    import * as cfn_inc from 'aws-cdk-lib/aws-ec2/lib/cloud-init/include';
    
    const init = new cfn_init.CloudFormationInit();
    
    init.addPackage('python3.9');
    
    init.addConfig('my_config', new ec2.InitConfig([
      // añade aquí tu configuración de cloud-init
    ]));
    
    // crea tu instancia EC2
    const instance = new ec2.Instance(this, 'MyInstance', {
      instanceType: new ec2.InstanceType('t3.micro'),
      machineImage: new ec2.AmazonLinuxImage(),
      userData: cfn_inc.InitConfigUserData.fromCloudFormationInit(init),
    });
    
    // añade cualquier otro recurso, como grupos de seguridad y subredes
    // ...
    

    En el código anterior, usamos el método addPackage para instalar el paquete python3.9 desde el repositorio de Amazon Linux Extras. Esto instalará automáticamente Python 3.9 y lo agregará a tu sistema PATH, por lo que podrás utilizarlo directamente en tus scripts sin tener que especificar la ruta completa al ejecutable. Además, puedes añadir cualquier otra configuración de CloudFormationInit que necesites instalar otras dependencias o configurar tu instancia. Por último, puedes crear tu instancia EC2 y pasar la propiedad userData, que se genera a partir de la configuración de CloudFormationInit.

Comments are closed.