

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á.

# Como instalar dependências do Python
<a name="working-dags-dependencies"></a>

Uma dependência do Python é qualquer pacote ou distribuição que não esteja incluído na instalação básica do Apache Airflow para sua versão do Apache Airflow em seu ambiente Amazon Managed Workflows para Apache Airflow. Este tópico descreve as etapas para instalar dependências do Python do Apache Airflow em seu ambiente do Amazon MWAA usando o arquivo `requirements.txt` em seu bucket do Amazon S3.

**Contents**
+ [Pré-requisitos](#working-dags-dependencies-prereqs)
+ [Como funciona](#working-dags-dependencies-how)
+ [Visão geral das dependências do Python](#working-dags-dependencies-overview)
  + [Limites de localização e tamanho das dependências do Python](#working-dags-dependencies-quota)
+ [Como criar um arquivo requirements.txt](#working-dags-dependencies-test-create)
  + [Etapa 1: teste as dependências do Python usando o utilitário Amazon MWAA CLI](#working-dags-dependencies-cli-utility)
  + [Etapa 2: criar o `requirements.txt`](#working-dags-dependencies-syntax-create)
+ [Como fazer upload de `requirements.txt` para o Amazon S3](#configuring-dag-dependencies-upload)
  + [Usando o AWS CLI](#configuring-dag-dependencies-upload-cli)
  + [Usar o console do Amazon S3](#configuring-dag-dependencies-upload-console)
+ [Como instalar dependências do Python em seu ambiente](#configuring-dag-dependencies-installing)
  + [Como especificar o caminho para `requirements.txt` no console Amazon MWAA (pela primeira vez)](#configuring-dag-dependencies-first)
  + [Como especificar a versão `requirements.txt` no console do Amazon MWAA](#working-dags-dependencies-mwaaconsole-version)
+ [Acessar logs para o `requirements.txt`](#working-dags-dependencies-logs)
+ [Próximas etapas](#working-dags-dependencies-next-up)

## Pré-requisitos
<a name="working-dags-dependencies-prereqs"></a>

Você precisará do seguinte antes de concluir as etapas nesta página.
+ **Permissões** — Seu administrador Conta da AWS deve ter concedido acesso à política de controle de MWAAFull ConsoleAccess acesso da [Amazon](access-policies.md#console-full-access) para seu ambiente. Além disso, seu ambiente Amazon MWAA deve ser autorizado pela sua [função de execução](mwaa-create-role.md) para acessar os AWS recursos usados pelo seu ambiente.
+ **Acesso**: se você precisar de acesso a repositórios públicos para instalar dependências diretamente no servidor web, seu ambiente deverá ser configurado com acesso ao servidor Web de **rede pública**. Para obter mais informações, consulte [Modos de acesso do Apache Airflow](configuring-networking.md).
+ **Configuração do Amazon S3** *— O bucket do [Amazon S3](mwaa-s3-bucket.md) usado para armazenar DAGs seus plug-ins `plugins.zip` personalizados e dependências do Python deve ser configurado *com* acesso público `requirements.txt` bloqueado e controle de versão ativado.*

## Como funciona
<a name="working-dags-dependencies-how"></a>

No Amazon MWAA, você instala todas as dependências do Python fazendo o upload de um arquivo `requirements.txt` no bucket do Amazon S3 e então especificando a versão do arquivo no console do Amazon MWAA sempre que atualiza o arquivo. O Amazon MWAA executa `pip3 install -r requirements.txt` para instalar as dependências do Python no programador do Apache Airflow e em cada um dos operadores.

Para executar dependências do Python em seu ambiente, você deve fazer três coisas:

1. Crie um arquivo `requirements.txt` localmente.

1. Faça upload do `requirements.txt` local para seu bucket no Amazon S3.

1. Especifique a versão desse arquivo no campo **Arquivo de requisitos** no console do Amazon MWAA.

**nota**  
Se for a primeira vez que você cria e faz o upload de um `requirements.txt` para o seu bucket do Amazon S3, também será preciso especificar o caminho para o arquivo no console do Amazon MWAA. Você só precisa concluir esta etapa uma vez.

## Visão geral das dependências do Python
<a name="working-dags-dependencies-overview"></a>

Você pode instalar extras do Apache Airflow e outras dependências do Python a partir do Python Package PyPi Index (.org), do Python `.whl` wheels () ou das dependências do Python hospedadas em um repositório privado compatível com /PEP-503 em seu ambiente. PyPi

### Limites de localização e tamanho das dependências do Python
<a name="working-dags-dependencies-quota"></a>

O agendador e os operadores do Apache Airflow procuram os pacotes no arquivo `requirements.txt` e os pacotes são instalados no ambiente em `/usr/local/airflow/.local/bin`.
+ **Limites de tamanho**. Recomendamos um arquivo `requirements.txt` que faça referência a bibliotecas cujo tamanho combinado seja menor que 1 GB. Quanto mais bibliotecas o Amazon MWAA precisar instalar, maior será o tempo de *inicialização* em um ambiente. Embora o Amazon MWAA não limite explicitamente o tamanho das bibliotecas instaladas, se as dependências não puderem ser instaladas em dez minutos, o serviço Fargate atingirá o tempo limite e tentará reverter o ambiente para um estado estável.

## Como criar um arquivo requirements.txt
<a name="working-dags-dependencies-test-create"></a>

As etapas a seguir descrevem as etapas que recomendamos para criar um arquivo requirements.txt localmente.

### Etapa 1: teste as dependências do Python usando o utilitário Amazon MWAA CLI
<a name="working-dags-dependencies-cli-utility"></a>
+ O utilitário da interface de linha de comandos (CLI) replica localmente um ambiente do Amazon Managed Workflows for Apache Airflow.
+ A CLI cria localmente uma imagem de contêiner Docker semelhante a uma imagem de produção do Amazon MWAA. Você pode usar isso para executar um ambiente Apache Airflow local para desenvolver e DAGs testar plug-ins e dependências personalizados antes da implantação no Amazon MWAA.
+ Para executar a CLI, consulte on. [aws-mwaa-docker-images](https://github.com/aws/amazon-mwaa-docker-images) GitHub

### Etapa 2: criar o `requirements.txt`
<a name="working-dags-dependencies-syntax-create"></a>

A seção a seguir descreve como especificar dependências do Python do [Python Package Index](https://pypi.org/) em um arquivo `requirements.txt`.

------
#### [ Apache Airflow v3 ]

1. **Testar localmente**. Adicione bibliotecas adicionais de forma iterativa para encontrar a combinação certa de pacotes e suas versões, antes de criar um arquivo `requirements.txt`. Para executar o utilitário Amazon MWAA CLI, consulte on. [aws-mwaa-docker-images](https://github.com/aws/amazon-mwaa-docker-images) GitHub

1. **Revise os extras do pacote Apache Airflow**. Para acessar uma lista dos pacotes instalados para o Apache Airflow v3 no Amazon MWAA, consulte no site. [aws-mwaa-docker-images `requirements.txt`](https://github.com/aws/amazon-mwaa-docker-images/blob/main/requirements.txt) GitHub 

1. **Adicione uma declaração de restrições**. Adicione o arquivo de restrições do seu ambiente Apache Airflow v3 na parte superior do seu arquivo. `requirements.txt` Os arquivos de restrições do Apache Airflow especificam as versões do provedor disponíveis no momento de um lançamento do Apache Airflow.

    No exemplo a seguir, substitua *\$1environment-version\$1* pelo número da versão do seu ambiente e *\$1Python-version\$1* pela versão do Python compatível com seu ambiente. 

   Para obter informações sobre a versão do Python compatível com o ambiente do Apache Airflow, consulte [Versões do Apache Airflow](airflow-versions.md#airflow-versions-official). 

   ```
   --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-{Airflow-version}/constraints-{Python-version}.txt"
   ```

    Se o arquivo de restrições determinar que o pacote `xyz==1.0` não é compatível com outros pacotes em seu ambiente, `pip3 install` não conseguirá impedir que bibliotecas incompatíveis sejam instaladas em seu ambiente. Se a instalação falhar em qualquer pacote, você poderá acessar os registros de erros de cada componente do Apache Airflow (o agendador, o trabalhador e o servidor web) no fluxo de log correspondente em Logs. CloudWatch Para obter mais informações sobre tipos de log, consulte [Acessando registros do Airflow na Amazon CloudWatch](monitoring-airflow.md). 

1. **Pacotes do Apache Airflow**. Adicione os [extras do pacote](http://airflow.apache.org/docs/apache-airflow/2.5.1/extra-packages-ref.html) e a versão (`==`). Isso ajuda a evitar que pacotes com o mesmo nome, mas com versões diferentes, sejam instalados em seu ambiente.

   ```
   apache-airflow[package-extra]==2.5.1
   ```

1. **Bibliotecas Python**. Adicione o nome do pacote e a versão (`==`) em seu arquivo `requirements.txt`. Isso ajuda a evitar que uma atualização futura de última hora do [PyPidomínio.org](https://pypi.org) seja aplicada automaticamente.

   ```
   library == version
   ```  
**Example Boto3 e psycopg2-binary**  

   Esse exemplo de código é fornecido para fins de demonstração. As bibliotecas boto e psycopg2-binary estão incluídas na instalação básica do Apache Airflow v3 e não precisam ser especificadas em um arquivo `requirements.txt`.

   ```
   boto3==1.17.54
   boto==2.49.0
   botocore==1.20.54
   psycopg2-binary==2.8.6
   ```

   [Se um pacote for especificado sem uma versão, o Amazon MWAA instalará a versão mais recente do pacote em .org. PyPi](https://pypi.org) Esta versão pode entrar em conflito com outros pacotes em seu `requirements.txt`.

------
#### [ Apache Airflow v2 ]

1. **Testar localmente**. Adicione bibliotecas adicionais de forma iterativa para encontrar a combinação certa de pacotes e suas versões, antes de criar um arquivo `requirements.txt`. Para executar o utilitário Amazon MWAA CLI, consulte on. [aws-mwaa-docker-images](https://github.com/aws/amazon-mwaa-docker-images) GitHub

1. **Revise os extras do pacote Apache Airflow**. Para acessar uma lista dos pacotes instalados para o Apache Airflow v2 no Amazon MWAA, acesse no site. [aws-mwaa-docker-images `requirements.txt`](https://github.com/aws/amazon-mwaa-docker-images/blob/main/requirements.txt) GitHub 

1. **Adicione uma declaração de restrições**. Adicione o arquivo de restrições do seu ambiente Apache Airflow v2 na parte superior do seu arquivo `requirements.txt`. Os arquivos de restrições do Apache Airflow especificam as versões do provedor disponíveis no momento de um lançamento do Apache Airflow.

    A partir do Apache Airflow v2.7.2, seu arquivo de requisitos deve incluir uma declaração `--constraint`. Se você não fornecer uma restrição, o Amazon MWAA especificará uma para garantir que os pacotes listados em seus requisitos sejam compatíveis com a versão do Apache Airflow que você está usando. 

   No exemplo a seguir, substitua *\$1environment-version\$1* pelo número da versão do seu ambiente e *\$1Python-version\$1* pela versão do Python compatível com seu ambiente.

   Para obter informações sobre a versão do Python compatível com o ambiente do Apache Airflow, consulte [Versões do Apache Airflow](airflow-versions.md#airflow-versions-official).

   ```
   --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-{Airflow-version}/constraints-{Python-version}.txt"
   ```

   Se o arquivo de restrições determinar que o pacote `xyz==1.0` não é compatível com outros pacotes em seu ambiente, `pip3 install` não conseguirá impedir que bibliotecas incompatíveis sejam instaladas em seu ambiente. Se a instalação falhar em qualquer pacote, você poderá acessar os registros de erros de cada componente do Apache Airflow (o agendador, o trabalhador e o servidor web) no fluxo de log correspondente em Logs. CloudWatch Para obter mais informações sobre tipos de log, consulte [Acessando registros do Airflow na Amazon CloudWatch](monitoring-airflow.md).

1. **Pacotes do Apache Airflow**. Adicione os [extras do pacote](http://airflow.apache.org/docs/apache-airflow/2.5.1/extra-packages-ref.html) e a versão (`==`). Isso ajuda a evitar que pacotes com o mesmo nome, mas com versões diferentes, sejam instalados em seu ambiente.

   ```
   apache-airflow[package-extra]==2.5.1
   ```

1. **Bibliotecas Python**. Adicione o nome do pacote e a versão (`==`) em seu arquivo `requirements.txt`. Isso ajuda a evitar que uma atualização futura de última hora do [PyPidomínio.org](https://pypi.org) seja aplicada automaticamente.

   ```
   library == version
   ```  
**Example Boto3 e psycopg2-binary**  

   Esse exemplo de código é fornecido para fins de demonstração. As bibliotecas boto e psycopg2-binary estão incluídas na instalação básica do Apache Airflow v2 e não precisam ser especificadas em um arquivo `requirements.txt`.

   ```
   boto3==1.17.54
   boto==2.49.0
   botocore==1.20.54
   psycopg2-binary==2.8.6
   ```

   [Se um pacote for especificado sem uma versão, o Amazon MWAA instalará a versão mais recente do pacote em .org. PyPi](https://pypi.org) Esta versão pode entrar em conflito com outros pacotes em seu `requirements.txt`.

------

## Como fazer upload de `requirements.txt` para o Amazon S3
<a name="configuring-dag-dependencies-upload"></a>

Você pode usar o console do Amazon S3 ou o AWS Command Line Interface (AWS CLI) para carregar um `requirements.txt` arquivo no seu bucket do Amazon S3.

### Usando o AWS CLI
<a name="configuring-dag-dependencies-upload-cli"></a>

O AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que você pode usar para interagir com AWS serviços usando comandos em seu shell de linha de comando. Para concluir as etapas nesta página, é necessário o seguinte:
+ [AWS CLI — Instale a versão 2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html).
+ [AWS CLI — Configuração rápida com `aws configure`](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html).

**Para fazer o upload usando o AWS CLI**

1. Use o comando a seguir para listar todos os seus buckets do Amazon S3.

   ```
   aws s3 ls
   ```

1. Use o seguinte comando para listar os arquivos e pastas no bucket do Amazon S3 para seu ambiente.

   ```
   aws s3 ls s3://YOUR_S3_BUCKET_NAME
   ```

1. O comando a seguir faz upload de um arquivo `requirements.txt` para um bucket do Amazon S3.

   ```
   aws s3 cp requirements.txt s3://amzn-s3-demo-bucket/requirements.txt
   ```

### Usar o console do Amazon S3
<a name="configuring-dag-dependencies-upload-console"></a>

O console do Amazon S3 é uma interface de usuário baseada na Web que permite criar e gerenciar os recursos no bucket do Amazon S3.

**Fazer o upload usando o console do Amazon S3**

1. Abra a [página Ambientes](https://console.aws.amazon.com/mwaa/home#/environments) no console do Amazon MWAA.

1. Escolha um ambiente.

1. Selecione o link do **bucket do S3** no **código do DAG no painel do S3** para abrir seu bucket de armazenamento no console.

1. Escolha **Carregar**.

1. Escolha **Adicionar arquivo**.

1. Selecione a cópia local do seu `requirements.txt` e escolha **Carregar**.

## Como instalar dependências do Python em seu ambiente
<a name="configuring-dag-dependencies-installing"></a>

Esta seção descreve como instalar as dependências que você fez upload no seu bucket do Amazon S3 especificando o caminho para o arquivo requirements.txt e especificando a versão do arquivo requirements.txt sempre que for atualizado.

### Como especificar o caminho para `requirements.txt` no console Amazon MWAA (pela primeira vez)
<a name="configuring-dag-dependencies-first"></a>

Se for a primeira vez que você cria e faz o upload de um `requirements.txt` para o seu bucket do Amazon S3, também será preciso especificar o caminho para o arquivo no console do Amazon MWAA. Você só precisa concluir esta etapa uma vez.

1. Abra a [página Ambientes](https://console.aws.amazon.com/mwaa/home#/environments) no console do Amazon MWAA.

1. Escolha um ambiente.

1. Escolha **Editar**.

1. No **código DAG no painel do Amazon S3**, escolha **Procurar no S3** ao lado do campo **Arquivo de requisitos - opcional**.

1. Selecione o arquivo `requirements.txt` no bucket do Amazon S3.

1. Selecione **Escolher**.

1. Selecione **Avançar**, **Atualizar ambiente**.

É possível começar a usar os novos pacotes logo após a conclusão da atualização do ambiente.

### Como especificar a versão `requirements.txt` no console do Amazon MWAA
<a name="working-dags-dependencies-mwaaconsole-version"></a>

É necessário especificar a versão do seu arquivo `requirements.txt` no console do Amazon MWAA sempre que você fizer o upload de uma nova versão do seu `requirements.txt` no bucket do Amazon S3.

1. Abra a [página Ambientes](https://console.aws.amazon.com/mwaa/home#/environments) no console do Amazon MWAA.

1. Escolha um ambiente.

1. Escolha **Editar**.

1. No painel **Código DAG no Amazon S3 **, escolha uma versão do `requirements.txt` na lista suspensa.

1. Selecione **Avançar**, **Atualizar ambiente**.

É possível começar a usar os novos pacotes logo após a conclusão da atualização do ambiente.

## Acessar logs para o `requirements.txt`
<a name="working-dags-dependencies-logs"></a>

Você pode visualizar os logs do Apache Airflow para o agendador ao agendar seus fluxos de trabalho e analisar sua pasta `dags`. As etapas a seguir descrevem como abrir o grupo de registros para o agendador no console do Amazon MWAA e acessar os registros do Apache Airflow no console Logs. CloudWatch 

**Para acessar os logs para um `requirements.txt`**

1. Abra a [página Ambientes](https://console.aws.amazon.com/mwaa/home#/environments) no console do Amazon MWAA.

1. Escolha um ambiente.

1. Escolha **grupo de logs de agendador do Airflow** no painel **Monitoramento**.

1. Escolha o log `requirements_install_ip` em **Fluxos de logs**.

1. Consulte a lista de pacotes que foram instalados no ambiente em `/usr/local/airflow/.local/bin`. Por exemplo:

   ```
   Collecting appdirs==1.4.4 (from -r /usr/local/airflow/.local/bin (line 1))
   Downloading https://files.pythonhosted.org/packages/3b/00/2344469e2084fb28kjdsfiuyweb47389789vxbmnbjhsdgf5463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl  
   Collecting astroid==2.4.2 (from -r /usr/local/airflow/.local/bin (line 2))
   ```

1. Analise a lista de pacotes e verifique se algum deles encontrou algum erro durante a instalação. Se algo der errado, pode ocorrer um erro semelhante ao seguinte:

   ```
   2021-03-05T14:34:42.731-07:00
   No matching distribution found for LibraryName==1.0.0 (from -r /usr/local/airflow/.local/bin (line 4))
   No matching distribution found for LibraryName==1.0.0 (from -r /usr/local/airflow/.local/bin (line 4))
   ```

## Próximas etapas
<a name="working-dags-dependencies-next-up"></a>

Teste seus DAGs plug-ins personalizados e dependências do Python localmente usando on. [aws-mwaa-docker-images](https://github.com/aws/amazon-mwaa-docker-images) GitHub