Como instalo bibliotecas no meu ambiente do Amazon MWAA?
Data da última atualização: 03/02/2022
Desejo instalar bibliotecas no meu ambiente do Amazon Managed Workflows for Apache Airflow (Amazon MWAA).
Breve descrição
Quando você cria um ambiente do Amazon MWAA, alguns pacotes/distribuições básicas são incluídos na instalação base do Apache Airflow. Você pode instalar pacotes além dos incluídos na instalação base usando o arquivo requirements.txt ou plugins.zip no seu ambiente do Amazon MWAA.
Por padrão, pacotes são instalados no Amazon MWAA a partir de repositórios públicos (PyPI.org). Você também pode instalar pacotes de repositórios hospedados em âmbito privado, como JFROG e AWS CodeArtifact.
Resolução
Você pode instalar bibliotecas do repositório público padrão (PyPi.org) ou de repositórios privados. Escolha a abordagem que melhor se adapta ao seu caso de uso.
Instalar de repositórios públicos
Para instalar pacotes do repositório público padrão, basta adicionar o nome e a versão do pacote (==) no seu arquivo requirements.txt. Em seguida, carregue o arquivo requirements.txt no bucket do Simple Storage Service (Amazon S3). Especifique a versão desse arquivo no campo Requirements file (Arquivo de requisitos) ao atualizar o ambiente usando o console do Amazon MWAA.
Instalar a partir de repositórios privados ou locais
Se você não tem acesso à Internet no seu ambiente para instalar pacotes do repositório público, poderá instalar bibliotecas/pacotes personalizados do seu repositório PyPI hospedado em âmbito privado. Para fazer isso, baixe todos os pacotes e inclua-os no seu repositório local, que pode ser JFROG, AWS CodeArtifact ou qualquer outro. Depois de adicionar os pacotes ao repositório, use o URL do repositório para importá-los. Para importar bibliotecas privadas, especifique o URL do repositório (--index-url) no arquivo requirements.txt.
Use uma das seguintes opções para instalar um pacote (exemplo: redis==3.5.3) do seu repositório local.
Se estiver usando um repositório privado, atualize o arquivo requirements.txt para incluir o seguinte:
--trusted-host artifactory-aws.example-org.com
--index-url https://artifactory-aws.example-org.com/artifactory/api/pypi/pypi-virtual/simple
redis==3.5.3
Se você estiver usando o repositório JFROG, atualize o arquivo requirements.txt para incluir o seguinte:
--index-url=https://${AIRFLOW__JFROG__USER}:${AIRFLOW__JFROG__PASS}@<server-name>.jfrog.io/artifactory/api/pypi/<repository>/simple
redis==3.5.3
Você também pode incluir -- index-url em um arquivo de texto em vez de adicionar diretamente o URL no arquivo requirements.txt. Você pode especificar --index-url em um arquivo de texto (por exemplo, codeartifact.txt) e, em seguida, fazer upload de codeartifact.txt no bucket do S3 na pasta /dags.
Em seguida, atualize o arquivo requirements.txt para incluir o caminho do arquivo codeartifact.txt:
-r /usr/local/airflow/dags/codeartifact.txt
<br>redis==3.5.3
Consulte o workshop do Amazon MWAA for Analytics - Repositório privado PyPI para saber como fazer o seguinte:
Observação: essa solução usa o arquivo codeartifact.txt para especificar --index-url.
- Crie um repositório PyPI privado com uma conexão com uma fonte externa usando o AWS CodeArtifact.
- Provisione um ambiente do MWAA privado sem uma conexão com a Internet pública e aproveite os Endpoints de VPC para se conectar ao AWS CodeArtifact.
- Crie uma função do Lambda para manter o token de autorização do seu repositório PyPI privado atualizado.
Pacotes de instalação
Para instalar pacotes do repositório público ou privado, atualize seu ambiente para incluir o arquivo requirement.txt:
- Crie uma cópia local do arquivo requirements.txt e faça upload dessa cópia no bucket do Amazon Simple Storage Service (Amazon S3) (exemplo: s3://example-bucket/requirements.txt) usando o console do Amazon Simple Storage Service (Amazon S3) ou a AWS Command Line Interface (AWS CLI).
Observação: lembre-se de ativar o versionamento no bucket do S3. - Para editar o ambiente, abra a página Environments (Ambientes) no console do Amazon MWAA.
- Selecione o ambiente na lista e, em seguida, escolha Edit (Editar).
Observação: se você estiver carregando o arquivo requirements.txt no seu ambiente pela primeira vez, siga as etapas 4, 5 e 6. Se você já carregou o arquivo e o atualizou recentemente, siga apenas a etapa 6. - Na página Specify details (Especificar detalhes), na seção DAG code in Amazon S3 (Código do DAG no Amazon S3), escolha Browse S3 (Navegar no S3) no campo Requirements file - optional (Arquivo de requisitos - opcional).
- Selecione o arquivo requirements.txt no bucket do Simple Storage Service (Amazon S3) e, em seguida, escolha Choose (Escolher).
- Para Choose a version (Escolher uma versão) no campo Requirements file - optional (Arquivo de requisitos - opcional), selecione a versão mais recente que você carregou.
- Selecione Next (Próximo) e, em seguida, selecione Save (Salvar).
Você pode começar a usar os novos pacotes imediatamente após a atualização do ambiente.
O ambiente leva de 15 a 20 minutos para ser atualizado. Depois que o ambiente for atualizado, os pacotes listados no arquivo requirements.txt serão instalados. Se as dependências não forem instaladas em 10 minutos, o serviço AWS Fargate poderá atingir o tempo limite e tentar reverter o ambiente para um estado estável.
Solucionar problemas com o processo de instalação
Se você tiver problemas durante a instalação desses pacotes, poderá exibir o arquivo de log (requirements_install_ip) dos grupos de log do Apache Airflow Worker/Scheduler.
Se o arquivo de log tiver erros para os pacotes, você poderá tentar instalar os pacotes novamente adicionando uma versão diferente do pacote. É uma prática recomendada prefixar o arquivo requirements.txt com o arquivo de restrições.
Exemplo:
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-example-Airflow-version/constraints-3.7.txt"
Observação: certifique-se de substituir example-Airflow-version pelo número da versão do seu ambiente.
Importante: é uma prática recomendada testar as dependências do Python usando o utilitário da CLI do Amazon MWAA (aws-mwaa-local-runner) antes de instalar os pacotes no seu ambiente do Amazon MWAA.
Informações relacionadas
Este artigo ajudou?
Precisa de ajuda com faturamento ou suporte técnico?