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

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

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

准备工作

熟悉 Pub/SubDataplex API

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

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 获得了此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色

    启用 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 权限
    • 针对定义 Feed 范围的资源(组织、项目或条目组)的 dataplex.entryGroups.export
    • 针对项目的 resourcemanager.projects.get 权限
    • 针对项目的 resourcemanager.projects.list 权限
  • 访问元数据更改 Feed 消息:
    • 针对订阅的 pubsub.subscriptions.consume
    • 针对主题的 pubsub.topics.attachSubscription 权限

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

Knowledge Catalog 服务账号角色和权限

为了确保知识目录服务账号拥有发布元数据更改 Feed 消息所需的权限,请让您的管理员向 Pub/Sub 主题中的知识目录服务账号授予 Pub/Sub Publisher (roles/pubsub.publisher) 和 Pub/Sub Viewer (roles/pubsub.viewer) IAM 角色。

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

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

您的管理员也可以使用自定义角色或其他预定义角色为 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 发布者角色 (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,元数据更改 Feed 消息会发布到该主题。
  • 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 发布者

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

  7. 点击保存

创建元数据变更数据流

如需控制哪些更改会生成通知,您可以配置元数据变更 Feed 来监控特定资源。为此,您需要指定范围,例如整个组织、特定项目或特定条目组。 虽然范围可让您定义要监控哪些资源,但您可以使用过滤条件进一步细化 Knowledge Catalog 发送通知的时间

如需了解详情,请参阅元数据更改 Feed

C#

C#

试用此示例之前,请按照《Knowledge Catalog 快速入门:使用客户端库》中的 C# 设置说明进行操作。 如需了解详情,请参阅 Knowledge Catalog C# API 参考文档

如需向 Knowledge Catalog 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证

using Google.Api.Gax.ResourceNames;
using Google.Cloud.Dataplex.V1;
using Google.LongRunning;

public sealed partial class GeneratedCatalogServiceClientSnippets
{
    /// <summary>Snippet for CreateMetadataFeed</summary>
    /// <remarks>
    /// This snippet has been automatically generated and should be regarded as a code template only.
    /// It will require modifications to work:
    /// - It may require correct/in-range values for request initialization.
    /// - It may require specifying regional endpoints when creating the service client as shown in
    ///   https://cloud.google.com/dotnet/docs/reference/help/client-configuration#endpoint.
    /// </remarks>
    public void CreateMetadataFeedRequestObject()
    {
        // Create client
        CatalogServiceClient catalogServiceClient = CatalogServiceClient.Create();
        // Initialize request argument(s)
        CreateMetadataFeedRequest request = new CreateMetadataFeedRequest
        {
            ParentAsLocationName = LocationName.FromProjectLocation("[PROJECT]", "[LOCATION]"),
            MetadataFeed = new MetadataFeed(),
            MetadataFeedId = "",
            ValidateOnly = false,
        };
        // Make the request
        Operation<MetadataFeed, OperationMetadata> response = catalogServiceClient.CreateMetadataFeed(request);

        // Poll until the returned long-running operation is complete
        Operation<MetadataFeed, OperationMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        MetadataFeed result = completedResponse.Result;

        // Or get the name of the operation
        string operationName = response.Name;
        // This name can be stored, then the long-running operation retrieved later by name
        Operation<MetadataFeed, OperationMetadata> retrievedResponse = catalogServiceClient.PollOnceCreateMetadataFeed(operationName);