AI News HubLIVE
站内改写

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アプリの作成を自動化します。

  1. リポジトリをクローンして依存関係をインストール:git clone ... && npm install
  2. アカウントIDとリージョンの環境変数を設定。
  3. CDK環境をブートストラップ:cdk bootstrap
  4. デプロイスクリプトを実行:bash deploy.sh
  5. Session Managerを使用してEC2インスタンスにログインし、Python 3.13と依存関係をインストールし、MLflowプロキシサービスをセットアップ。
  6. ブラウザでALB URLを開くか、curlを使用してREST APIをテスト(例:実験の作成、実行の記録)して検証。

**クリーンアップ**

bash cleanup.shを実行して、Flaskアプリスタック、MLflowアプリ、SageMakerドメインなどを逆依存順に削除します。

**セキュリティ考慮事項**

本番環境ではHTTPS(ACM証明書)を使用し、IAMロールの権限を制限する必要があります。Flaskプロキシは最小権限の原則に従い、必要なMLflow API操作のみを許可します。

このソリューションは、セキュアでスケーラブルなMLflowアクセスをMLチームに提供し、管理を簡素化し、ユーザーエクスペリエンスを向上させます。