Usar a plataforma Python do Elastic Beanstalk - AWS Elastic Beanstalk

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usar a plataforma Python do Elastic Beanstalk

Este tópico descreve como configurar, criar e executar suas aplicações Python no Elastic Beanstalk.

AWS Elastic Beanstalk suporta várias ramificações de plataforma para diferentes versões da linguagem de programação Python. Consulte Python no documento Plataformas do AWS Elastic Beanstalk para uma lista completa.

Os aplicativos web Python podem ser executados por trás de um servidor proxy com. WSGI O Elastic Beanstalk fornece o Gunicorn como servidor padrão. WSGI

Você pode adicionar um Procfile ao seu pacote de origem para especificar e configurar o WSGI servidor para seu aplicativo. Para obter detalhes, consulte Configurando o WSGI servidor com um Procfile no Elastic Beanstalk.

Você pode usar os arquivos Pipfile.lock e Pipfile criados pelo Pipenv para especificar dependências de pacotes Python e outros requisitos. Para obter detalhes sobre como especificar dependências, consulte Especificação de dependências usando um arquivo de requisitos no Elastic Beanstalk.

O Elastic Beanstalk fornece opções de configuração que podem ser usadas para personalizar o software que é executado nas instâncias do EC2 no ambiente Elastic Beanstalk. Você pode configurar variáveis de ambiente necessárias à aplicação, habilitar a alternância de logs para o Amazon S3 e mapear pastas da origem da aplicação que contenham arquivos estáticos para caminhos atendidos pelo servidor de proxy.

As opções de configuração estão disponíveis no console do Elastic Beanstalk para modificar a configuração de um ambiente em execução. Para evitar a perda da configuração do ambiente quando você terminá-la, você pode usar configurações salvas para salvar as configurações e depois aplicá-las a outro ambiente.

Para salvar as configurações no código-fonte, você pode incluir arquivos de configuração. As definições em arquivos de configuração são aplicadas sempre que você cria um ambiente ou implementa a aplicação. Você também pode usar arquivos de configuração para instalar pacotes, executar scripts e realizar outras operações de personalização da instância em implantações.

As configurações aplicadas no console do Elastic Beanstalk substituem as mesmas configurações em arquivos de configuração, caso elas existam. Isso permite que você tenha configurações padrão em arquivos de configuração e as substitua por configurações específicas de ambiente no console. Para obter mais informações sobre precedência e outros métodos de alteração das configurações, consulte Opções de configuração.

Para os pacotes do Python disponíveis no pip, você também pode incluir um arquivo de requisitos na raiz do código-fonte da aplicação. O Elastic Beanstalk instala todos os pacotes de dependência especificados em um arquivo de requisitos durante a implantação. Para obter detalhes, consulte Especificação de dependências usando um arquivo de requisitos no Elastic Beanstalk.

Para obter detalhes sobre as várias maneiras de estender uma plataforma do Elastic Beanstalk baseada em Linux, consulte Estender as plataformas Linux do Elastic Beanstalk.

Configurar o ambiente Python

As configurações da plataforma Python permitem que você ajuste o comportamento de suas instâncias da Amazon. EC2 Você pode editar a configuração da instância Amazon do ambiente do Elastic Beanstalk usando o console EC2 do Elastic Beanstalk.

Use o console do Elastic Beanstalk para definir AWS X-Ray as configurações de processo do Python, habilitar, habilitar a rotação de logs para o Amazon S3 e configurar variáveis que seu aplicativo possa ler do ambiente.

Como configurar o ambiente Python no console do Elastic Beanstalk
  1. Abra o console do Elastic Beanstalk e, na lista Regiões, selecione sua. Região da AWS

  2. No painel de navegação, selecione Ambientes e selecione o nome do ambiente na lista.

    nota

    Se você tiver muitos ambientes, use a barra de pesquisa para filtrar a lista de ambientes.

  3. No painel de navegação, escolha Configuration (Configuração).

  4. Na categoria de configuração Updates, monitoring, and logging (Atualizações, monitoramento e logs), escolha Edit (Editar).

Configurações do Python

  • Proxy server (Servidor de proxy): o servidor de proxy a ser usado nas instâncias de ambiente. Por padrão, é usado nginx.

  • WSGICaminho — O nome ou o caminho para o arquivo principal do aplicativo. Por exemplo, application.py ou django/wsgi.py.

  • NumProcesses— O número de processos a serem executados em cada instância do aplicativo.

  • NumThreads— O número de threads a serem executados em cada processo.

AWS X-Ray configurações

Opções de log

A seção Log Options tem duas configurações:

  • Instance profile (Perfil da instância): especifica o perfil da instância que tem permissão para acessar o bucket do Amazon S3 associado à sua aplicação.

  • Habilitar a rotação de arquivos de log para o Amazon S3 — Especifica se os arquivos de log das EC2 instâncias da Amazon do seu aplicativo são copiados para o bucket do Amazon S3 associado ao seu aplicativo.

Arquivos estáticos

Para melhorar o desempenho, você pode usar a seção Arquivos estáticos para configurar o servidor proxy para servir arquivos estáticos (por exemplo, HTML ou imagens) de um conjunto de diretórios dentro do seu aplicativo web. Defina, para cada diretório, o caminho virtual para mapeamento de diretórios. Quando o servidor de proxy recebe uma solicitação para um arquivo no caminho especificado, ele atende o arquivo diretamente em vez de rotear solicitação para seu aplicativo.

