Como criar um portal customizado com Amazon SageMaker AI MLflow Apps integrado

Amazon SageMaker lança solução para portais customizados com MLflow Apps integrados

\n

A Amazon Web Services (AWS) apresentou uma solução que permite a criação de portais customizados com a interface do Amazon SageMaker AI MLflow Apps embutida. Essa novidade é especialmente útil para equipes de machine learning (ML) que buscam um acesso escalável e seguro ao monitoramento de experimentos MLflow, sem a necessidade de distribuir URLs pré-assinadas ou conceder acesso direto ao console AWS.

\n\n

Quem pode se beneficiar e como funciona a solução

\n

Times de cientistas de dados e infraestrutura ML que utilizam o Amazon SageMaker para gerenciar experimentos podem integrar o MLflow Apps diretamente em seus portais internos, que já contam com autenticação via Single Sign-On (SSO). Isso oferece uma URL persistente e bookmarkable, além de uma experiência unificada para os usuários, que acessam os experimentos ao lado de outras ferramentas corporativas.

\n

O portal customizado é construído com um front-end React que incorpora o MLflow UI via iframe, enquanto um serviço proxy reverso em Flask gerencia a autenticação AWS Signature Version 4 (SigV4) de forma transparente para o usuário. Essa arquitetura permite que pipelines CI/CD e scripts automatizados interajam com as APIs REST do MLflow através do mesmo endpoint proxy, simplificando a segurança e a operação.

\n\n

Arquitetura técnica da solução

\n

    \n

  • Application Load Balancer (ALB): Ponto único de entrada para usuários, gerenciando o tráfego HTTPS, integração com DNS e certificados, além de suportar domínios personalizados e autenticação SSO.
  • \n

  • Front-end React: Portal customizado que carrega a interface MLflow dentro de um iframe e pode ser adaptado para branding e integração com outras ferramentas internas.
  • \n

  • Flask reverse proxy: Serviço Python hospedado em uma instância Amazon EC2 que intercepta requisições, assina com SigV4 usando credenciais temporárias de um papel IAM, reescreve URLs e remove cabeçalhos que impediriam a renderização em iframe.
  • \n

  • Amazon SageMaker AI MLflow Apps: Backend totalmente gerenciado que oferece rastreamento de experimentos, métricas, parâmetros, artefatos e registro de modelos, sem necessidade de manutenção de infraestrutura.
  • \n

\n\n

Disponibilidade e custos envolvidos

\n

A solução pode ser implementada em qualquer conta AWS que possua permissões para criar recursos como VPCs, EC2, ALB, SageMaker AI e IAM roles. Os principais custos envolvem instâncias EC2, Application Load Balancer, recursos Amazon SageMaker AI e armazenamento em Amazon S3. Para orçar os custos, a AWS recomenda o uso do AWS Pricing Calculator.

\n\n

Passo a passo para implantação da solução

\n

Pré-requisitos

\n

    \n

  • Conta AWS ativa e configurada.
  • \n

  • AWS CLI v2.34.5 ou superior.
  • \n

  • Python 3.13 ou superior instalado localmente.
  • \n

  • AWS CDK v2 (aws-cdk-lib 2.243.0 ou superior) instalado e bootstrapped na conta e região alvo.
  • \n

  • Node.js 18.x ou superior.
  • \n

  • Permissões IAM suficientes para criar recursos citados.
  • \n

  • AMI Ubuntu 24.04 LTS disponível na região (resolvido automaticamente via SSM Parameter Store).
  • \n

  • Conhecimentos básicos em AWS, IAM, Python, Flask e MLflow.
  • \n

\n\n

Implantação

\n

    \n

  1. Clone o repositório oficial da AWS com o código da solução:\n
    git clone https://github.com/aws-samples/sample-sagemaker-mlflow-embedded-ui.git\ncd sample-sagemaker-mlflow-embedded-ui\nnpm install

    \n

  2. \n

  3. Configure as variáveis de ambiente com sua conta e região AWS:\n
    export CDK_DEFAULT_ACCOUNT=<seu-account-id>\nexport CDK_DEFAULT_REGION=<sua-regiao>\nexport AWS_DEFAULT_REGION=<sua-regiao>\nexport AWS_REGION=<sua-regiao>

    \n

  4. \n

  5. Se necessário, faça o bootstrap do ambiente CDK:\n
    cdk bootstrap aws://<ACCOUNT_ID>/<REGION>

    \n

  6. \n

  7. Execute o script de implantação que cria a infraestrutura e a aplicação MLflow:\n
    bash deploy.sh

    \n

  8. \n

  9. Conecte-se à instância EC2 criada via AWS Systems Manager Session Manager e instale Python 3.13 e dependências:\n
    sudo su -\ncd /root\nchmod +x install_python13.sh\n./install_python13.sh\nchmod +x setup_mlflow_proxy_app.sh\n./setup_mlflow_proxy_app.sh

    \n

  10. \n

  11. Verifique se o serviço Flask proxy está ativo:\n
    systemctl status mlflowproxy

    \n Caso não esteja, cheque os logs:\n

    journalctl -u mlflowproxy

    \n

  12. \n

\n\n

Validação da implantação

\n

    \n

  • Acesse a URL do Application Load Balancer (ALB) fornecida na saída do deploy para abrir o portal React com o MLflow UI embutido.
  • \n

  • Teste o endpoint de saúde:\n
    curl http://<ALB-URL>/health

    \n Deve retornar {"status": "healthy"}.

  • \n

  • Utilize a API REST do MLflow para criar experimentos, runs, e registrar métricas e parâmetros, por exemplo:\n
    curl -X POST http://<ALB-URL>/api/2.0/mlflow/experiments/create -H "Content-Type: application/json" -d '{"name": "meu-primeiro-experimento"}'

    \n

  • \n

  • Atualize o portal para conferir os dados registrados no UI.
  • \n

\n\n

Limpeza dos recursos

\n

Para evitar cobranças, execute o script de limpeza que remove os recursos na ordem correta:

\n

bash cleanup.sh

\n

O bucket S3 usado para artefatos MLflow precisa ser deletado manualmente, conforme orientações da AWS.

\n\n

Considerações e próximos passos para produção

\n

    \n

  • Adicione autenticação SSO ao portal via integração com Amazon Cognito ou Okta no ALB.
  • \n

  • Implemente conectividade privada usando AWS PrivateLink para evitar tráfego pela internet pública.
  • \n

  • Configure monitoramento com Amazon CloudWatch para o serviço Flask proxy.
  • \n

  • Utilize AWS WAF para limitar taxa de requisições e proteger contra ataques DoS.
  • \n

  • Habilite HTTPS no ALB com certificados gerenciados pelo AWS Certificate Manager (ACM).
  • \n

\n\n

Links úteis para implementação

\n

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *