![見出し画像](https://assets.st-note.com/production/uploads/images/166504648/rectangle_large_type_2_03d2a8b61eb97e2f268fbeb91d91cc64.png?width=1200)
Amazon SageMaker Lakehouse とは何か触りながら理解を深めてみた
はじめに
AWS re:Invent 2024 にて発表された Amazon SageMaker Lakehouse に関して、「何ができるのか」「AWS Glue や AWS Lake Formation との違いは?」等、疑問が多かったサービスだったので、実際に触ってみて理解できた点をまとめていきたいと思います
Amazon SageMaker Lakehouse とは
AWS re:Invent 2024 にて発表された新サービスで、発表ブログでは以下の様な説明となっていました。
これは Amazon Simple Storage Service (Amazon S3) データレイクと Amazon Redshift データウェアハウス全体のデータを統合する機能で、強力な分析や、人工知能と機械学習 (AI/ML) アプリケーションを単一のデータのコピー上に構築するのに役立ちます。SageMaker Lakehouse は次世代 Amazon SageMaker の一部です。Amazon SageMaker はデータ、分析、AI の統合プラットフォームで、広く採用されている AWS の機械学習と分析機能を統合し、分析と AI の統合エクスペリエンスを提供します。
Amazon SageMaker Lakehouse の触ってみての所感
まず結論としてAmazon SageMaker Lakehouseは、チーム単位で利用可能なデータを「(アーキテクチャの異なるデータであっても)すぐに見つけられて」、各データに対するアクセスも「(アーキテクチャの異なるデータであっても)統一されたインターフェースで利用できる」ことで分析やAI開発の余計な手間をなくすことができるサービスなのかなと思いました。
より具体的に説明すると、分析したいデータが S3データレイクやAmazon Redshift、Amazon DynamoDB等、複数のデータソースを分析で利用したい場合、分析者はサービス毎にアクセス許可されているテーブルを調べたり、サービス毎に分析するインターフェースを変えったり(S3データレイクはAmazon Athena 、RedShift だとRedshift query editorを利用 等)と大変な面があったと思います。
また、分析した結果を社内横断的に利用したい場合も、従来であれば分析結果を格納したサービス毎に他チームと共有しなければいけない状況だったと思います。
Amazon SageMaker Lakehouseを利用すると、チームに対して利用許可されているデータをLakehouseを通じて一元的に確認することができて、且つ同一画面でAmazon Redshift、S3データレイクとアーキテクチャが別のサービスに対するクエリ実行も同一画面から実行できる様になります。
また、各分析担当者が作成した分析結果のデータ等をアセットとしてチームの垣根を越えて公開、利用できることも可能となります。
Amazon SageMaker Lakehouseに関する詳細
Amazon SageMaker Lakehouseの概念
Amazon SageMaker LakehouseはAmazon SageMaker Unified Studio(プレビュー)に内包されたサービスとなっていますので、Amazon SageMaker Unified Studiomから利用します。
Amazon SageMaker Unified Studioでは初めに「プロジェクト」を作成します。プロジェクトは前述した「チーム」の単位がイメージに合っているかとおもいますが、プロジェクトを作成すると複数名が共同で分析、AI開発できる環境が構築されます。
Lakehouseはプロジェクト単位で利用することになるので、Lakehouseで利用するデータ管理はプロジェクト単位で権限管理をすることになります。
Lakehouseではアクセス制御の管理機能自体はなく、データ側のアクセス制御の機能でプロジェクト単位に発行されたIAMRoleからのアクセスを許可することにより、プロジェクト単位でのデータアクセスを実現しています。
※ Lakehouseを経由したデータアクセスはプロジェクト毎に発行されるIAMRoleの権限を利用してアクセスする仕組みの様です。
また、プロジェクト作成時はプロジェクト内での成果物の共有やプロジェクト内で独立した分析リソース確保のため、プロジェクトに紐づいたGlueデータカタログのデータベース、Amazon Redshift Serverlessの環境、Amazon Athenaワークグループが構築されます。
S3データレイクへのアクセスについて
S3データレイクへのアクセスについては、AWS Glueデータカタログ、AWS Lake Formationとシームレスに連携して実現しています。
AWS Lake Formationで管理しているデータベース、テーブルに関してAWS Lake Formation上でプロジェクト紐づきのIAMRoleに対するアクセス許可をすることで、Amazon SageMaker Lakehouseでもアクセスできる様になります。
Amazon SageMaker Lakehouseでデータ閲覧ができる様になれば、Amazon SageMaker Unified Studioでデータレイクのデータに対してAthenaやRedShiftを利用してクエリ実行ができる様になります。
そのため、AWS Glueデータカタログ、AWS Lake Formation、Amazon SageMaker Lakehouseはそれぞれ以下の様にすみ分けが出来ている様ですね。
Amazon SageMaker Lakehouse
プロジェクトで許可されているデータに対する一元化
プロジェクトで許可されているデータに対するシームレスなアクセス
AWS Glueデータカタログ
データセットに対するメタデータ管理
AWS Lake Formation
データセットに関するアクセス制御管理
尚、S3データレイクに対するクエリは Athena、Redshift の両方から実行できます。そのため、S3データレイクのデータとRedshiftのデータをJoinしてクエリを実行する等、横断的なクエリ実行が可能です。
Amazon Redshiftへのアクセスについて
Amazon Redshiftに関するアクセスに関してはAWS Glueデータカタログ経由でアクセスする形になる様です。
Amazon Redshift サーバレスで本動作を検証してみたのですが、Lakehouseで利用したいAmazon Redshift サーバレスの名前空間をRegister with AWS Glue Data Catalogをしてデータカタログ化、AWS Lake Formationでカタログ化されたテーブルに対してプロジェクト紐づきIAMRoleに対するアクセス許可をする形になります。
尚、Redshiftに対するデータへのクエリに関しても Athena、Redshift の両方から実行できます。
他のデータソースに関するアクセスについて
S3、Amazon Redshift以外の取り扱いができる様ですが、まだあまり検証ができていません。
机上調査や機能調査の結果、以下の様な事は出来そうです。
ローカルファイルをアップロードして利用
AWS Glue の ZeroETL機能を利用
データ接続機能の利用
データの共有(アセット機能)
プロジェクトで作成した Amazon Redshiftのテーブル等、プロジェクト内だけで共有されているデータをプロジェクト横断で利用できる機能としてアセット機能が提供されています。
アセット機能で利用できるデータとしてはGlue データカタログまたはAmazon Redshift のデータとなります。
Glue データカタログまたは Amazon Redshift のデータをデータソース機能で登録して、データソース機能で検出されたデータをアセットとして公開する流れです。
データソースでは、アセットで利用したいGlue データカタログまたはAmazon Redshiftの選択や、対象とするテーブルの選択を実施します。
また、データソース機能では定期的にメタデータの収集を実施する機能も提供されており、本機能によりアセットとして共有したデータの最新化ができる様になります。
アセットでは、テーブルのReadMeの作成や、カラム説明の機能等、共有を受ける側が利用したいデータであるかの判断や検索をしやすくするための機能を設けています。
また、アセットではアセットを作成しただけでは、他プロジェクトで見ることが出来ず、アセットを公開することに、データカタログ機能(※)で公開されます。公開されたアセットの公開解除することも可能です。
※データカタログ機能:アセットを検索するための機能
アセットを利用したい側は対象アセットをサブクライブし、データ共有元にプロジェクトで承認をすることで初めてアセットを利用できる様になります。
アセットが承認されると、Amazon SageMaker Lakehouse の自身のプロジェクトのデータ一覧にアセットのテーブルが加わり、RedshiftやS3データレイクのデータ同様にクエリを実行することが可能です。
そのため、アセットのデータと自身のプロジェクト内のデータを横断利用したデータ分析も可能となります。
まとめ
他にもできることは多くありそうですが、現時点で理解が進んだ機能は以上となります。
今後も他機能も含めてAmazon SageMaker Lakehouseの理解を深め具体的なユースケースを検討していきたいですね。