本文档介绍了如何配置 Dataplex Universal Catalog 元数据更改 Feed,以便在 Dataplex Universal Catalog 中的元数据被创建、更新或删除时通过 Pub/Sub 接收通知。
如需详细了解元数据更改 Feed,请参阅元数据更改 Feed 概览。
准备工作
熟悉 Pub/Sub 和 Dataplex Universal Catalog API。
-
Enable the Dataplex Universal Catalog and Pub/Sub APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. 创建 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
所需的角色和权限
如需配置元数据更改 Feed,请确保您和 Dataplex Universal Catalog 服务账号拥有所需的 IAM 角色和权限。
用户角色和权限
如需获得导出元数据和访问元数据更改 Feed 消息所需的权限,请让您的管理员为您授予项目或组织的以下 IAM 角色:
-
导出元数据:
Dataplex Entry Group Exporter (
roles/dataplex.entryGroupExporter) -
访问元数据更改 Feed 消息:
Pub/Sub Subscriber (
roles/pubsub.subscriber)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色可提供导出元数据和访问元数据更改 Feed 消息所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需导出元数据和访问元数据更改 Feed 消息,您需要具备以下权限:
-
导出元数据:
- 针对项目的
dataplex.metadataFeeds.create权限 -
针对定义 Feed 范围的资源(组织、项目或条目组)的
dataplex.entryGroups.export - 针对项目的
resourcemanager.projects.get权限 - 针对项目的
resourcemanager.projects.list权限
- 针对项目的
-
访问元数据更改 Feed 消息:
-
针对订阅的
pubsub.subscriptions.consume -
针对主题的
pubsub.topics.attachSubscription权限
-
针对订阅的
Dataplex Universal Catalog 服务账号角色和权限
如需确保 Dataplex Universal Catalog 服务账号拥有发布元数据更改 Feed 消息所需的权限,请让您的管理员为 Dataplex Universal Catalog 服务账号授予 Pub/Sub 主题的 Pub/Sub Publisher (roles/pubsub.publisher) IAM 角色。
此预定义角色包含发布元数据更改 Feed 消息所需的 pubsub.topics.publish 权限。
您的管理员也可以使用自定义角色或其他预定义角色为 Dataplex Universal Catalog 服务账号授予此权限。
向 Dataplex Universal Catalog 服务账号授予权限
启用 Dataplex API 时,系统会创建 Dataplex Universal Catalog 服务代理。您可以通过以下电子邮件地址识别该服务代理:
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,元数据更改 Feed 消息会发布到该主题。PROJECT_NUMBER:您的 Dataplex Universal Catalog 项目(服务账号位于其中)的项目编号。
控制台
在 Google Cloud 控制台中,前往 Pub/Sub 主题页面。
选择您用于元数据 Feed 通知的主题,然后根据需要点击显示信息面板。
在权限标签页中,点击添加主账号。
在新的主账号字段中,输入 Dataplex Universal Catalog 服务账号:
service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com。在分配角色字段中,选择 Pub/Sub 发布者。
点击保存。
创建元数据变更 Feed
如需控制哪些更改会生成通知,您可以配置元数据变更 Feed 来监控特定资源。为此,您需要指定范围,例如整个组织、特定项目或特定条目组。 虽然范围可让您定义要监控哪些资源,但您可以使用过滤条件进一步细化 Dataplex Universal Catalog 发送通知的时间。
如需了解详情,请参阅元数据更改 Feed。
REST
如需创建元数据更改 Feed,请使用 projects.locations.metadataFeeds.create 方法。
组织范围
运行以下命令可创建监控整个组织的元数据更改 Feed:
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-projectTOPIC_ID:元数据更改 Feed 消息发布到的 Pub/Sub 主题 ID,例如example-topicFEED_ID:要创建的元数据更改 Feed ID,例如example-feed
项目范围
运行以下命令,创建用于监控特定项目的元数据更改 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-projectTOPIC_ID:元数据更改 Feed 消息发布到的 Pub/Sub 主题 ID,例如example-topicFEED_ID:要创建的元数据更改 Feed ID,例如example-feed
条目组范围
运行以下命令,创建用于监控特定条目组的元数据更改 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-projectLOCATION:要创建 Feed 的位置,例如us-central1ENTRY_GROUP_ID:要监控的条目组 ID,例如example-entry-groupTOPIC_ID:元数据更改 Feed 消息发布到的 Pub/Sub 主题 ID,例如example-topicFEED_ID:要创建的元数据更改 Feed ID,例如example-feed
使用过滤条件
运行以下命令,创建包含过滤条件的元数据变更 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-projectTOPIC_ID:元数据更改 Feed 消息发布到的 Pub/Sub 主题 ID,例如example-topicFEED_ID:要创建的元数据更改 Feed 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
}
查看元数据更改 Feed
您可以查看元数据更改 Feed 的详细信息。
REST
如需查看元数据更改 Feed,请使用 projects.locations.metadataFeeds.get 方法。
运行以下命令:
gcurl "https://${DATAPLEX_API}/metadataFeeds/FEED_ID"
替换以下内容:
FEED_ID:您要查看的元数据更改 Feed ID,例如example-feed
列出元数据更改 Feed
您可以列出项目和位置中的元数据更改 Feed。
REST
如需列出元数据更改 Feed,请使用 projects.locations.metadataFeeds.list 方法。
运行以下命令:
gcurl "https://${DATAPLEX_API}/metadataFeeds"
更新元数据更改 Feed
您可以更新现有元数据更改 Feed 的范围或过滤条件。
REST
如需更新元数据更改 Feed,请使用 projects.locations.metadataFeeds.patch 方法。
运行以下命令以更新元数据更改 Feed,从而移除条目类型过滤条件:
gcurl -X PATCH -d "$(cat <<EOF
{
"filter": {
"entryTypes": []
}
}
EOF
)" "https://${DATAPLEX_API}/metadataFeeds/FEED_ID?updateMask=filter"
替换以下内容:
FEED_ID:要更新的元数据更改 Feed ID,例如example-feed
删除元数据更改 Feed
如果您不再需要接收通知,可以删除元数据更改 Feed。
删除元数据更改 Feed 会停止该 Feed 向您的 Pub/Sub 主题发布新的元数据更改。不过,此操作不会删除主题或与 Feed 关联的订阅。如果不再需要这些文件,您必须手动将其删除。
在删除订阅源或订阅之前,请确保订阅者应用已处理 Pub/Sub 订阅中的所有未处理的消息。
REST
如需删除元数据更改 Feed,请使用 projects.locations.metadataFeeds.delete 方法。
运行以下命令:
gcurl -X DELETE \
"https://${DATAPLEX_API}/metadataFeeds/FEED_ID"
替换以下内容:
FEED_ID:要删除的元数据更改 Feed ID,例如example-feed
使用通知消息
配置元数据更改 Feed 后,当元数据发生更改时,Dataplex Universal Catalog 会将消息发布到指定的 Pub/Sub 主题。如需使用这些消息,请针对相应主题创建 Pub/Sub 订阅。
例如,您可以创建拉取订阅,并使用 Google Cloud CLI 查看消息:
创建订阅:
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_ID替换以下内容:
SUBSCRIPTION_ID:您要创建的订阅 IDTOPIC_ID:元数据变更 Feed 消息发布到的 Pub/Sub 主题 ID。
从订阅中拉取消息:
gcloud pubsub subscriptions pull SUBSCRIPTION_ID --auto-ack --limit=10替换以下内容:
SUBSCRIPTION_ID:您要从中拉取消息的订阅 ID
如需详细了解如何处理 Pub/Sub 消息,请参阅接收拉取订阅中的消息。如需了解消息格式,请参阅数据载荷。