AI News HubLIVE
站内改写

使用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證書)。