Quero instalar bibliotecas Python em meu ambiente Amazon Managed Workflows for Apache Airflow (Amazon MWAA).
Breve descrição
O Amazon MWAA fornece modos de acesso ao servidor web de rede pública e rede privada.
Para instalar dependências do Python em um ambiente Amazon MWAA com um servidor web privado, use Python wheels .whl.
Para instalar bibliotecas Python em um ambiente Amazon MWAA, use requirements.txt ou plugins.zip. Quando você usa o requirements.txt, o pip instala os pacotes listados do Python Package Index (PyPI) por padrão. Se você instalar bibliotecas ou pacotes personalizados com artefatos compilados como arquivos .whl, use o arquivo plugins.zip. Você deve usar o arquivo plugins.zip ao instalar operações, hooks, sensores ou interfaces personalizadas do Amazon MWAA. O plug-in exporta variáveis de ambiente, autenticação e arquivos de configuração, como .crt e .yaml.
Resolução
Observação: se você encontrar erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Certifique-se de preencher os pré-requisitos antes de começar.
Configure seu ambiente local do Amazon MWAA
Conclua as seguintes etapas:
-
Use a AWS CLI para criar a imagem do Docker e, em seguida, configure um ambiente local do Amazon MWAA.
Observação: o repositório Amazon MWAA fornece o utilitário AWS CLI e replica localmente um ambiente Amazon MWAA. Para obter mais informações, consulte aws-mwaa-local-runner no site do GitHub.
-
Adicione a biblioteca e as dependências do Python ao arquivo requirements.txt.
Observação: depois de baixar os plug-ins, certifique-se de que o arquivo requirements.txt contenha as restrições.
-
Use o script a seguir para testar o arquivo requirements.txt:
#aws-mwaa-local-runner % ./mwaa-local-env test-requirements
Saída esperada:
Installing requirements.txtCollecting 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
Para obter mais informações, consulte Instalando dependências do Python usando o formato de arquivo de requisitos do PyPi.org.
Crie os arquivos.whl a partir do arquivo requirements.txt
Conclua as seguintes etapas:
-
Para os requisitos do pacote, execute o seguinte comando local-runner:
#aws-mwaa-local-runner % ./mwaa-local-env package-requirements
Observação: esse comando baixa todos os arquivos.whl na pasta aws-mwaa-local-runner/plugin. Depois de executar o comando package-requirements**,** o plugins.zip, o novo packaged_requirements.txt e o arquivo constraints.txt estarão disponíveis no diretório requirement/ da aplicação.
-
Baixe o arquivo plugins.zip, o novo packaged_requirements.txt e constraints.txt.
-
Modifique o novo arquivo packaged_requirements.txt empacotado para que ele aponte para o /usr/local/airflow/dags/constraints.txt em vez das restrições públicas.
Faça upload do arquivo constraints.txt
É possível fazer o upload do arquivo contraints.txt para o diretório dag/ de buckets do Amazon Simple Storage Service (Amazon S3) ou incluir o arquivo constraints.txt no arquivo de plugins. Se você fizer o upload do arquivo contraints.txt para seu diretório dag/ de buckets do Amazon S3, o Amazon S3 modificará o arquivo requirements.txt para implantação. No entanto, se você incluir o arquivo constraints.txt no arquivo de plug-ins, certifique-se de que o packaged_requirements.txt aponte para /usr/local/airflow/dags/constraints.txt e não para as restrições públicas.
Se você fizer o upload do arquivo constraints.txt para os plug-ins, use o seguinte comando:
#aws-mwaa-local-runner % zip -j requirements/plugins.zip constraints.txt
Crie um novo arquivo requirements.txt que aponte para os arquivos.whl que estão empacotados no arquivo plugins.zip
Conclua as seguintes etapas:
-
Modifique o novo arquivo packaged_requirements.txt. Se você fez o upload do arquivo para o diretório dags do Amazon S3, substitua {OPTION} no exemplo a seguir por dags. Ou, se você adicionou o arquivo ao arquivo plugins.zip, substitua {OPTION} por plug-ins:
--find-links /usr/local/airflow/plugins
--no-index
--constraint "/usr/local/airflow/{OPTION}/constraints.txt"
....snip.....
-
Faça o upload dos arquivos plugins.zip e requirements.txt para o bucket do Amazon S3 do seu cluster Amazon MWAA.
-
Atualize o ambiente.
Solucionar problemas de instalação do pacote
Use o aws-mwaa-local-runner para testar DAGs, plug-ins personalizados e dependências do Python. Visualize o arquivo de log do grupo de logs Amazon MWAA Worker ou Scheduler.
Importante: Antes de instalar o arquivo.zip dos pacotes ou plugins, use o utilitário Amazon MWAA CLI para testar as dependências do Python e o arquivo plugins.zip.
Informações relacionadas
Gerenciando dependências do Python, opção dois: Rodas Python (.whl)
Plug-ins