このドキュメントでは、Dataplex Universal Catalog 内のメタデータが作成、更新、削除されたときに、Pub/Sub を介して通知を受信するように、Dataplex Universal Catalog メタデータ変更フィードを構成する方法について説明します。
メタデータ変更フィードの詳細については、 メタデータ変更フィードの概要をご覧ください。
始める前に
Pub/Sub と Dataplex Universal Catalog API について理解しておいてください。
-
Dataplex Universal Catalog API と Pub/Sub API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。 通知を受信するための Pub/Sub トピックを作成します。詳細については、トピックを作成するをご覧ください。
をインストールします
gcloudgcloudの短いエイリアスが設定されていることを確認します。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など)
必要なロールと権限
メタデータ変更フィードを構成するには、自分と Dataplex Universal 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トピックに対する
-
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
Dataplex Universal Catalog サービス アカウントのロールと権限
Dataplex Universal Catalog サービス アカウントにメタデータ変更フィード メッセージをパブリッシュするために必要な
権限が付与されるようにするには、
Pub/Sub トピックの Dataplex Universal Catalog サービス アカウントに
Pub/Sub パブリッシャー (roles/pubsub.publisher)
IAM ロールを付与するよう管理者に依頼してください。
この事前定義ロールには、
pubsub.topics.publish
権限が含まれています。
この権限は、
メタデータ変更フィード メッセージをパブリッシュするために必要です。
管理者は、Dataplex Universal Catalog サービス アカウントに この権限 を、カスタムロールや 他の事前定義ロールで付与することもできます。
Dataplex Universal Catalog サービス アカウントに権限を付与する
Dataplex Universal Catalog サービス エージェントは、Dataplex API を有効にすると作成されます。サービス エージェントは、次のメールアドレスで識別できます。
service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com
ここで、PROJECT_NUMBER は Dataplex API を有効にしたプロジェクトのプロジェクト番号です。
Dataplex Universal Catalog サービス アカウントには、Pub/Sub
トピックにメッセージをパブリッシュする機能が必要です。
この権限を付与するには、Pub/Sub トピックに対する
Pub/Sub パブリッシャーのロール
(roles/pubsub.publisher)をサービス アカウントに付与します。
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"
次のように置き換えます。
TOPIC_ID: メタデータ変更フィード メッセージがパブリッシュされる Pub/Sub トピックの ID。PROJECT_NUMBER: サービス アカウントが配置されている Dataplex Universal Catalog プロジェクトのプロジェクト番号。
コンソール
コンソールで、Pub/Sub の [トピック] ページに移動します。 Google Cloud
メタデータ フィード通知に使用するトピックを選択し、必要に応じて [情報パネルを表示] をクリックします。
[権限] タブで、[プリンシパルを追加] をクリックします。
[**新しいプリンシパル**] フィールドに、Dataplex Universal Catalog サービス アカウントを入力します。
service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com[ロールを割り当てる] フィールドで、[Pub/Sub パブリッシャー] を選択します。
[保存] をクリックします。
メタデータ変更フィードを作成する
どの変更で通知を生成するかを制御するには、特定のリソースをモニタリングするようにメタデータ変更フィードを構成します。これを行うには、組織全体、特定のプロジェクト、特定のエントリ グループなどのスコープを指定します。 スコープを使用すると、モニタリングするリソースを定義できますが、フィルタを使用して、Dataplex Universal 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
}
メタデータ変更フィードを表示する
メタデータ変更フィードの詳細を表示できます。
REST
メタデータ変更フィードを表示するには、
projects.locations.metadataFeeds.get
メソッドを使用します。
次のコマンドを実行します。
gcurl "https://${DATAPLEX_API}/metadataFeeds/FEED_ID"
次のように置き換えます。
FEED_ID: 表示するメタデータ変更フィード ID(example-feedなど)
メタデータ変更フィードを一覧表示する
プロジェクトとロケーションのメタデータ変更フィードを一覧表示できます。
REST
メタデータ変更フィードを一覧表示するには、
projects.locations.metadataFeeds.list
メソッドを使用します。
次のコマンドを実行します。
gcurl "https://${DATAPLEX_API}/metadataFeeds"
メタデータ変更フィードを更新する
既存のメタデータ変更フィードのスコープまたはフィルタを更新できます。
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 サブスクリプション内の未処理のメッセージをすべて処理していることを確認してください。
REST
メタデータ変更フィードを削除するには、
projects.locations.metadataFeeds.delete
メソッドを使用します。
次のコマンドを実行します。
gcurl -X DELETE \
"https://${DATAPLEX_API}/metadataFeeds/FEED_ID"
次のように置き換えます。
FEED_ID: 削除するメタデータ変更フィード ID(example-feedなど)
通知メッセージを使用する
メタデータ変更フィードを構成すると、メタデータの変更が発生したときに、Dataplex Universal 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 メッセージの処理の詳細については、 pull サブスクリプションからメッセージを受信するをご覧ください。メッセージ形式については、 データ ペイロードをご覧ください。