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

A plataforma Python do AWS Elastic Beanstalk é um conjunto de versões da plataforma para aplicações web Python que podem ser executadas com um servidor de proxy com WSGI. Cada ramificação da plataforma corresponde a uma versão do Python, como Python 3.8.

Começando com as ramificações de plataforma do Amazon Linux 2, o Elastic Beanstalk fornece o Gunicorn como o servidor WSGI padrão.

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

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.

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 do 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 mais detalhes, consulte Especificação de dependências usando um arquivo de requisitos.

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 das instâncias do Amazon EC2. É possível editar a configuração da instância do Amazon EC2 do ambiente do Elastic Beanstalk usando o console do Elastic Beanstalk.

Use o console do Elastic Beanstalk para configurar as configurações do processo Python, habilitar o AWS X-Ray, habilitar a alternância de logs para o Amazon S3 e configurar variáveis que a aplicação pode ler no ambiente.

Como configurar o ambiente Python no console do Elastic Beanstalk
  1. Abra o console do Elastic Beanstalk e, na lista Regions (Regiões), selecione a 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.

  • WSGI Path (Caminho do WSGI): o nome ou o caminho para o arquivo de aplicação principal. Por exemplo, application.py ou django/wsgi.py.

  • NumProcesses: o número de processos a serem executados em cada instância da aplicação.

  • NumThreads: o número de threads a serem executados em cada processo.

Configurações do AWS X-Ray

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.

  • Enable log file rotation to Amazon S3 (Habilitar a rotação de arquivos de log para o Amazon S3): especifica se os arquivos de log das instâncias do Amazon EC2 da aplicação serão copiados para o bucket do Amazon S3 associado a ela.

Arquivos estáticos

Para melhorar a performance, você pode usar a seção Static files (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 da aplicação 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 obter 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. As opções de configuração podem ser definidas pelo serviço Elastic Beanstalk ou pela plataforma utilizada, e 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 script de WSGI no código-fonte e o número de threads e processos para executar no 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 de plataforma Python da AMI do Amazon Linux (anterior ao Amazon Linux 2), substitua o valor WSGIPath por ebdjango/wsgi.py. O valor no exemplo funciona com o servidor WSGI do Gunicorn, que não é mais compatível nas versões da plataforma da AMI do 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 de arquivos de configuração, você também pode definir opções de configuração usando o console, configurações salvas, a EB CLI ou a AWS CLI. Consulte Opções de configuração para obter mais informações.