Tenho uma instância do Amazon Elastic Compute Cloud (Amazon EC2) que executa o Amazon Linux 2 (AL2) ou Amazon Linux 2023 (AL2023). Quero criar um ambiente virtual Python 3 isolado com o AWS SDK para Python (Boto3) na minha instância.
Resolução
Instalar o Python 3
Conclua as etapas a seguir:
-
Use SSH para se conectar à sua instância DO Linux do EC2.
-
Para atualizar o índice do pacote, execute o seguinte comando:
yum check-update
Observação: o comando anterior também procura as atualizações disponíveis. Você não precisa atualizar outros pacotes para criar o ambiente Python 3.
-
Para determinar se seu host já tem o Python 3 instalado, execute o seguinte comando:
[ec2-user ~]$ yum list installed | grep -i python3
Se o Python 3 não estiver instalado, você receberá a seguinte saída:
[ec2-user ~]$ yum list installed | grep -i python3
[ec2-user ~]$ python3
-bash: python3: command not found
Se o Python 3 estiver instalado, você receberá a seguinte saída com base na sua distribuição:
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
-
Se o Python 3 não estiver instalado, execute o seguinte comando para instalar o pacote com o gerenciador de pacotes yum:
[ec2-user ~]$ sudo yum install python3 -y
Crie um ambiente virtual no diretório inicial ec2-user
Para criar o diretório de aplicação com o ambiente virtual dentro dele, execute o seguinte comando:
[ec2-user ~]$ python3 -m venv my_app/env
Observação: substitua my\ _app pelo nome do diretório da aplicação.
Ativar o ambiente virtual e instalar a biblioteca Boto3
Conclua as etapas a seguir:
-
Anexe um perfil do AWS Identity and Access Management (AWS IAM) à sua instância. O perfil deve ter uma política de permissões que permita que o SDK para Python (Boto3) execute as ações que sua configuração exige. Para obter outros métodos de autenticação, consulte a Configuração no site do Boto3.
-
Para ativar o ambiente, execute o seguinte comando:
[ec2-user ~]$ source ~/my_app/env/bin/activate
(env) [ec2-user ~]$
Observação: substitua my\ _app pelo nome do diretório da aplicação.
-
Para garantir que seu ambiente tenha o módulo pip mais recente instalado, execute o seguinte comando:
(env) [ec2-user ~]$ pip install pip --upgrade
-
Para instalar a biblioteca Boto3 em seu ambiente virtual, execute o seguinte comando:
(env) [ec2-user ~]$ pip install boto3
-
Para executar o Python, execute o seguinte 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 a biblioteca Boto3 e confirmar se ela funciona, execute o seguinte comando:
>>> import boto3 # no error
O exemplo de saída a seguir lista todos os buckets do Amazon Simple Storage Service (Amazon S3) dentro da conta da 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 sair do ambiente virtual, execute o seguinte comando:
(env) [ec2-user ~]$ deactivate
[ec2-user ~]$
-
Para ativar automaticamente o ambiente virtual ao fazer login, execute o seguinte comando para atualizar o arquivo ~/.bashrc:
[ec2-user ~]$ echo "source ${HOME}/my_app/env/bin/activate" >> ${HOME}/.bashrc
Observação: substitua my\ _app pelo nome do diretório da aplicação. O comando anterior ativa automaticamente seu ambiente virtual.
-
Para recarregar o ambiente bash do seu ambiente, execute o seguinte comando:
[ec2-user ~]$ source ~/.bashrc
Exemplo de saída:
(env) [ec2-user ~]$
Observação: o (env) mostra que você ativou corretamente o ambiente virtual. Agora, é possível usar o ambiente Python por padrão em todas as futuras sessões SSH e ao executar o comando source ~/bashrc.
Informações relacionadas
Atualizar o software da instância em sua instância AL2
Executar uma instância do EC2 usando o assistente de inicialização de instâncias no console
Virtualenv no site da Python Packaging Authority (PyPA)