Tengo una instancia de Amazon Elastic Compute Cloud (Amazon EC2) que se ejecuta en Amazon Linux 2 (AL2) o Amazon Linux 2023 (AL2023). Quiero crear un entorno virtual de Python 3 aislado con el AWS SDK para Python (Boto3) en mi instancia.
Resolución
Instalación de Python 3
Sigue estos pasos:
-
Usa SSH para conectarte a tu instancia de Linux de EC2.
-
Para actualizar el índice de paquetes, ejecuta el siguiente comando:
yum check-update
Nota: El comando anterior también busca las actualizaciones disponibles. No es necesario actualizar otros paquetes para crear el entorno de Python 3.
-
Para determinar si tu host ya tiene instalado Python 3, ejecuta el siguiente comando:
[ec2-user ~]$ yum list installed | grep -i python3
Si Python 3 no está instalado, recibirás el siguiente resultado:
[ec2-user ~]$ yum list installed | grep -i python3
[ec2-user ~]$ python3
-bash: python3: command not found
Si Python 3 está instalado, recibirás el siguiente resultado según tu distribución:
AL2:
[ec2-user ~]$ yum list installed | grep -i python3
python3.x86_64 3.7.4-1.amzn2.0.4 @amzn2-core
python3-libs.x86_64 3.7.4-1.amzn2.0.4 @amzn2-core
python3-pip.noarch 9.0.3-1.amzn2.0.1 @amzn2-core
python3-setuptools.noarch 38.4.0-3.amzn2.0.6 @amzn2-core
[ec2-user ~]$ whereis python3
python3: //usr/bin/python3 /usr/bin/python3.7 /usr/bin/python3.7m /usr/lib/python3.7 /usr/lib64/python3.7 /usr/include/python3.7m /usr/share/man/man1/python3.1.gz
AL2023:
[ec2-user ~]$ yum list installed | grep -i python3
python3.x86_64 3.9.21-1.amzn2023.0.3 @System
python3-pip-wheel.noarch 21.3.1-2.amzn2023.0.11 @System
python3-libs.x86_64 3.9.21-1.amzn2023.0.3 @System
python3-setuptools.noarch 59.6.0-2.amzn2023.0.5 @System
[ec2-user ~]$ whereis python3
python3: /usr/bin/python3 /usr/share/man/man1/python3.1.gz
-
Si Python 3 no está instalado, ejecuta el siguiente comando para instalar el paquete con el administrador de paquetes yum:
[ec2-user ~]$ sudo yum install python3 -y
Creación de un entorno virtual en el directorio principal de ec2-user
Para crear el directorio de la aplicación con el entorno virtual en su interior, ejecuta el siguiente comando:
[ec2-user ~]$ python3 -m venv my_app/env
Nota: Sustituye my_app por el nombre del directorio de la aplicación.
Activación del entorno virtual e instalación de la biblioteca de Boto3
Sigue estos pasos:
-
Adjunta un rol de AWS Identity and Access Management (IAM) a tu instancia. El rol debe tener una política de permisos que permita al SDK para Python (Boto3) realizar las acciones que requiere la configuración. Para ver otros métodos de autenticación, consulta la Configuración en el sitio web de Boto3.
-
Para activar el entorno, ejecuta el siguiente comando:
[ec2-user ~]$ source ~/my_app/env/bin/activate
(env) [ec2-user ~]$
Nota: Sustituye my_app por el nombre del directorio de la aplicación.
-
Para asegurarte de que tu entorno tiene instalado el módulo pip más reciente, ejecuta el siguiente comando:
(env) [ec2-user ~]$ pip install pip --upgrade
-
Para instalar la biblioteca de Boto3 en tu entorno virtual, ejecuta el siguiente comando:
(env) [ec2-user ~]$ pip install boto3
-
Para ejecutar Python, ejecuta el siguiente comando:
(env) [ec2-user ~]$ python
Python 3.7.4 (default, Dec 13 2019, 01:02:18)[GCC 7.3.1 20180712 (Red Hat 7.3.1-6)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>>
-
Para importar la biblioteca de Boto3 y confirmar que funciona, ejecuta el siguiente comando:
>>> import boto3 # no error
En el siguiente ejemplo de resultado se enumeran todos los buckets de Amazon Simple Storage Service (Amazon S3) de la cuenta de AWS:
>>> import boto3 # no error
>>> s3 = boto3.resource('s3')
>>> for bucket in s3.buckets.all():
... print(bucket.name)
... # Press Enter twice to execute the loop
>>> exit() # Then type exit() to quit Python shell
-
Para salir del entorno virtual, ejecuta el siguiente comando:
(env) [ec2-user ~]$ deactivate
[ec2-user ~]$
-
Para activar automáticamente el entorno virtual al iniciar sesión, ejecuta el siguiente comando para actualizar el archivo ~/.bashrc:
[ec2-user ~]$ echo "source ${HOME}/my_app/env/bin/activate" >> ${HOME}/.bashrc
Nota: Sustituye my_app por el nombre del directorio de la aplicación. El comando anterior activa automáticamente el entorno virtual.
-
Para volver a cargar el entorno bash de tu entorno, ejecuta el siguiente comando:
[ec2-user ~]$ source ~/.bashrc
Resultado de ejemplo:
(env) [ec2-user ~]$
Nota: (env) muestra que activaste correctamente el entorno virtual. Ahora puedes usar el entorno de Python de forma predeterminada en todas las sesiones SSH futuras y cuando ejecutes el comando source ~/bashrc.
Información relacionada
Actualización del software de instancia en la instancia de AL2
Inicio de una instancia de EC2 mediante el asistente de iniciación de instancias de la consola
Virtualenv en el sitio web de Python Packaging Authority (PYPA)