使用REST API代理简化对Amazon SageMaker MLflow的外部访问
本文演示如何构建一个基于Flask的安全MLflow代理服务,通过HTTPS端点访问Amazon SageMaker MLflow,而无需直接使用MLflow SDK。该解决方案适用于正在经历云转型、希望保留现有ML工作流同时采用云原生服务的组织。
文章情报
要点
- 构建Flask代理服务,将HTTPS请求转换为认证的AWS API调用。
- 使用ALB进行流量分发和SSL终止,支持自定义域名。
- 提供详细的部署步骤,包括CDK基础设施部署和代理服务配置。
- 支持MLflow Tracking Server和Serverless两种模式,并涵盖安全考虑。
为什么重要
这条新闻值得关注,因为构建Flask代理服务,将HTTPS请求转换为认证的AWS API调用。
技术影响
可能影响模型选型、推理成本、产品能力和评测基准。
机器学习团队使用MLflow有效管理ML生命周期。Amazon SageMaker MLflow提供全面的ML实验跟踪和模型管理能力。然而,许多企业有现有的基础设施要求,需要基于HTTPS的集成而非直接使用SDK。
许多组织需要将Amazon SageMaker MLflow与已建立的系统集成,同时保持安全性和基础设施模式。这个集成挑战影响了那些由于公司安全策略、网络限制或遗留系统约束而无法直接使用SDK的团队。
在本文中,我们演示如何构建一个基于Flask的安全MLflow代理服务,通过HTTPS端点访问Amazon SageMaker MLflow,而无需直接使用MLflow SDK。该解决方案适用于正在经历云转型、希望保留现有ML工作流同时采用云原生服务的组织。
**解决方案概述**
一个轻量级的基于Flask的MLflow代理架构通过三个关键组件提供企业系统与Amazon SageMaker MLflow之间的安全集成。
**组件1:应用程序负载均衡器(ALB)** AWS Application Load Balancer作为上游路由器,提供流量分发、初始请求处理和路由、支持自定义域名和SSL终止。注意:本实现使用ALB,但您也可以根据需求使用其他路由解决方案,如Nginx。
**组件2:Flask MLflow代理服务** 架构核心是一个基于Python的Flask应用程序,负责拦截和处理传入的HTTPS请求、管理AWS认证和请求签名、转换URL以确保安全访问MLflow端点、处理响应路由回客户端。
**组件3:Amazon SageMaker MLflow** AWS托管的SageMaker MLflow服务支持两种部署模式:MLflow Tracking Server(托管MLflow跟踪服务器)和MLflow App(无服务器MLflow应用程序)。它提供后端元数据存储和模型文件存储。
**架构与请求工作流** 当客户端发起HTTPS请求时,首先到达ALB,然后路由到MLflow代理服务。代理服务执行关键功能:通过AWS IAM集成处理认证、转换URL并预签名以确保安全访问、处理MLflow REST API端点。代理服务将传入请求转换为认证的AWS请求,然后对SageMaker MLflow REST端点进行API调用。处理完成后,代理服务将响应路由回原始客户端。
**前提条件** 要遵循本操作指南,请确保您具有AWS账户、安装了AWS CLI、Node.js 18+、NPM、AWS CDK CLI 2.100+、Python 3.x等工具,并具备基本的AWS、Python和Flask知识以及MLflow概念理解。注意:本解决方案会创建可能产生费用的AWS资源。
**部署解决方案** 部署过程约需40分钟。首先使用AWS CDK部署基础设施:克隆代码仓库、安装依赖、引导CDK环境,然后部署四个CDK堆栈(网络、SageMaker域、SageMaker MLflow、Flask应用)。支持Tracking Server和Serverless两种模式。
然后安装和配置Flask MLflow代理服务:通过Session Manager连接到EC2实例,安装Python 3.13及依赖,运行设置脚本启动代理服务,并检查服务状态。
最后验证MLflow REST API访问:获取ALB DNS名称,使用curl命令测试实验创建、搜索、获取、运行创建、工件列表、设置标签和删除运行等API端点。
**安全考虑** 生产环境部署时,考虑配置CloudWatch监控、实施速率限制(如使用AWS WAF)、部署内部(非面向互联网)ALB限制代理访问私有网络、在ALB级别启用HTTPS终止(使用ACM管理SSL/TLS证书)。