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 gerenciar dependências do Python em requirements.txt
Este tópico descreve como instalar e gerenciar dependências do Python em um requirements.txt arquivo para um ambiente Amazon Managed Workflows para Apache Airflow.
Sumário
Teste DAGs usando o utilitário Amazon MWAA CLI
-
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 local do Apache Airflow 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
GitHub
Instalando dependências do Python usando o formato de arquivo de requisitos PyPi .org
A seção a seguir descreve as diferentes maneiras de instalar dependências do Python de acordo com o Formato de Arquivo de Requisitos PyPi
Opção 1: dependências do Python do Python Package Index
A seção a seguir descreve como especificar dependências do Python do Python Package Indexrequirements.txt.
Opção dois: wheel do Python (.whl)
O wheel do Python é um formato de pacote projetado para enviar bibliotecas com artefatos compilados. Há vários benefícios em usar pacotes wheel como um método para instalar dependências no Amazon MWAA:
-
Instalação mais rápida: os arquivos WHL são copiados para o contêiner como um único ZIP e depois instalados localmente, sem precisar baixar um por um.
-
Menos conflitos: você pode determinar a compatibilidade de versões de seus pacotes com antecedência. Como resultado, não há necessidade de
pippara elaborar recursivamente versões compatíveis. -
Mais resiliência: com bibliotecas hospedadas externamente, os requisitos posteriores podem mudar, resultando em incompatibilidade de versões entre contêineres em um ambiente do Amazon MWAA. Por não depender de uma fonte externa para dependências, cada contêiner tem as mesmas bibliotecas, independentemente de quando cada contêiner é instanciado.
Recomendamos os seguintes métodos para instalar dependências do Python a partir de um arquivo wheel do Python (.whl) no seu arquivo requirements.txt.
Métodos
Como usar o arquivo plugins.zip em um bucket do Amazon S3
O agendador, os trabalhadores e o servidor web do Apache Airflow (para o Apache Airflow v2.2.2 e versões posteriores) pesquisam plug-ins personalizados durante a inicialização no contêiner Fargate gerenciado para seu ambiente em. AWS/usr/local/airflow/plugins/ Esse processo começa antes de *pip3 install -r requirements.txt do Amazon MWAA para as dependências do Python e da inicialização do serviço no Apache Airflow. Um plugins.zip arquivo pode ser usado para qualquer arquivo que você não queira que seja alterado continuamente durante a execução do ambiente ou que não queira conceder acesso aos usuários que escrevem DAGs. Por exemplo, arquivos de wheel de biblioteca Python, arquivos PEM de certificado e arquivos YAML de configuração.
A seção a seguir descreve como instalar um wheel que está no arquivo plugins.zip em seu bucket do Amazon S3.
-
Baixe os arquivos WHL necessários. Você pode usar
pip downloadcom os existentes requirements.txtno Amazon MWAA ou em aws-mwaa-docker-imagesoutro contêiner Amazon Linux 2 para resolver e baixar os arquivos Python wheel necessários. pip3 download -r "$AIRFLOW_HOME/dags/requirements.txt" -d "$AIRFLOW_HOME/plugins"cd "$AIRFLOW_HOME/plugins"zip "$AIRFLOW_HOME/plugins.zip" * -
Especifique o caminho em seu
requirements.txt. Especifique o diretório de plug-ins na parte superior do seu requirements.txt usando--find-linkse instrua a pipnão instalar de outras fontes usando--no-index, conforme listado no código a seguir: --find-links /usr/local/airflow/plugins --no-indexexemplo wheel em requirements.txt
O exemplo a seguir pressupõe que você tenha carregado o wheel em um arquivo
plugins.zipna raiz do seu bucket do Amazon S3. Por exemplo:--find-links /usr/local/airflow/plugins --no-index numpyO Amazon MWAA busca o wheel
numpy-1.20.1-cp37-cp37m-manylinux1_x86_64.whlda pastapluginse o instala em seu ambiente.
Como usar um arquivo WHL hospedado em uma URL
A seção a seguir descreve como instalar um wheel hospedado em uma URL. A URL deve ser acessível publicamente ou de dentro do Amazon VPC personalizado que você especificou para seu ambiente do Amazon MWAA.
-
Forneça um URL. Forneça o URL de um wheel em seu arquivo
requirements.txt.exemplo arquivo wheel em um URL público
O exemplo a seguir baixa um wheel de um site público.
--find-links https://files.pythonhosted.org/packages/ --no-indexO Amazon MWAA busca o wheel a partir da URL que você especificou e a instala em seu ambiente.
nota
URLs não são acessíveis a partir de servidores web privados, instalando os requisitos no Amazon MWAA v2.2.2 e versões posteriores.
Como criar arquivos WHL a partir de um DAG
Se você tem um servidor web privado usando o Apache Airflow v2.2.2 ou posterior e não consegue instalar os requisitos porque seu ambiente não tem acesso a repositórios externos, você pode usar o seguinte DAG para pegar seus requisitos existentes do Amazon MWAA e empacotá-los no Amazon S3:
from airflow import DAG from airflow.operators.bash_operator import BashOperator from airflow.utils.dates import days_ago S3_BUCKET = 'my-s3-bucket' S3_KEY = 'backup/plugins_whl.zip' with DAG(dag_id="create_whl_file", schedule_interval=None, catchup=False, start_date=days_ago(1)) as dag: cli_command = BashOperator( task_id="bash_command", bash_command=f"mkdir /tmp/whls;pip3 download -r /usr/local/airflow/requirements/requirements.txt -d /tmp/whls;zip -j /tmp/plugins.zip /tmp/whls/*;aws s3 cp /tmp/plugins.zip s3://amzn-s3-demo-bucket/{S3_KEY}" )
Depois de executar o DAG, use esse novo arquivo como seu plugins.zip do Amazon MWAA, opcionalmente, empacotado com outros plug-ins. Em seguida, atualize seus requirements.txt precedidos por --find-links /usr/local/airflow/plugins e --no-index sem adicionar --constraint.
Esse método você pode usar para usar as mesmas bibliotecas offline.
Opção três: dependências do Python hospedadas em um repositório privado PyPi compatível com /PEP-503
A seção a seguir descreve como instalar um extra do Apache Airflow hospedado em uma URL privada com autenticação.
-
Adicione seu nome de usuário e senha como opções de configuração do Apache Airflow. Por exemplo:
-
foo.user:YOUR_USER_NAME -
foo.pass:YOUR_PASSWORD
-
-
crie seu arquivo
requirements.txt. Substitua os espaços reservados no exemplo a seguir pelo seu URL privado e pelo nome de usuário e senha que você adicionou como opções de configuração do Apache Airflow. Por exemplo:--index-url https://${AIRFLOW__FOO__USER}:${AIRFLOW__FOO__PASS}@my.privatepypi.com -
adicione outras bibliotecas ao seu arquivo
requirements.txt. Por exemplo:--index-url https://${AIRFLOW__FOO__USER}:${AIRFLOW__FOO__PASS}@my.privatepypi.com my-private-package==1.2.3
Como habilitar logs no console do Amazon MWAA
A função de execução do seu ambiente Amazon MWAA precisa de permissão para enviar registros para CloudWatch Logs. Para atualizar as permissões de uma função de execução, consultePerfil de execução do Amazon MWAA.
Você pode ativar os logs do Apache Airflow no nível INFO, WARNING, ERROR e CRITICAL. Quando você escolhe um nível de log, o Amazon MWAA envia logs desse nível e de todos os níveis mais altos de severidade. Por exemplo, se você habilitar registros no INFO nível, o Amazon MWAA enviará INFO registros e WARNINGERROR, e níveis de CRITICAL log para CloudWatch Logs. Recomendamos habilitar os registros do Apache Airflow no nível para que INFO o agendador acesse os registros recebidos para o. requirements.txt
Acessando registros no console CloudWatch de registros
Você pode acessar os registros do Apache Airflow para o agendador, agendando seus fluxos de trabalho e analisando 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 registros de um requirements.txt
-
Abra a página Ambientes
no console do Amazon MWAA. -
Escolha um ambiente.
-
Escolha grupo de logs de agendador do Airflow no painel Monitoramento.
-
Escolha o log
requirements_install_ipem Fluxos de logs. -
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)) -
Analise a lista de pacotes e verifique se algum deles encontrou algum erro durante a instalação. Se algo der errado, você poderá receber 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))
Acessando erros na interface do usuário do Apache Airflow
Você também pode verificar sua interface do Apache Airflow para identificar se um erro está relacionado a outro problema. O erro mais comum que você pode encontrar com o Apache Airflow no Amazon MWAA é:
Broken DAG: No module namedx
Se você encontrar esse erro na sua interface de usuário do Apache Airflow, provavelmente está faltando uma dependência necessária em seu arquivo. requirements.txt
Faça login no Apache Airflow
Você precisa de Política de acesso ao Apache Airflow UI: Amazon MWAAWeb ServerAccess permissões para que seu Conta da AWS in AWS Identity and Access Management (IAM) acesse sua interface de usuário do Apache Airflow.
Para acessar sua IU do Apache Airflow
-
Abra a página Ambientes
no console do Amazon MWAA. -
Escolha um ambiente.
-
Escolha Abrir a IU do Airflow.
Cenários de exemplo de requirements.txt
Você pode misturar e combinar diferentes formatos no seu requirements.txt. O exemplo a seguir usa uma combinação das diferentes formas de instalar extras.
exemplo Extras em PyPi .org e um URL público
Você precisa usar a --index-url opção ao especificar pacotes de PyPi .org, além de pacotes em uma URL pública, como um repositório personalizado compatível com PEP 503. URLs
aws-batch == 0.6 phoenix-letter >= 0.3 --index-url http://dist.repoze.org/zope2/2.10/simple zopelib