Como faço para instalar bibliotecas no meu ambiente do Amazon MWAA?

7 minuto de leitura
0

Quero instalar bibliotecas em meus fluxos de trabalho gerenciados da Amazon para um ambiente do Apache Airflow (Amazon MWAA).

Breve descrição

Use os arquivos requirements.txt e plugins.zip para instalar bibliotecas do Python no Amazon MWAA. Se você usar o arquivo requirements.txt para instalar pacotes, os pacotes serão instalados a partir do Índice de pacotes do Python (do site do PyPI) por padrão. Se você enviar bibliotecas (arquivos.whl) com artefatos compilados, use o arquivo plugins.zip para instalar essas wheels do Python.

Para as versões 2.2.2 e 2.4.3 do Amazon MWAA, o acesso externo à internet não está disponível na opção de servidor web privado. O Amazon MWAA instala requisitos e plug-ins no servidor web na nuvem privada virtual (VPC) do serviço Amazon MWAA. Esses requisitos incluem um gateway NAT com acesso externo à internet. No entanto, para versões anteriores do Amazon MWAA (2.0.2 e 1.10.12), os requisitos e plug-ins não são instalados no servidor web por padrão.

Para as versões 2.2.2 e 2.4.3 do Amazon MWAA, o executor local do Amazon MWAA fornece um utilitário de linha de comando para baixar e empacotar dependências do Python (.whl) e requisitos no arquivo plugins.zip.

Para todas as versões do Amazon MWAA, você pode usar o arquivo plugins.zip para instalar operações, ganchos, sensores ou interfaces personalizadas do Apache Airflow. Os plug-ins exportam variáveis de ambiente, autenticação e arquivos de configuração, como .crt e .yaml.

Resolução

Instale bibliotecas usando .whl em ambientes com um servidor web privado (Amazon MWAA versões 2.2.2 e 2.4.3)

Configure seu ambiente local Amazon MWAA

1.    Crie a imagem do Docker e configure um ambiente local do Amazon MWAA a partir do site do GitHub. O repositório do MWAA fornece um utilitário de interface de linha de comando (CLI) que replica localmente um ambiente do Amazon MWAA.

2.    Adicione a biblioteca e as dependências do Python a um arquivo requirements.txt. 

3.    Use o script a seguir para testar o arquivo requirements.txt:

#aws-mwaa-local-runner % ./mwaa-local-env test-requirements

A saída é semelhante à seguinte: 

 Installing requirements.txt
