0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SageMaker Unified Studio で Glue テーブルのアセットを作成する手順

0
Last updated at Posted at 2026-08-21

アセットとは?

SageMaker Unified Studio(DataZone)における「アセット」とは、テーブルやビューなどのデータオブジェクト1つに対応するカタログ上の管理単位です。

  • Glue テーブル 1 つ = アセット 1 つ
  • アセットにはビジネス名、説明、グロサリー用語、メタデータフォーム等のビジネスコンテキストを付与できる
  • パブリッシュするとドメイン全体のユーザーがカタログ検索で発見可能になる
  • 実データのコピーではなく、メタデータの管理単位

SageMaker Unified Studio(DataZone V2)では、Glue Data Catalog のテーブルに対してビジネスメタデータ(グロサリー用語、メタデータフォーム、説明等)を付与してカタログとして運用したり、サブスクリプション(アクセス申請→承認)でプロジェクト間でデータアクセスを管理するには、テーブルを「アセット」としてカタログに登録する必要があります。

また、SageMaker Data Agent ではアセットに付与されたビジネスメタデータを参照して、自然言語でのデータ発見やコード生成を行うことが出来ます。Data Agent を活用した AI Ready なデータ基盤を構築する上でも、アセット登録とビジネスメタデータの整備は重要です。

本記事では、AWS CLI を使って Glue テーブルに対するデータソースを作成し、データソースランを実行してアセットを生成するまでの手順を解説します。

前提条件

  • SageMaker Unified Studio ドメイン(IdC ベース / V2)が作成済み
  • 対象プロジェクトが存在し、Glue 接続(connection)が設定済み
  • 対象の Glue テーブルが Glue Data Catalog に存在

事前確認: プロジェクトの Glue 接続 ID を取得

データソース作成時に --connection-identifier で指定する Glue 接続 ID を確認します。接続はプロジェクト作成時に自動生成されます。

aws datazone list-connections \
  --domain-identifier <ドメインID> \
  --project-identifier <プロジェクトID> \
  --region ap-northeast-1

"type": "GLUE"connectionId を控えておきます。

必要な Lake Formation 権限

プロジェクトの IAM ロール(datazone_usr_role_<プロジェクトID>_<サフィックス>)に対して、以下の Lake Formation 権限が必要です。

最小権限(データソース作成 + クエリ実行)

レベル 必要な権限
データベース DESCRIBE
テーブル DESCRIBE, SELECT

フル権限(+ サブスクリプションで他プロジェクトへ共有する場合)

レベル 必要な権限
データベース DESCRIBE, DESCRIBE_GRANTABLE
テーブル DESCRIBE, SELECT, DESCRIBE_GRANTABLE, SELECT_GRANTABLE

権限付与コマンド

データベースレベル:

aws lakeformation grant-permissions \
  --principal '{"DataLakePrincipalIdentifier": "arn:aws:iam::<AWSアカウントID>:role/datazone_usr_role_<プロジェクトID>_<サフィックス>"}' \
  --resource '{"Database": {"CatalogId": "<AWSアカウントID>", "Name": "<Glueデータベース名>"}}' \
  --permissions '["DESCRIBE"]' \
  --permissions-with-grant-option '["DESCRIBE"]' \
  --region ap-northeast-1

テーブルレベル:

aws lakeformation grant-permissions \
  --principal '{"DataLakePrincipalIdentifier": "arn:aws:iam::<AWSアカウントID>:role/datazone_usr_role_<プロジェクトID>_<サフィックス>"}' \
  --resource '{"Table": {"CatalogId": "<AWSアカウントID>", "DatabaseName": "<Glueデータベース名>", "Name": "<テーブル名>"}}' \
  --permissions '["DESCRIBE", "SELECT"]' \
  --permissions-with-grant-option '["DESCRIBE", "SELECT"]' \
  --region ap-northeast-1

プロジェクトの IAM ロール名は get-data-source の結果に含まれる dataAccessRole で確認できます。

全体フロー

1. create-data-source   → データソース定義を作成
2. get-data-source      → ステータスが READY になったことを確認
3. start-data-source-run → Glue テーブルのメタデータをスキャン
4. get-data-source-run  → ステータスが SUCCESS になったことを確認
5. search (ASSET)       → アセットが作成されたことを確認

手順

Step 1: データソースの作成

aws datazone create-data-source \
  --domain-identifier <ドメインID> \
  --project-identifier <プロジェクトID> \
  --name "<データソース名>" \
  --type GLUE \
  --connection-identifier <接続ID> \
  --configuration '{
    "glueRunConfiguration": {
      "catalogName": "<AWSアカウントID>",
      "autoImportDataQualityResult": true,
      "relationalFilterConfigurations": [{
        "databaseName": "<Glueデータベース名>",
        "filterExpressions": [{
          "type": "INCLUDE",
          "expression": "<テーブル名>"
        }]
      }]
    }
  }' \
  --recommendation '{"enableBusinessNameGeneration": false}' \
  --enable-setting ENABLED \
  --no-publish-on-import \
  --region ap-northeast-1

