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

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

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

准备工作

熟悉 Pub/SubDataplex Universal Catalog API

  1. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  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,请确保您和 Dataplex Universal Catalog 服务账号拥有所需的 IAM 角色和权限。

用户角色和权限

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

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

这些预定义角色可提供导出元数据和访问元数据更改 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 项目(服务账号位于其中)的项目编号。

控制台

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

    前往“主题”页面

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

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

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

  5. 分配角色字段中,选择 Pub/Sub 发布者

  6. 点击保存

创建元数据变更 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-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 关联的订阅。如果不再需要这些文件,您必须手动将其删除。

在删除订阅源或订阅之前,请确保订阅者应用已处理 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 查看消息:

  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 消息,请参阅接收拉取订阅中的消息。如需了解消息格式,请参阅数据载荷

后续步骤