Como instalar dependências do Python
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.
Sumário
Pré-requisitos
Você precisará do seguinte antes de concluir as etapas nesta página.
-
Permissões: sua Conta da AWS deve ter tido o acesso concedido por seu administrador para a política de controle de acesso AmazonMWAAFullConsoleAccess para seu ambiente. Além disso, seu ambiente Amazon MWAA deve ser autorizado pela seu perfil de execução para acessar os recursos da AWS 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.
-
Configuração do Amazon S3: o bucket do Amazon S3 usado para armazenar seus DAGs, plug-ins personalizados em
plugins.zipe dependências do Python emrequirements.txtdeve ser configurado com Acesso público bloqueado e Versionamento habilitado.
Como funciona
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:
-
Crie um arquivo
requirements.txtlocalmente. -
Faça upload do
requirements.txtlocal para seu bucket no Amazon S3. -
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
É possível instalar extras do Apache Airflow e outras dependências do Python a partir do Python Package Index (Pypi.org), Python wheels (.whl) ou dependências do Python hospedadas em um repositório privado compatível com PyPi/PEP-503 em seu ambiente.
Limites de localização e tamanho das dependências do Python
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.txtque 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
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
-
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 usá-la para executar um ambiente local do Apache Airflow para desenvolver e testar DAGs, plug-ins personalizados e dependências antes da implantação no Amazon MWAA.
-
Para executar a CLI, consulte aws-mwaa-docker-images
no GitHub.
Etapa 2: criar o requirements.txt
A seção a seguir descreve como especificar dependências do Python do Python Package Indexrequirements.txt.
Como fazer upload de requirements.txt para o Amazon S3
É possível usar o console do Amazon S3 ou a AWS Command Line Interface (AWS CLI) para fazer upload do arquivo requirements.txt para o bucket do Amazon S3.
Como usar o AWS CLI
A AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que pode ser usada para interagir com os serviços da AWS por meio de comandos no shell da linha de comando. Para concluir as etapas nesta página, é necessário o seguinte:
Para fazer o upload usando AWS CLI
-
Use o comando a seguir para listar todos os seus buckets do Amazon S3.
aws s3 ls -
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 -
O comando a seguir faz upload de um arquivo
requirements.txtpara um bucket do Amazon S3.aws s3 cp requirements.txt s3://amzn-s3-demo-bucket/requirements.txt
Usar o console do Amazon S3
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
-
Abra a página Ambientes
no console do Amazon MWAA. -
Escolha um ambiente.
-
Selecione o link do bucket do S3 no código do DAG no painel do S3 para abrir seu bucket de armazenamento no console.
-
Escolha Carregar.
-
Escolha Adicionar arquivo.
-
Selecione a cópia local do seu
requirements.txte escolha Carregar.
Como instalar dependências do Python em seu ambiente
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)
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.
-
Abra a página Ambientes
no console do Amazon MWAA. -
Escolha um ambiente.
-
Escolha Editar.
-
No código DAG no painel do Amazon S3, escolha Procurar no S3 ao lado do campo Arquivo de requisitos - opcional.
-
Selecione o arquivo
requirements.txtno bucket do Amazon S3. -
Selecione Escolher.
-
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
É 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.
-
Abra a página Ambientes
no console do Amazon MWAA. -
Escolha um ambiente.
-
Escolha Editar.
-
No painel Código DAG no Amazon S3 , escolha uma versão do
requirements.txtna lista suspensa. -
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
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 logs do agendador no console do Amazon MWAA e acessar os logs do Apache Airflow no console do CloudWatch Logs.
Para acessar os logs para 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, 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
Teste seus DAGs, plug-ins personalizados e dependências do Python localmente usando aws-mwaa-docker-images