接收包含元数据更改 Feed 的通知

本文档介绍了如何配置 Knowledge Catalog(以前称为 Dataplex Universal Catalog)元数据更改 Feed,以便在 Knowledge Catalog 中的元数据被创建、更新或删除时通过 Pub/Sub 接收通知。

如需详细了解元数据更改 Feed,请参阅 元数据更改 Feed 概览

准备工作

熟悉 Pub/SubDataplex API

  1. 启用 Dataplex API 和 Pub/Sub API。

    启用 API 所需的角色

    如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (roles/serviceusage.serviceUsageAdmin),该角色包含 serviceusage.services.enable 权限。了解如何授予 角色

    启用 API

  2. 创建 Pub/Sub 主题以接收通知。如需了解更多 信息,请参阅创建主题

  3. 安装 gcloud。 确保已设置 gcloud 的短别名。

  4. 设置 gcurl 的别名。这会创建一个快捷方式,其中包含您的身份验证令牌,并为 API 请求设置 JSON 内容类型:

    alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'
    
  5. 设置 DATAPLEX_API 变量:

    DATAPLEX_API="dataplex.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION"
    

    替换以下内容:

    • PROJECT_ID:已启用 Dataplex API 的项目的项目 ID
    • LOCATION:作业运行的位置,例如 us-central1europe-west3asia-south1

所需的角色和权限

如需配置元数据更改 Feed,请确保您和 Knowledge Catalog 服务账号拥有 所需的 IAM 角色和权限。

用户角色和权限

如需获得导出元数据和访问元数据更改 Feed 消息所需的权限,请让管理员为您授予项目或组织的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

这些预定义角色可提供 导出元数据和访问元数据更改 Feed 消息所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

导出元数据和访问元数据更改 Feed 消息需要以下权限:

  • 导出元数据:
    • dataplex.metadataFeeds.create 针对项目的权限
    • dataplex.entryGroups.export 针对定义 Feed 范围的资源(组织、项目或条目组)的 权限
    • resourcemanager.projects.get 针对项目
    • 针对项目的 resourcemanager.projects.list 权限
  • 访问元数据更改 Feed 消息:
    • pubsub.subscriptions.consume 针对订阅的权限
    • 针对主题的 pubsub.topics.attachSubscription 权限

您也可以使用自定义角色或其他预定义角色来获取这些权限。

Knowledge Catalog 服务帐号角色和权限

如需确保 Knowledge Catalog 服务帐号拥有发布元数据更改 Feed 消息所需的权限,请让管理员为 Pub/Sub 主题上的 Knowledge Catalog 服务帐号授予 Pub/Sub Publisher (roles/pubsub.publisher) 和 Pub/Sub Viewer (roles/pubsub.viewer) IAM 角色。

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含发布元数据更改 Feed 消息所需的 pubsub.topics.publishpubsub.topics.get 权限。

您的管理员也可以使用自定义角色或其他预定义角色为 Knowledge Catalog 服务帐号授予此权限。

向 Knowledge Catalog 服务帐号授予权限

启用 Dataplex API 后,系统会在 Knowledge Catalog 中创建服务代理。您可以通过服务代理的电子邮件 ID 来识别它:

service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com

其中,PROJECT_NUMBER 是您已在其中启用 Dataplex API 的项目的项目编号。

Knowledge Catalog 服务帐号需要能够向您的 Pub/Sub 主题发布消息并检索主题元数据。 如需授予这些权限,请为 Pub/Sub 主题上的服务帐号授予 Pub/Sub Publisher 角色 (roles/pubsub.publisher) 和 Pub/Sub Viewer 角色 (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:元数据更改 Feed 消息发布到的 Pub/Sub 主题的 ID。
  • PROJECT_NUMBER:Knowledge Catalog 项目(服务帐号位于其中)的项目编号。

控制台

  1. 在 Google Cloud 控制台中,前往 Pub/Sub 主题 页面。

    前往主题

  2. 选择您用于元数据 Feed 通知的主题,然后根据需要点击显示信息面板

  3. 权限 标签页中,点击添加主账号

  4. 新的主账号 字段中,输入 Knowledge Catalog 服务帐号: service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com

  5. 分配角色 字段中,选择 Pub/Sub Publisher

  6. 点击添加其他角色 ,然后选择 Pub/Sub Viewer

  7. 点击保存

创建元数据更改 Feed

如需控制哪些更改会生成通知,您可以配置元数据更改 Feed 以监控特定资源。为此,您可以指定范围,例如整个组织、特定项目或特定条目组。 虽然范围可让您定义 要监控的资源,但您可以使用过滤条件进一步细化 Knowledge 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-project
  • TOPIC_ID:元数据更改 Feed 消息发布到的 Pub/Sub 主题 ID,例如 example-topic
  • FEED_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-project
  • TOPIC_ID:元数据更改 Feed 消息发布到的 Pub/Sub 主题 ID,例如 example-topic
  • FEED_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-project
  • LOCATION:您要在其中创建 Feed 的位置,例如 us-central1
  • ENTRY_GROUP_ID:要监控的条目组 ID,例如 example-entry-group
  • TOPIC_ID:元数据更改 Feed 消息发布到的 Pub/Sub 主题 ID,例如 example-topic
  • FEED_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-project
  • TOPIC_ID:元数据更改 Feed 消息发布到的 Pub/Sub 主题 ID,例如 example-topic
  • FEED_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 关联的主题或订阅。如果不再需要这些主题或订阅,您必须手动将其删除。

在删除 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 后,当元数据发生更改时,Knowledge Catalog 会将消息发布到指定的 Pub/Sub 主题。如需使用这些消息,请为该主题创建 Pub/Sub 订阅。

例如,您可以创建拉取订阅,并使用 Google Cloud CLI 查看消息:

  1. 创建订阅:

    gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_ID
    

    替换以下内容:

    • SUBSCRIPTION_ID:您要创建的订阅 ID
    • TOPIC_ID:元数据更改 Feed 消息发布到的 Pub/Sub 主题 ID。
  2. 从订阅中拉取消息:

    gcloud pubsub subscriptions pull SUBSCRIPTION_ID --auto-ack --limit=10
    

    替换以下内容:

    • SUBSCRIPTION_ID:您要从中拉取消息的订阅 ID

如需详细了解如何处理 Pub/Sub 消息,请参阅 从拉取订阅接收消息。如需了解 消息格式,请参阅 数据载荷

后续步骤