Para ver detalhes sobre como configurar arquivos estáticos usando arquivos de configuração ou o console do Elastic Beanstalk, consulte Fornecer arquivos estáticos.

Por padrão, o servidor de proxy em um ambiente Python atende todos os arquivos de uma pasta chamada static no caminho /static. Por exemplo, se a origem do aplicativo contiver um arquivo chamado logo.png em uma pasta chamada static, o servidor de proxy o servirá para os usuários em subdomain.elasticbeanstalk.com/static/logo.png. Você pode configurar mapeamentos adicionais conforme explicado nesta seção.

Propriedades de ambiente

Você pode usar as propriedades de ambiente para fornecer informações ao aplicativo e configurar variáveis de ambiente. Por exemplo, crie uma propriedade de ambiente chamada CONNECTION_STRING que especifica uma string de conexão que o aplicativo pode usar para se conectar a um banco de dados.

No ambiente do Python em execução no Elastic Beanstalk, esses valores podem ser acessados usando o dicionário do Python os.environ. Para obter mais informações, consulte http://docs.python. org/library/os.html.

Você pode usar um código semelhante ao mostrado abaixo para acessar as chaves e os parâmetros:

import os endpoint = os.environ['API_ENDPOINT']

As propriedades de ambiente também podem fornecer informações para uma framework. Por exemplo, crie uma propriedade chamada DJANGO_SETTINGS_MODULE para configurar o Django a usar um módulo de configurações específicas. Dependendo do ambiente, o valor pode ser development.settings, production.settings etc.

Consulte Propriedades de ambientes e outras configurações de software Para mais informações.

Namespaces de configuração do Python

Você pode usar um arquivo de configuração para definir opções de configuração e executar outras tarefas de configuração de instância durante implantações. Opções de configuração podem ser específicas da plataforma ou aplicáveis a todas as plataformas no serviço Elastic Beanstalk como um todo. As opções de configuração são organizadas em namespaces.

A plataforma Python define opções nos namespaces aws:elasticbeanstalk:environment:proxy, aws:elasticbeanstalk:environment:proxy:staticfiles e aws:elasticbeanstalk:container:python.

O arquivo de configuração de exemplo a seguir especifica as definições da opção de configuração para criar uma propriedade de ambiente chamada DJANGO_SETTINGS_MODULE, selecionar o servidor de proxy Apache, especificar duas opções de arquivos estáticos que mapeiam um diretório chamado statichtml para o caminho /html e um diretório chamado staticimages para o caminho /images e especificar configurações adicionais no namespace aws:elasticbeanstalk:container:python. Esse namespace contém opções que permitem especificar a localização do WSGI script no código-fonte e o número de threads e processos a serem executados. WSGI

option_settings: aws:elasticbeanstalk:application:environment: DJANGO_SETTINGS_MODULE: production.settings aws:elasticbeanstalk:environment:proxy: ProxyServer: apache aws:elasticbeanstalk:environment:proxy:staticfiles: /html: statichtml /images: staticimages aws:elasticbeanstalk:container:python: WSGIPath: ebdjango.wsgi:application NumProcesses: 3 NumThreads: 20
Observações
  • Se você estiver usando uma versão da plataforma Amazon Linux AMI Python (anterior ao Amazon Linux 2), substitua o valor WSGIPath por. ebdjango/wsgi.py O valor no exemplo funciona com o WSGI servidor Gunicorn, que não é compatível com as versões da AMI plataforma Amazon Linux.

  • Além disso, essas versões de plataforma mais antigas usam um namespace diferente para configurar arquivos estáticos: aws:elasticbeanstalk:container:python:staticfiles. Ele tem os mesmos nomes de opção e semântica que o namespace de arquivo estático padrão.

Os arquivos de configuração também são compatíveis com várias chaves para modificar mais o software nas instâncias do ambiente. Este exemplo usa a chave dos pacotes para instalar o Memcached com yum e comandos do contêiner para executar comandos que configuram o servidor durante a implantação:

packages: yum: libmemcached-devel: '0.31' container_commands: collectstatic: command: "django-admin.py collectstatic --noinput" 01syncdb: command: "django-admin.py syncdb --noinput" leader_only: true 02migrate: command: "django-admin.py migrate" leader_only: true 03wsgipass: command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf' 99customize: command: "scripts/customize.sh"

O Elastic Beanstalk oferece muitas opções de configuração para personalizar o ambiente. Além dos arquivos de configuração, você também pode definir opções de configuração usando o console, as configurações salvas, o EB CLI ou o. AWS CLI Consulte Opções de configuração Para mais informações.

O python3 executável

A versão do python3 executável disponível em EC2 instâncias nos ambientes Python do Elastic Beanstalk nem sempre corresponderá à mesma versão do Python usada pela plataforma. Por exemplo, na plataforma Python 3.12 AL2 023, aponta /usr/bin/python3 para Python 3.9. Isso ocorre porque o Python 3.9 é o sistema Python em 023. AL2 Para obter mais informações, consulte Python em AL2 023 no Guia do usuário do Amazon Linux 2023. Você pode acessar um executável correspondente à versão do Python usada pela plataforma em um local versionado (por /usr/bin/python3.12 exemplo) ou no diretório do bin ambiente virtual do aplicativo (por exemplo). /var/app/venv/staging-LQM1lest/bin/python3 A plataforma usa o executável correto do Python que corresponde à ramificação da plataforma.