Amazon SageMaker AI MLflowアプリを埋め込んだカスタムポータルの構築
この記事では、ReactフロントエンドとFlaskリバースプロキシを使用してAWS SigV4認証を処理し、AWS CDKでデプロイする、SageMaker AI MLflowアプリUIを埋め込んだカスタムポータルの構築方法を学びます。このソリューションは、事前署名付きURLやAWSコンソールアクセスを必要とせず、永続的でブックマーク可能なURLを提供します。
記事インテリジェンス
要点
- ReactフロントエンドとFlaskリバースプロキシによるSigV4認証。
- AWS CDKを使用した自動デプロイ。
- MLflow UIへの永続URL、SSOおよびプログラムによるAPIアクセスをサポート。
- デプロイ手順とセキュリティ考慮事項を含む。
重要な理由
このニュースが重要なのは、ReactフロントエンドとFlaskリバースプロキシによるSigV4認証ためです。
技術的影響
モデル選定、推論コスト、プロダクト能力、評価基準に影響する可能性があります。
MLチームが成長するにつれて、Amazon SageMaker AI MLflowアプリをカスタムポータルに埋め込むには、スケーラブルなアクセス管理アプローチが必要です。数十人のデータサイエンティストがいるチームでは、事前署名付きURLを配布することはスケーラブルではなく、個々のAWS管理コンソールアクセスを許可すると、管理者の運用オーバーヘッドが増加します。SSO統合された内部ポータルに依存するチームは、単一のブックマーク可能なURLから他の内部アプリケーションと一緒にMLflow実験トラッキングにアクセスできる必要があります。カスタムポータルを使用すると、新しいチームメンバーのオンボーディング時間を短縮し、アクセス管理を簡素化し、データサイエンティストに内部ツール全体で一貫したエクスペリエンスを提供できます。
このソリューションにより、MLチームは事前署名付きURLやAWS管理コンソールアクセスなしで、完全なMLflow Web UIへの永続的でブックマーク可能なURLを取得できます。MLflow実験トラッキングUIを組織のSSO統合内部ポータルまたはカスタムダッシュボードに直接埋め込むことができるため、ユーザーは一度認証するだけで、他の内部ツールと一緒に実験トラッキングにアクセスできます。CI/CDパイプラインや自動化スクリプトは、同じプロキシエンドポイントを介してプログラムでMLflow REST APIと対話でき、SigV4認証はバックグラウンドで処理されます。
**ソリューション概要**
React Webアプリケーションをデプロイし、iframeを使用してSageMaker AI MLflowアプリUIを埋め込み、Amazon EC2で実行されるFlaskリバースプロキシがバックエンドを担当します。アーキテクチャは4つのコンポーネントで構成されます:
- **Application Load Balancer (ALB)**:単一エントリポイントとして機能し、HTTPS終端を処理してトラフィックをバックエンドターゲットにルーティングし、組織のDNSおよび証明書インフラストラクチャと統合します。
- **Reactフロントエンドポータル**:ブランド化されたエントリポイントを提供し、iframeにMLflowトラッキングUIを埋め込み、Flaskプロキシから/appパスで静的ファイルを提供します。
- **Flaskリバースプロキシサービス**:フロントエンドとMLflowバックエンドの間に位置し、認証を処理します。リクエストをインターセプトし、専用IAMロールを引き受けることで取得した一時認証情報を使用してAWS SigV4で署名し、SageMaker AI MLflowアプリエンドポイントに転送し、HTMLレスポンス内の絶対URLを相対パスに書き換え、X-Frame-Optionsヘッダーを削除してiframe内でのレンダリングを可能にします。
- **Amazon SageMaker AI MLflowアプリ**:完全マネージド型のMLflowバックエンドで、プロビジョニングやパッチ適用は不要です。
**アーキテクチャとリクエストワークフロー**
ユーザーがポータルに移動すると、ALBがリクエストをEC2インスタンス上のFlaskプロキシにルーティングします。FlaskプロキシはReactダッシュボード(/appパス)を提供します。Reactアプリはページをレンダリングし、/mlflow-ui/を指すiframe内にMLflow UIをロードします。その後、iframeのすべてのリクエストはFlaskプロキシを通過し、プロキシは一時認証情報を使用してSigV4署名を行い、サーバーレスMLflowアプリエンドポイントに転送します。プロキシはレスポンスをブラウザに返す前に、絶対URLを相対パスに書き換え、X-Frame-Optionsヘッダーを削除してiframe内でのレンダリングを許可します。
**デプロイ手順**
前提条件として、AWSアカウント、AWS CLI v2.34.5以降、Python 3.13以降、AWS CDK v2、Node.js 18.x以降、および適切なIAM権限が必要です。デプロイはdeploy.shスクリプトを使用して、CDKスタックのデプロイとサーバーレスMLflowアプリの作成を自動化します。
- リポジトリをクローンして依存関係をインストール:
git clone ... && npm install。 - アカウントIDとリージョンの環境変数を設定。
- CDK環境をブートストラップ:
cdk bootstrap。 - デプロイスクリプトを実行:
bash deploy.sh。 - Session Managerを使用してEC2インスタンスにログインし、Python 3.13と依存関係をインストールし、MLflowプロキシサービスをセットアップ。
- ブラウザでALB URLを開くか、curlを使用してREST APIをテスト(例:実験の作成、実行の記録)して検証。
**クリーンアップ**
bash cleanup.shを実行して、Flaskアプリスタック、MLflowアプリ、SageMakerドメインなどを逆依存順に削除します。
**セキュリティ考慮事項**
本番環境ではHTTPS(ACM証明書)を使用し、IAMロールの権限を制限する必要があります。Flaskプロキシは最小権限の原則に従い、必要なMLflow API操作のみを許可します。
このソリューションは、セキュアでスケーラブルなMLflowアクセスをMLチームに提供し、管理を簡素化し、ユーザーエクスペリエンスを向上させます。