

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 name="create-deploy-python-container"></a>

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](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.python) no documento *Plataformas do AWS Elastic Beanstalk * para uma lista completa.

As aplicações Web Python podem ser executadas por trás de um servidor proxy com WSGI. O Elastic Beanstalk fornece o [Gunicorn](https://gunicorn.org/) como o servidor WSGI padrão. 

Você pode adicionar um `Procfile` ao seu pacote de origem para especificar e configurar o servidor WSGI para sua aplicação. Para obter detalhes, consulte [Configuração do servidor WSGI com um Procfile no Elastic Beanstalk](python-configuration-procfile.md).

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](python-configuration-requirements.md).

O Elastic [Beanstalk fornece](command-options.md) opções de configuração que você pode usar para personalizar o software executado EC2 nas instâncias do seu 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](environment-configuration-methods-after.md). Para evitar a perda da configuração do ambiente quando você terminá-la, você pode usar [configurações salvas](environment-configuration-savedconfig.md) 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](ebextensions.md). 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](command-options.md).

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](python-configuration-requirements.md).

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](platforms-linux-extend.md).

## Configurar o ambiente Python
<a name="create-deploy-python-container-console"></a>

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](https://console.aws.amazon.com/elasticbeanstalk) Beanstalk e, **na** lista Regiões, selecione sua. Região da AWS

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

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

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

### Configurações do Python
<a name="python-console-settings"></a>
+ **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 do aplicativo.
+ **NumThreads**— O número de threads a serem executados em cada processo.

### AWS X-Ray configurações
<a name="python-console-xray"></a>
+ **Daemon X-Ray** — Execute o AWS X-Ray daemon para processar dados de rastreamento do. [AWS X-Ray SDK for Python](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-python.html)

### Opções de log
<a name="create-deploy-python-container.console.logoptions"></a>

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
<a name="python-platform-staticfiles"></a>

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](environment-cfg-staticfiles.md).

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
<a name="create-deploy-python-custom-container-envprop"></a>

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](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 [Variáveis de ambiente e outras configurações de software](environments-cfg-softwaresettings.md) para obter mais informações.

## Namespaces de configuração do Python
<a name="python-namespaces"></a>

Você pode usar um [arquivo de configuração](ebextensions.md) 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](command-options-specific.md) ou aplicáveis a [todas as plataformas](command-options-general.md) 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](command-options-specific.md#command-options-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](customize-containers-ec2.md). Este exemplo usa a chave dos [pacotes](customize-containers-ec2.md#linux-packages) para instalar o Memcached com `yum` e [comandos do contêiner](customize-containers-ec2.md#linux-container-commands) 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](command-options.md) para obter mais informações.

## O executável `python3`
<a name="python3-executable"></a>

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](https://docs.aws.amazon.com/linux/al2023/ug/python.html) do usuário do *Amazon Linux 2023*. Você pode acessar um executável correspondente à versão do Python usada pela plataforma em um local de com versionamento (por exemplo, `/usr/bin/python3.12`) ou no diretório do `bin` do ambiente virtual da aplicação (por exemplo, `/var/app/venv/staging-LQM1lest/bin/python3`). A plataforma usa o executável correto do Python que corresponde à ramificação da plataforma. 