はじめに
本記事は、SageMaker Unified Studio を使ったデータカタログ構築の入門記事です。
そもそも「アセット」とは何か、なぜ必要なのかといった概念を整理します。
この記事で記載していること
- アセットとは何か
- ドメイン・プロジェクト・アセットの関係性
- パブリッシュとサブスクリプションの仕組み
- アセットを整備するメリット
前提知識
- Glue Data Catalog(データベース / テーブル)の基礎知識
- Lake Formation の概要(権限管理の考え方)を知っていると理解がスムーズです
アセットとは?
SageMaker Unified Studio(DataZone)における「アセット」とは、テーブルやビューなどのデータオブジェクトに対応するカタログ上の管理単位です。
- Glue テーブル 1 つ = アセット 1 つ
- アセットにはビジネス名、Description、データオーナー、個人情報の有無など様々なビジネスコンテキストを付与できる
- 実データではなく、メタデータの管理単位
いわゆるセマンティックレイヤーってやつですね。
最近よく耳にするようになった AI-Ready なデータ基盤構築に必要な要素がアセットです。
具体例: Glue テーブル sales_transactions をアセット化した場合
例えば、Glue Data Catalog 上に sales_transactions というテーブルがあるとします。このテーブルをアセットとして登録し、ビジネスコンテキストを付与すると以下のようになります。
このように、Glue 側のテーブル名 (sales_transactions) やカラム名 (txn_amt) だけでは分からない「このデータは何を意味するのか」「誰が管理しているのか」「データの更新頻度」といったビジネス上の文脈を付与できるのがアセットです。
アセットは元々 Glue Data Catalog 側で保持されているスキーマ、S3 Location などの技術的なメタデータも包含しています。
Glue Data Catalog をセマンティックレイヤーに拡張するための箱というイメージで良いと思います。
| 項目 | テクニカル情報(Glue Data Catalog 側) | ビジネスコンテキスト(アセット側で付与) |
|---|---|---|
| 名前 | sales_transactions |
売上トランザクション |
| 説明 | (なし) | EC サイトにおける全注文の売上明細データ。1 行 = 1 注文明細。返品・キャンセルを含む |
カラム: txn_amt |
DOUBLE 型 | ビジネス名: 取引金額(税込)、説明: 消費税込みの決済金額(日本円) |
カラム: cust_id |
STRING 型 | ビジネス名: 顧客 ID、説明: 顧客マスタの主キーと結合可能 |
| メタデータフォーム | — | データオーナー: セールスチーム、更新頻度: 日次、PII 有無: なし |
なお、Glue テーブル/ビューだけでなく、以下のような対象にアセットを作成することも可能です。
| 対象 | 補足 |
|---|---|
| Redshift テーブル/ビュー | None |
| S3 オブジェクトコレクション | Amazon S3 バケット/プレフィックス内のオブジェクト集合 |
| 機械学習リソース | SageMaker モデル、パイプライン、学習用データセット、Jupyter Notebook 等 |
| BI / 可視化ダッシュボード | Amazon QuickSight, Tableau, Power BI 等のレポート |
SageMaker Unified Studio でのアセットの役割を理解する上で、ドメインとプロジェクトとの関係性の理解が必要ですが、以下のようなイメージになります。
親子関係は、ドメイン->プロジェクト->アセットの順序で、プロジェクトはアセット毎に作成します。
| 概念 | 説明 |
|---|---|
| ドメイン | 組織全体のデータガバナンスの最上位単位 |
| プロジェクト | ドメイン内のチーム単位の作業空間。アセットの所有権、IAM ロール、接続情報がプロジェクトに紐づく |
| アセット | プロジェクトに所属するカタログ上の管理単位。パブリッシュによりドメイン内の全プロジェクトに公開される |
プロジェクト分割の方針
プロジェクトはデータのアクセス制御の境界です。以下のような観点で分割するのが一般的だと考えています。
| 分割パターン | 例 |
|---|---|
| チーム/部署単位 | セールス / マーケティング / 経営 |
| 事業ドメイン単位 | 食料品ドメイン / 日用品ドメイン / 医薬品ドメイン |
パブリッシュとサブスクリプション
アセットのパブリッシュとサブスクリプションは、プロジェクト間でデータを共有するための仕組みです。
以下の図で、セールスプロジェクトがアセットをパブリッシュし、マーケティングプロジェクトがサブスクリプションを通じて実データにアクセスするまでの流れを示します。
パブリッシュするとドメイン内の全プロジェクトからアセットを探索・発見できるようになりますが、実データを参照するにはサブスクリプション(申請→承認)が必要です。
なぜアセットが必要?
1. AI エージェントの活用
SageMaker Data Agent ではアセットに付与されたビジネスメタデータを参照して、自然言語でデータセットを探索したり、SQL、Python などのコード生成を行うことが出来ます。Data Agent を活用した AI Ready なデータ基盤を構築する上で、アセット登録とビジネスメタデータの整備は重要です。
具体的にはアセット、ビジネスメタデータを整備することで Data Agent を利用して以下のようなことが可能になります。
- データの探索
- 「顧客離脱に関するデータはありますか?」
- 該当するデータを保有する可能性があるアセットを一覧で提示してくれる。
- コード生成
- 「2026 年 Q3-Q4 における顧客維持率を計算してください。」
- 適切なテーブル(アセット)とカラムを使用して、SQL or PySpark コードを生成してくれる。
なお、現時点で SageMaker Data Agent は Unified Studio 内のノートブック、クエリエディタからのみ利用可能です。
また、DataZone の SearchListings API を使用すると、アセットに対してセマンティック (自然言語) 検索が可能です。
さらに GetListing API でアセットに付与されたビジネスメタデータを取得できるので、これらの API を活用することで、データ基盤向けの AI エージェントを作成することも可能です。
自前の AI エージェントに関しては、Github にサンプルリポジトリもあるので、こちらの AWS ブログの内容が参考になりそうです。
この AWS ブログのサンプルリポジトリでは、SearchListings API を呼ぶ時、searchText を英語に翻訳していますが、動作確認したところ、アセットのビジネスメタデータを日本語で記述している場合、日本語のままの方が検索精度が高かったので、日本語のままでも良さそうでした。
2. データコラボレーション
アセットを作成してパブリッシュすることで、ドメインに属する全プロジェクトのメンバーがカタログからデータを探索・発見できるようになります。さらに、サブスクリプション(申請→承認)を通じて実データへのアクセス権が付与されるため、データオーナーがガバナンスを維持しながらも、チーム間のデータコラボレーションをスムーズに実現できます。
複数のアセットを一つのデータプロダクトとしてまとめてパブリッシュ/サブスクリプションしたりもできます。
3. データガバナンス
アセットは単にデータを共有するだけでなく、サブスクリプション(申請→承認)を軸にしたアクセス制御の起点になります。前述の通り、パブリッシュしても実データの参照にはサブスクリプションが必要で、データオーナーが承認することで初めてアクセス権が付与されます。
さらに、承認時に アセットフィルター(Asset Filter) を適用することで、同じアセット(=同じ Glue テーブル)でも、購読するプロジェクトごとに参照できる列・行を変えることができます。
アセットフィルターとは
アセットフィルターは、アセットに対して定義しておく「参照可能な列・行の絞り込み設定」です。
| フィルター種別 | 用途 |
|---|---|
| カラムフィルター | 参照を許可する列を指定 |
| 行フィルター | 参照を許可する行を条件式で指定 |
プロジェクトごとにフィルターを出し分ける
サブスクリプションはプロジェクト単位で発生します。承認者はサブスクリプション要求ごとに「フルアクセス」か「フィルター適用」かを選べるため、結果としてプロジェクトごとに異なるフィルターを適用できます。
例えば「個人情報を含む売上テーブル」を 1 つのアセットとして公開し、プロジェクトに応じて次のように出し分けられます。
- 経営分析プロジェクトからの購読 → 承認時に フィルター A(全カラム) を適用 → 個人情報を含む全列を参照可能
- 全社分析プロジェクトからの購読 → 承認時に フィルター B(個人情報カラム除外) を適用 → 個人情報なしの列のみ参照可能
承認されたフィルターは AWS Lake Formation の Data Cell Filter に変換され、購読プロジェクトのメンバーには許可された列・行のみに SELECT 権限が付与されます。
次のステップ
実際にアセットを作成する方法は以下の記事に記載しています。
- 【SageMaker Unified Studio】Glue テーブルに対してアセットを作成する
- 【SageMaker Unified Studio】Zero-ETL 統合ターゲット Redshift タイプ Glue カタログに対してアセットを作成する
関連記事
- Data Agent 活用の観点で SageMaker Unified Studio のアセットに付与すべきビジネスコンテキストと優先度
- SageMaker Unified Studio アセットにビジネスメタデータをAWS CLIから付与する