Collecting aws-batch (from -r /usr/local/airflow/dags/requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/5d/11/3aedc6e150d2df6f3d422d7107ac9eba5b50261cf57ab813bb00d8299a34/aws_batch-0.6.tar.gz
Collecting awscli (from aws-batch->-r /usr/local/airflow/dags/requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/07/4a/d054884c2ef4eb3c237e1f4007d3ece5c46e286e4258288f0116724af009/awscli-1.19.21-py2.py3-none-any.whl (3.6MB)
    100% |████████████████████████████████| 3.6MB 365kB/s
...
...
...
Installing collected packages: botocore, docutils, pyasn1, rsa, awscli, aws-batch
  Running setup.py install for aws-batch ... done
Successfully installed aws-batch-0.6 awscli-1.19.21 botocore-1.20.21 docutils-0.15.2 pyasn1-0.4.8 rsa-4.7.2

Criar os arquivos .whl a partir do arquivo requirements.txt

Execute o seguinte comando local-runner package-requirements para criar os arquivos .whl a partir do arquivo requirements.txt:

#aws-mwaa-local-runner % ./mwaa-local-env package-requirements

O comando baixa todos os arquivos .whl para a pasta aws-mwaa-local-runner/plugin.

Criar um arquivo plugins.zip incluindo arquivos .whl e uma restrição Amazon MWAA

Faça o download e copie constraints.txt para o diretório do plugin. Em seguida, execute o comando a seguir para criar o arquivo plugins.zip: 

#aws-mwaa-local-runner % curl -o plugins/constraints.txt "https://raw.githubusercontent.com/apache/airflow/constraints-2.2.2/constraints-3.7.txt"
#aws-mwaa-local-runner % zip -j dags/plugins.zip plugins/constraints.txt

Criar um novo arquivo requirements.txt que aponte para os arquivos .whl que estão empacotados no arquivo plugins.zip

1. Crie o novo arquivo requirements.txt. Em uma ferramenta de texto de sua escolha, use um formato semelhante ao seguinte:

=========new requirements.txt==========

--find-links /usr/local/airflow/plugins

--no-index

--constraint “/usr/local/airflow/plugins/constraints.txt”

aws-batch==0.6
====================================

2. Faça o upload dos arquivos plugins.zip e requirements.txt para o bucket do Amazon Simple Storage Service (Amazon S3) do seu cluster do MWAA. Em seguida, atualize o ambiente.

Usar wheels do Python para instalar bibliotecas personalizadas

Uma wheel do Python é um arquivo de pacote com artefatos compilados. Para instalar esse pacote, coloque o arquivo .whl em um arquivo plugins.zip. Em seguida, mencione esse arquivo em um arquivo requirements.txt. Depois de adicionar o arquivo .whl ao arquivo plugins.zip, atualize o ambiente. O arquivo .whl é enviado para o local do contêiner Fargate do Amazon Elastic Container Service (Amazon ECS): /usr/local/airflow/plugins/

Instalar wheels do Python

1.    Crie o arquivo plugins.zip. Execute o comando a seguir para criar um diretório local de plug-ins do Amazon MWAA em seu sistema:

$ mkdir plugins

2.    Copie o arquivo .whl para o diretório de plugins que você criou. Execute o comando a seguir para alterar o diretório para apontar para o diretório local de plug-ins do Airflow:

$ cd plugins

Execute o comando a seguir para confirmar se o conteúdo tem permissões executáveis:

plugins$ chmod -R 755

Execute o comando a seguir para compactar o conteúdo em sua pasta de plug-ins:

plugins$ zip -r plugins.zip .

3.    Inclua o caminho do arquivo .whl no arquivo requirements.txt (por exemplo, /usr/local/airflow/plugins/example_wheel.whl).

Observação: Certifique-se de ativar o versionamento para seu bucket do Amazon S3.

4.    Faça o upload dos arquivos plugins.zip e requirements.txt em um bucket do Amazon S3 (por exemplo, s3://example-bucket/plugins.zip).

5.    Especifique a versão do plugins.zip no console Amazon MWAA.

Instalar operadores, ganchos, sensores ou interfaces personalizadas

O Amazon MWAA é compatível com o gerenciador de plug-ins integrado do Apache Airflow. O gerenciador de plug-ins permite que você use operadores, ganchos, sensores ou interfaces personalizadas do Apache Airflow. Esses plug-ins personalizados são colocados no arquivo plugins.zip com uma estrutura de diretórios simples e aninhada. O conteúdo do arquivo plugins.zip é gravado nos contêineres Fargate do Amazon ECS de back-end em: /usr/local/airflow/plugins/. Para obter mais informações, consulte Exemplos de plug-ins personalizados.

Criar um plug-in personalizado para gerar variáveis de ambiente de runtime

Crie um plug-in personalizado que gere variáveis de ambiente de runtime em seu ambiente do Amazon MWAA. Em seguida, use essas variáveis de ambiente em seu código de gráfico acíclico direcionado (DAG). Para mais informações, consulte Criar um plug-in personalizado que gera variáveis de ambiente de runtime.

Exportar arquivos PEM, .crt e de configuração (.yaml)

Se você não precisar atualizar determinados arquivos continuamente quando o ambiente estiver em execução, use o arquivo plugins.zip para distribuir os arquivos. Você também pode criar DAGs e usar plugins.zip para arquivos que não requerem acesso do usuário (por exemplo, certificados, PEM e arquivos YAML de configuração).

O exemplo de comando a seguir agrupa um arquivo ca-certificates.crt em um arquivo plugins.zip:

$ zip plugins.zip ca-certificates.crt

Depois de atualizar o ambiente com esse arquivo plugins.zip, o arquivo .crt é sincronizado no caminho /usr/local/airflow/plugins/ca-certificates.crt em cada um dos contêineres de trabalho. Em seguida, seus DAGs acessam esse arquivo. Siga o mesmo processo para outros tipos de arquivos.

Instalar plugins e binários personalizados

Você pode usar o Oracle for Amazon MWAA para criar um plug-in personalizado e combiná-lo com outros plug-ins e binários personalizados em seu arquivo plugins.zip. Isso inclui pacotes que não são do Python. Para mais informações, consulte Criar um plug-in personalizado com Oracle.

Para adicionar binários aos seus contêineres ou definir e modificar variáveis de ambiente, consulte Criar um plug-in personalizado com o Apache Hive e o Hadoop.

Solucionar problemas de instalação do pacote

Use aws-mwaa-local-runner a partir do site do GitHub para testar DAGs, plug-ins personalizados e dependências do Python.

Veja o arquivo de log. Você pode visualizar o arquivo dos grupos de log do Apache Airflow Worker ou do Scheduler.

Importante: Antes de instalar os pacotes ou o arquivo plugins.zip, é uma prática recomendada usar o utilitário Amazon MWAA CLI para testar as dependências do Python e o arquivo plugins.zip.

Informações relacionadas

Plugins

AWS OFICIAL
AWS OFICIALAtualizada há um ano