このドキュメントでは、Knowledge Catalog(旧称 Dataplex Universal Catalog)のメタデータ変更フィードを構成して、Knowledge Catalog 内のメタデータが作成、更新、削除されたときに Pub/Sub を介して通知を受け取る方法について説明します。
メタデータ変更フィードの詳細については、メタデータ変更フィードの概要をご覧ください。
始める前に
Pub/Sub と Dataplex API について理解する。
-
Dataplex API と Pub/Sub API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。 通知を受信する Pub/Sub トピックを作成します。詳細については、トピックを作成するをご覧ください。
gcloudをインストールします。gcloudの短いエイリアスが設定されていることを確認します。gcurlのエイリアスを設定します。これにより、認証トークンを含むショートカットが作成され、API リクエストの JSON コンテンツ タイプが設定されます。alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'DATAPLEX_API変数を設定します。DATAPLEX_API="dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION"次のように置き換えます。
PROJECT_ID: Dataplex API が有効になっているプロジェクト IDLOCATION: ジョブが実行されるロケーション(例:us-central1、europe-west3、asia-south1)
必要なロールと権限
メタデータ変更フィードを構成するには、自分と Knowledge Catalog サービス アカウントに必要な IAM ロールと権限があることを確認します。
ユーザーの役割と権限
メタデータをエクスポートし、メタデータ変更フィード メッセージにアクセスするために必要な権限を取得するには、プロジェクトまたは組織に対する次の IAM ロールを付与するよう管理者に依頼してください。
- メタデータをエクスポートする: Dataplex エントリ グループ エクスポータ (
roles/dataplex.entryGroupExporter) - メタデータ変更フィード メッセージにアクセスする: Pub/Sub サブスクライバー (
roles/pubsub.subscriber)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、メタデータのエクスポートとメタデータ変更フィード メッセージへのアクセスに必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
メタデータをエクスポートしてメタデータ変更フィード メッセージにアクセスするには、次の権限が必要です。
- メタデータをエクスポートする:
- プロジェクトに対する
dataplex.metadataFeeds.create - フィードのスコープを定義するリソース(組織、プロジェクト、エントリ グループ)に対する
dataplex.entryGroups.export - プロジェクトに対する
resourcemanager.projects.get - プロジェクトに対する
resourcemanager.projects.list
- プロジェクトに対する
-
メタデータ変更フィード メッセージにアクセスする:
- サブスクリプションに対する
pubsub.subscriptions.consume - トピックに対する
pubsub.topics.attachSubscription
- サブスクリプションに対する
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
Knowledge Catalog サービス アカウントのロールと権限
Knowledge Catalog サービス アカウントにメタデータ変更フィード メッセージを公開するために必要な権限が付与されていることを確認するには、Pub/Sub トピックに対する Pub/Sub パブリッシャー(roles/pubsub.publisher)と Pub/Sub 閲覧者(roles/pubsub.viewer)の IAM ロールを Knowledge Catalog サービス アカウントに付与するよう管理者に依頼してください。
この事前定義ロールには、メタデータ変更フィード メッセージのパブリッシュに必要な pubsub.topics.publish 権限と pubsub.topics.get 権限が含まれています。
管理者は、カスタムロールや他の事前定義ロールを使用して、この権限を Knowledge Catalog サービス アカウントに付与することもできます。
Knowledge Catalog サービス アカウントに権限を付与する
Knowledge Catalog のサービス エージェントは、Dataplex API を有効にすると作成されます。サービス エージェントは、次のメール ID で識別できます。
service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com
ここで、PROJECT_NUMBER は Dataplex API を有効にしたプロジェクトのプロジェクト番号です。
Knowledge Catalog サービス アカウントには、Pub/Sub トピックにメッセージをパブリッシュし、トピック メタデータを取得する機能が必要です。これらの権限を付与するには、Pub/Sub トピックに対する Pub/Sub パブリッシャーのロール(roles/pubsub.publisher)と Pub/Sub 閲覧者のロール(roles/pubsub.viewer)をサービス アカウントに付与します。
gcloud
gcloud pubsub topics add-iam-policy-binding コマンドを実行します。
gcloud pubsub topics add-iam-policy-binding TOPIC_ID \
--member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com" \
--role="roles/pubsub.publisher"
gcloud pubsub topics add-iam-policy-binding TOPIC_ID \
--member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com" \
--role="roles/pubsub.viewer"
次のように置き換えます。
TOPIC_ID: メタデータ変更フィード メッセージが公開される Pub/Sub トピックの ID。PROJECT_NUMBER: サービス アカウントが配置されている Knowledge Catalog プロジェクトのプロジェクト番号。
コンソール
Google Cloud コンソールで、Pub/Sub の [トピック] ページに移動します。
メタデータ フィード通知に使用しているトピックを選択し、必要に応じて [情報パネルを表示] をクリックします。
[権限] タブで、[プリンシパルを追加] をクリックします。
[新しいプリンシパル] フィールドに、Knowledge Catalog サービス アカウント(
service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com)を入力します。[ロールを割り当てる] フィールドで、[Pub/Sub パブリッシャー] を選択します。
[別のロールを追加] をクリックし、[Pub/Sub 閲覧者] を選択します。
[保存] をクリックします。
メタデータ変更フィードを作成する
通知を生成する変更を制御するには、特定のリソースをモニタリングするようにメタデータ変更フィードを構成します。これを行うには、組織全体、特定のプロジェクト、特定のエントリ グループなどのスコープを指定します。スコープを使用すると、モニタリングするリソースを定義できます。フィルタを使用すると、Knowledge Catalog が通知を送信するタイミングをさらに絞り込むことができます。
詳細については、メタデータ変更フィードをご覧ください。
C#
C#
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある C# の設定手順を行ってください。詳細については、Knowledge Catalog C# API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Go
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Go の設定手順を行ってください。詳細については、Knowledge Catalog Go API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Java
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Java の設定手順を行ってください。詳細については、Knowledge Catalog Java API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Node.js
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Node.js の設定手順を行ってください。詳細については、Knowledge Catalog Node.js API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Python
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Python の設定手順を行ってください。詳細については、Knowledge Catalog Python API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
REST
メタデータ変更フィードを作成するには、projects.locations.metadataFeeds.create メソッドを使用します。
組織スコープ
次のコマンドを実行して、組織全体をモニタリングするメタデータ変更フィードを作成します。
gcurl -X POST -d "$(cat <<EOF
{
"scope": {
"organizationLevel": true
},
"pubsubTopic": "projects/PROJECT_ID_PUBSUB/topics/TOPIC_ID"
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds?metadataFeedId=FEED_ID"
次のように置き換えます。
PROJECT_ID_PUBSUB: Pub/Sub トピックが配置されているプロジェクト ID(例:example-project)TOPIC_ID: メタデータ変更フィード メッセージが公開される Pub/Sub トピック ID(例:example-topic)FEED_ID: 作成するメタデータ変更フィード ID(例:example-feed)
プロジェクトのスコープ
次のコマンドを実行して、特定のプロジェクトをモニタリングするメタデータ変更フィードを作成します。
gcurl -X POST -d "$(cat <<EOF
{
"scope": {
"projects": [
"projects/PROJECT_ID_1",
"projects/PROJECT_ID_2"
]
},
"pubsubTopic": "projects/PROJECT_ID_PUBSUB/topics/TOPIC_ID"
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds?metadataFeedId=FEED_ID"
次のように置き換えます。
PROJECT_ID_PUBSUB: Pub/Sub トピックが配置されているプロジェクト ID(例:example-project)TOPIC_ID: メタデータ変更フィード メッセージが公開される Pub/Sub トピック ID(例:example-topic)FEED_ID: 作成するメタデータ変更フィード ID(例:example-feed)
エントリ グループのスコープ
次のコマンドを実行して、特定のエントリ グループをモニタリングするメタデータ変更フィードを作成します。
gcurl -X POST -d "$(cat <<EOF
{
"scope": {
"entryGroups": [
"projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID_1",
"projects/PROJECT_ID/locations/LOCATION/entryGroups/ENTRY_GROUP_ID_2"
]
},
"pubsubTopic": "projects/PROJECT_ID_PUBSUB/topics/TOPIC_ID"
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds?metadataFeedId=FEED_ID"
次のように置き換えます。
PROJECT_ID_PUBSUB: Pub/Sub トピックが配置されているプロジェクト ID(例:example-project)LOCATION: フィードを作成するロケーション(例:us-central1)ENTRY_GROUP_ID: モニタリングするエントリ グループ ID(例:example-entry-group)TOPIC_ID: メタデータ変更フィード メッセージが公開される Pub/Sub トピック ID(例:example-topic)FEED_ID: 作成するメタデータ変更フィード ID(例:example-feed)
フィルタあり
次のコマンドを実行して、フィルタ(エントリタイプでフィルタ)を使用してメタデータ変更フィードを作成します。
gcurl -X POST -d "$(cat <<EOF
{
"scope": {
"projects": [
"projects/PROJECT_ID_1",
"projects/PROJECT_ID_2"
]
},
"filter": {
"entryTypes": [
"projects/PROJECT_ID/locations/global/entryTypes/bigquery-table"
]
},
"pubsubTopic": "projects/PROJECT_ID_PUBSUB/topics/TOPIC_ID"
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds?metadataFeedId=FEED_ID"
次のように置き換えます。
PROJECT_ID_PUBSUB: Pub/Sub トピックが配置されているプロジェクト ID(例:example-project)TOPIC_ID: メタデータ変更フィード メッセージが公開される Pub/Sub トピック ID(例:example-topic)FEED_ID: 作成するメタデータ変更フィード ID(例:example-feed)
対応:
{
"name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.dataplex.v1.OperationMetadata",
"createTime": "2023-10-02T15:01:23Z",
"target": "projects/PROJECT_ID/locations/LOCATION/metadataFeeds/FEED_ID",
"verb": "create",
"apiVersion": "v1"
},
"done": false
}
メタデータの変更フィードを表示する
メタデータ変更フィードの詳細を表示できます。
C#
C#
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある C# の設定手順を行ってください。詳細については、Knowledge Catalog C# API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Go
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Go の設定手順を行ってください。詳細については、Knowledge Catalog Go API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Java
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Java の設定手順を行ってください。詳細については、Knowledge Catalog Java API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Node.js
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Node.js の設定手順を行ってください。詳細については、Knowledge Catalog Node.js API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Python
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Python の設定手順を行ってください。詳細については、Knowledge Catalog Python API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
REST
メタデータ変更フィードを表示するには、projects.locations.metadataFeeds.get メソッドを使用します。
次のコマンドを実行します。
gcurl "https://${DATAPLEX_API}/metadataFeeds/FEED_ID"
次のように置き換えます。
FEED_ID: 表示するメタデータ変更フィード ID(例:example-feed)
メタデータ変更フィードを一覧表示する
プロジェクトとロケーションのメタデータ変更フィードを一覧表示できます。
C#
C#
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある C# の設定手順を行ってください。詳細については、Knowledge Catalog C# API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Go
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Go の設定手順を行ってください。詳細については、Knowledge Catalog Go API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Java
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Java の設定手順を行ってください。詳細については、Knowledge Catalog Java API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Node.js
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Node.js の設定手順を行ってください。詳細については、Knowledge Catalog Node.js API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Python
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Python の設定手順を行ってください。詳細については、Knowledge Catalog Python API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
REST
メタデータ変更フィードを一覧表示するには、projects.locations.metadataFeeds.list メソッドを使用します。
次のコマンドを実行します。
gcurl "https://${DATAPLEX_API}/metadataFeeds"
メタデータ変更フィードを更新する
既存のメタデータ変更フィードのスコープまたはフィルタを更新できます。
C#
C#
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある C# の設定手順を行ってください。詳細については、Knowledge Catalog C# API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Go
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Go の設定手順を行ってください。詳細については、Knowledge Catalog Go API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Java
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Java の設定手順を行ってください。詳細については、Knowledge Catalog Java API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Node.js
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Node.js の設定手順を行ってください。詳細については、Knowledge Catalog Node.js API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Python
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Python の設定手順を行ってください。詳細については、Knowledge Catalog Python API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
REST
メタデータ変更フィードを更新するには、projects.locations.metadataFeeds.patch メソッドを使用します。
次のコマンドを実行して、メタデータ変更フィードを更新し、エントリ タイプ フィルタを削除します。
gcurl -X PATCH -d "$(cat <<EOF
{
"filter": {
"entryTypes": []
}
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds/FEED_ID?updateMask=filter"
次のように置き換えます。
FEED_ID: 更新するメタデータ変更フィード ID(例:example-feed)
メタデータ変更フィードを削除する
通知を受け取る必要がなくなった場合は、メタデータ変更フィードを削除できます。
メタデータ変更フィードを削除すると、フィードが新しいメタデータ変更を Pub/Sub トピックにパブリッシュしなくなります。ただし、フィードに関連付けられているトピックやサブスクリプションは削除されません。不要になった場合は、手動で削除する必要があります。
フィードまたはサブスクリプションを削除する前に、サブスクライバー アプリケーションが Pub/Sub サブスクリプションの未処理のメッセージをすべて処理していることを確認してください。
C#
C#
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある C# の設定手順を行ってください。詳細については、Knowledge Catalog C# API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Go
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Go の設定手順を行ってください。詳細については、Knowledge Catalog Go API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Java
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Java の設定手順を行ってください。詳細については、Knowledge Catalog Java API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Node.js
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Node.js の設定手順を行ってください。詳細については、Knowledge Catalog Node.js API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Python
このサンプルを試す前に、クライアント ライブラリを使用した Knowledge Catalog のクイックスタートにある Python の設定手順を行ってください。詳細については、Knowledge Catalog Python API のリファレンス ドキュメントをご覧ください。
Knowledge Catalog への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
REST
メタデータ変更フィードを削除するには、projects.locations.metadataFeeds.delete メソッドを使用します。
次のコマンドを実行します。
gcurl -X DELETE \
"https://${DATAPLEX_API}/metadataFeeds/FEED_ID"
次のように置き換えます。
FEED_ID: 削除するメタデータ変更フィード ID(例:example-feed)
通知メッセージを使用する
メタデータ変更フィードを構成すると、メタデータの変更が発生したときに、Knowledge Catalog は指定された Pub/Sub トピックにメッセージをパブリッシュします。これらのメッセージを使用するには、トピックに対する Pub/Sub サブスクリプションを作成します。
たとえば、pull サブスクリプションを作成し、Google Cloud CLI を使用してメッセージを表示できます。
サブスクリプションを作成します。
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_ID次のように置き換えます。
SUBSCRIPTION_ID: 作成するサブスクリプション IDTOPIC_ID: メタデータ変更フィード メッセージが公開される Pub/Sub トピック ID。
サブスクリプションからメッセージを pull します。
gcloud pubsub subscriptions pull SUBSCRIPTION_ID --auto-ack --limit=10次のように置き換えます。
SUBSCRIPTION_ID: メッセージを pull するサブスクリプション ID
Pub/Sub メッセージの処理の詳細については、プル サブスクリプションからメッセージを受信するをご覧ください。メッセージ形式については、データ ペイロードをご覧ください。