出力例:

{
    "id": "dtp3ka0l89zz15",
    "status": "CREATING"
}

主要パラメータの説明

パラメータ 説明
--domain-identifier DataZone ドメイン ID(dzd-xxxxx
--project-identifier アセットを所属させるプロジェクト ID
--connection-identifier Glue 接続の ID(プロジェクト作成時に自動生成される)
catalogName AWS アカウント ID
databaseName Glue データベース名
filterExpressions 取り込むテーブルのフィルタ(* で全テーブル)
--no-publish-on-import アセット作成時にカタログへ自動パブリッシュしない
enableBusinessNameGeneration AI によるビジネス名自動生成の有無

今回は検証のためにオンデマンドで start-data-source-run を実行しますが、--schedule を設定することで、定期的に実行してスキーマの更新等も可能です。

Step 2: データソースのステータス確認

aws datazone get-data-source \
  --domain-identifier <ドメインID> \
  --identifier <Step1で取得したデータソースID> \
  --region ap-northeast-1

成功時の出力(抜粋):

{
    "id": "dtp3ka0l89zz15",
    "status": "READY",
    "type": "GLUE",
    "name": "<データソース名>",
    "configuration": {
        "glueRunConfiguration": {
            "catalogName": "<AWSアカウントID>",
            "relationalFilterConfigurations": [{
                "databaseName": "<Glueデータベース名>",
                "filterExpressions": [{"type": "INCLUDE", "expression": "<テーブル名>"}]
            }],
            "autoImportDataQualityResult": true
        }
    },
    "publishOnImport": false,
    "lastRunAssetCount": 0
}

"status": "READY" になっていれば成功です。

Step 3: データソースランの実行

aws datazone start-data-source-run \
  --domain-identifier <ドメインID> \
  --data-source-identifier <データソースID> \
  --region ap-northeast-1

出力例:

{
    "id": "5173nxdn633hnd",
    "status": "REQUESTED"
}

Step 4: データソースランの結果確認

aws datazone get-data-source-run \
  --domain-identifier <ドメインID> \
  --identifier <Step3で取得したランID> \
  --region ap-northeast-1

成功時の出力(抜粋):

{
    "id": "5173nxdn633hnd",
    "status": "SUCCESS",
    "runStatisticsForAssets": {
        "added": 1,
        "updated": 0,
        "unchanged": 0,
        "failed": 0
    },
    "lineageSummary": {
        "importStatus": "SUCCESS"
    }
}

"status": "SUCCESS" かつ "added": 1 であればアセット作成完了です。

Step 5: 作成されたアセットの確認

aws datazone search \
  --domain-identifier <ドメインID> \
  --owning-project-identifier <プロジェクトID> \
  --search-scope ASSET \
  --search-text "<テーブル名>" \
  --region ap-northeast-1

出力例:

{
    "items": [
        {
            "assetItem": {
                "identifier": "6b8qjy97lm9qxl",
                "name": "<テーブル名>",
                "typeIdentifier": "amazon.datazone.GlueTableAssetType",
                "externalIdentifier": "arn:aws:glue:ap-northeast-1:<AWSアカウントID>:table/<データベース名>/<テーブル名>.<プロジェクトID>",
                "createdBy": "SYSTEM",
                "owningProjectId": "<プロジェクトID>"
            }
        }
    ],
    "totalMatchCount": 1
}

次のステップ

アセット作成後は、以下のキュレーション作業を行うことでカタログとしての価値が高まります:

  1. ビジネス名・説明の追加t_dy_zaiko → 「日次確定在庫」のように、検索しやすい名前と説明を付与
  2. グロサリー用語の紐付け — 組織共通の用語と関連付け
  3. メタデータフォームの添付 — 要件に応じてデータオーナー、更新頻度、個人情報区分等を構造化
  4. パブリッシュ — ドメイン全体のユーザーが検索・発見可能に

UI からの確認

CLI でのデータソースラン完了後、SageMaker Unified Studio の UI からもアセットが作成されていることを確認できました。

  1. 左側ハンバーガーメニューの一番下 管理->アセットを選択
  2. アセットを検索 の検索窓にGlueテーブル名を入力
  3. 作成されたアセットが表示される

SageMaker Unified Studio アセット詳細画面

アセット詳細画面では以下が確認できます:

  • ビジネスメタデータタブ — 概要、README、用語集の用語、メタデータフォームの確認・編集
  • メタデータフォーム「AWS Glue テーブル」 — Glue データカタログ ID、データベース名、場所、リージョン、テーブル ARN 等がデータソースランにより自動設定
  • 右ペイン(アセットの詳細) — 所有プロジェクト、ドメインユニット、サブスクリプションの承認設定、最終更新者(SYSTEM)、作成日時等

ここから README の作成、用語の追加、メタデータフォームの追加、「アセットを公開」(パブリッシュ)等の次のステップに進めます。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?