Como instalo pacotes personalizados no meu ambiente do Amazon MWAA?

Data da última atualização: 03/03/2022

Desejo instalar pacotes personalizados usando o plugins.zip no meu ambiente Amazon Managed Workflows for Apache Airflow (Amazon MWAA).

Breve descrição

Você pode instalar bibliotecas Python no Amazon MWAA usando os arquivos requirements.txt e plugins.zip. Quando você instala pacotes usando o arquivo requirements.txt, os pacotes são instalados do Pypi.org, por padrão. No entanto, se você precisar enviar bibliotecas (arquivos.whl) com artefatos compilados, poderá instalar esses Python wheels usando o arquivo plugins.zip.

Usando o arquivo plugins.zip, você pode instalar operadores, ganchos, sensores ou interfaces personalizados do Apache Airflow simplesmente soltando arquivos dentro de um arquivo plugins.zip. Esse arquivo é gravado nos contêineres backend do Amazon ECS Fargate no local /usr/local/airflow/plugins/. Os plugins também podem ser usados para exportar variáveis de ambiente e arquivos de autenticação e configuração, como .crt e .yaml.

Resolução

Instale bibliotecas usando o Python Wheels

Um Python wheel é um arquivo de pacote com artefatos compilados. Você pode instalar esse pacote colocando o arquivo (.whl) em um plugins.zip e, em seguida, consultar esse arquivo em requirements.txt. Quando você atualiza o ambiente após adicionar o arquivo.whl em plugins.zip, o arquivo.whl é enviado para o local /usr/local/airflow/plugins/ nos contêineres subjacentes do Amazon Elastic Container Service (Amazon ECS) Fargate. Para instalar o Python Wheels, faça o seguinte:

1.    Crie o arquivo plugins.zip:

Crie um diretório local de plugins do Airflow em seu sistema executando o seguinte comando:

$ mkdir plugins

Copie o arquivo .whl para o diretório de plugins que você criou.

Altere o diretório para apontar para o diretório local de plugins do Airflow executando o seguinte comando:

$ cd plugins
Execute o seguinte comando para garantir que o conteúdo tenha permissões executáveis:

plugins$ chmod -R 755

Compacte o conteúdo dentro da pasta de plugins executando o seguinte comando:

plugins$ zip -r plugins.zip

2.    Inclua o caminho do arquivo .whl no arquivo requirements.txt (exemplo: /usr/local/airflow/plugins/example_wheel.whl).

Observação: lembre-se de ativar o versionamento para seu bucket do Amazon Simple Storage Service (Amazon S3).

3.    Carregue os arquivos plugins.zip e requirements.txt em um bucket do S3 (exemplo: s3://example-bucket/plugins.zip).

4.    Para editar o ambiente, abra a página Ambientes no console do Amazon MWAA.

5.    Selecione o ambiente na lista e, em seguida, escolha Editar.

6.    Na página Especificar detalhes, na seção Código do DAG no Simple Storage Service (Amazon S3), siga um destes procedimentos com base no seu caso de uso:

Observação: se você estiver carregando o arquivo plugins.zip ou requirements.txt em seu ambiente pela primeira vez, selecione o arquivo e escolha a versão. Se você já carregou o arquivo e o atualizou recentemente, pode pular a seleção do arquivo e escolher apenas a versão.

Escolha Procurar S3 no campo Arquivo de plugins (opcional).

Selecione o arquivo plugins.zip no bucket do Amazon S3 e, em seguida, selecione Escolher.

Para Escolher uma versão em Arquivo de plugins (opcional), selecione a versão mais recente do arquivo que você carregou.

OU

Escolha Procurar S3 em Arquivo de requisitos (opcional).

Selecione o arquivo requirements.txt no bucket do Amazon S3 e, em seguida, selecioneEscolher.

Para Escolher uma versão em Arquivo de requisitos (opcional), selecione a versão mais recente do arquivo que você carregou.

7.    Escolha Avançar e, em seguida, escolha Criar.

Instale operadores, ganchos, sensores ou interfaces personalizados

O Amazon MWAA é compatível com o gerenciador de plugins integrado do Apache Airflow, que permite usar operadores, sensores de ganchos ou interfaces personalizados do Apache Airflow. Esses plugins personalizados podem ser colocados no arquivo plugins.zip usando uma estrutura de diretório simples e aninhada. Para ver alguns exemplos de plugins personalizados, consulte Exemplos de plugins personalizados.

Crie um plugin personalizado para gerar variáveis de ambiente do tempo de execução

Você também pode criar um plugin personalizado que gera variáveis de ambiente em tempo de execução no ambiente do Amazon MWAA. Em seguida, você pode usar essas variáveis de ambiente em seu código do DAG. Para obter mais informações, consulte Criar um plugin personalizado que gera variáveis de ambiente do tempo de execução.

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

Se você não precisar que arquivos específicos sejam atualizados continuamente durante a execução do ambiente, use plugins.zip para enviar esses arquivos. Além disso, você pode incluir arquivos para os quais você não precisa conceder acesso a usuários que gravam DAGs (exemplo: arquivos de certificado (.crt), PEM e YAML de configuração). Depois de compactar esses arquivos em plugins.zip, carregue plugins.zip no S3 e atualize o ambiente. Os arquivos são replicados com as permissões necessárias para acessar /usr/local/airflow/plugins.

Você pode compactar certificados de CA personalizados no arquivo plugins.zip executando o seguinte comando:

$ zip plugins.zip ca-certificates.crt
O arquivo agora está localizado em /usr/local/airflow/plugins/ca-certificates.crt.

Para compactar o kube_config.yaml no arquivo plugins.zip, execute o seguinte comando:

$ zip plugins.zip kube_config.yaml
O arquivo agora está localizado em /usr/local/airflow/plugins/kube_config.yaml.

Solucionar problemas do processo de instalação

Se você tiver problemas durante a instalação desses pacotes, poderá testar seus DAGs, plugins personalizados e dependências do Python localmente usando aws-mwaa-local-runner.

Para solucionar problemas com a instalação de pacotes Python usando o arquivo plugins.zip, você pode visualizar o arquivo de log (requirements_install_ip) dos grupos de log do Apache Airflow Worker ou do Scheduler.

Importante: é uma prática recomendada testar as dependências do Python e o arquivo plugins.zip usando o utilitário CLI do Amazon MWAA (aws-mwaa-local-runner) antes de instalar os pacotes ou o arquivo plugins.zip em seu ambiente do Amazon MWAA .


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?