更新架构模式

架构模式用于定义架构注册表或特定主题是否允许更改,例如写入或修改架构。

  • 架构模式支持的值包括只读读写

  • 架构模式以包含键值对的 JSON 对象进行管理。例如,以下是一个示例:

    {
      "mode": "READWRITE"
    }
    
  • 如果未在架构注册表级明确设置,架构模式将默认为读写

  • 如果未在主题级明确指定架构模式,则该模式会从架构注册表继承值。

  • 在主题级设置的配置会替换在架构注册表级设置的配置。

如需详细了解架构模式(包括其值),请参阅 架构模式

更新架构模式所需的角色和权限

如需获得更新架构注册表或主题的架构模式所需的权限,请让您的管理员为您授予项目的Managed Kafka Schema Registry Editor (roles/managedkafka.schemaRegistryEditor) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含 更新架构注册表或主题的架构模式所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需更新架构注册表或主题的架构模式,您需要具备以下权限:

  • 对要更新模式的资源授予以下权限: managedkafka.mode.update

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

更新架构注册表的架构模式

控制台

如需更新整个架构注册表的架构模式,请按照以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 架构注册表 页面。

    前往架构注册表

    系统会显示您项目中的架构注册表列表。

  2. 点击要更新架构模式的架构注册表的名称。

    系统会打开架构注册表详情 页面。

  3. 在注册表的主要详情部分中,找到架构模式 设置,然后点击其旁边的修改 图标。

    系统会打开修改架构模式 页面。

  4. 架构模式 下拉菜单中,选择相应的值。

    如需详细了解这些值,请参阅架构模式简介

  5. 点击保存

gcloud

如需更新架构注册表的架构模式,请使用 gcloud alpha managed-kafka schema-registries update 命令:

gcloud alpha managed-kafka schema-registries update SCHEMA_REGISTRY_ID \
    --location=LOCATION \
    --mode=MODE_TYPE
  • SCHEMA_REGISTRY_ID:要更新的架构注册表的 ID。
  • LOCATION:要更新的架构注册表的区域。
  • MODE_TYPE:新的架构模式。有效值包括:
    • READWRITE
    • READONLY

示例:

如需将 us-central1 区域中 test-registry 架构注册表的架构模式更新为 READONLY,请运行以下命令:

gcloud alpha managed-kafka schema-registries update test-registry \
    --location=us-central1 \
    --mode=READONLY

REST

必须使用 Authorization 标头中的访问令牌对请求进行身份验证。如需获取当前 应用默认凭据的访问令牌,请运行以下命令: gcloud auth application-default print-access-token.

如需更新架构模式,请向架构注册表的 REST API 端点发出PUT请求,使用 projects.locations.schemaRegistries.contexts.mode.update方法。

使用默认上下文更新架构注册表的架构模式:

PUT https://managedkafka.googleapis.com/v1main/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/SCHEMA_REGISTRY_ID/mode

替换以下路径参数:

  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • LOCATION:架构注册表所在的区域。
  • SCHEMA_REGISTRY_ID:架构注册表的唯一 ID。

请求正文:

在请求正文中添加一个 JSON 对象,以指定模式详情。

{
  "mode": "MODE_TYPE"
}

MODE_TYPE 替换为模式的有效字符串选项之一:

  • READWRITE
  • READONLY

如果成功,API 会返回 200 OK 状态代码,以及包含更新后的模式配置的 JSON 表示法的响应正文。

如需了解详情,请参阅 REST API 文档

更新主题的架构模式

控制台

如需更新特定主题的架构模式,请按照以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 架构注册表 页面。

    前往架构注册表

  2. 点击包含该主题的架构注册表的名称。

    系统会打开架构注册表详情 页面。

  3. 此架构注册表中的主题 表中,点击要更新架构模式的主题的名称。
  4. 找到该主题的架构模式 设置,然后点击其旁边的修改 图标。

    系统会打开修改架构模式 页面。

  5. 架构模式 下拉菜单中,选择相应的值。 在此处选择一个值会替换此特定主题的注册表级设置。

    如需详细了解这些值,请参阅 架构模式简介

  6. 点击保存

gcloud

如需更新主题的架构模式,请使用 gcloud alpha managed-kafka schema-registries subject update 命令:

gcloud alpha managed-kafka schema-registries subject update SUBJECT_NAME \
    --schema-registry=SCHEMA_REGISTRY_ID \
    --location=LOCATION \
    --mode=MODE_TYPE
  • SUBJECT_NAME:要更新的主题的名称。
  • SCHEMA_REGISTRY_ID:包含该主题的架构注册表的 ID。
  • LOCATION:包含该主题的架构注册表的区域。
  • MODE_TYPE:新的架构模式。有效值包括:
    • READWRITE
    • READONLY

示例:

如需将 us-central1 区域中 test-registry 架构注册表的 test-subject 主题的架构模式更新为 READONLY,请运行以下命令:

gcloud alpha managed-kafka schema-registries subject update test-subject \
    --schema-registry=test-registry \
    --location=us-central1 \
    --mode=READONLY

REST

必须使用 Authorization 标头中的访问令牌对请求进行身份验证。如需获取当前 应用默认凭据的访问令牌,请运行以下命令: gcloud auth application-default print-access-token.

如需更新主题的架构模式,请向特定主题的 REST API 端点发出 PUT 请求,使用 projects.locations.schemaRegistries.contexts.mode.update 方法。

在默认上下文中更新主题的架构模式:

PUT https://managedkafka.googleapis.com/v1main/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/SCHEMA_REGISTRY_ID/mode/SUBJECT_NAME

替换以下路径参数:

  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • LOCATION:架构注册表所在的区域。
  • SCHEMA_REGISTRY_ID:架构注册表的唯一 ID。
  • SUBJECT_NAME:主题的名称。

请求正文:

在请求正文中添加一个 JSON 对象,以指定模式详情。

{
  "mode": "MODE_TYPE"
}

MODE_TYPE 替换为模式的有效字符串选项之一:

  • READWRITE
  • READONLY

示例 - 在默认上下文中将主题 user_events 的架构模式设置为 Readonly

PUT https://managedkafka.googleapis.com/v1main/projects/test-gcp-project/locations/us-east1/schemaRegistries/main_registry/mode/user_events 发出请求

正文如下:

{
  "mode": "READONLY"
}

如果成功,API 会返回 200 OK 状态代码,以及包含更新后的主题或上下文资源的 JSON 表示法的响应正文,以反映此更改。

在特定上下文中更新主题的架构模式:

PUT https://managedkafka.googleapis.com/v1main/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/SCHEMA_REGISTRY_ID/contexts/CONTEXT_NAME/mode/SUBJECT_NAME

替换以下路径参数:

  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • LOCATION:架构注册表所在的区域。
  • SCHEMA_REGISTRY_ID:架构注册表的唯一 ID。
  • CONTEXT_NAME:上下文的名称。
  • SUBJECT_NAME:主题的名称。

请求正文:

在请求正文中添加一个 JSON 对象,以指定模式详情。

{
  "mode": "MODE_TYPE"
}

MODE_TYPE 替换为模式的有效字符串选项之一:

  • READWRITE
  • READONLY

示例 - 在上下文 test_context 中将主题 user_events 的架构模式设置为 Readonly

PUT https://managedkafka.googleapis.com/v1main/projects/test-gcp-project/locations/us-east1/schemaRegistries/main_registry/contexts/test_context/mode/user_events 发出请求

正文如下:

{
  "mode": "READONLY"
}

如果成功,API 会返回 200 OK 状态代码,以及包含更新后的主题或上下文资源的 JSON 表示法的响应正文,以反映此更改。

如需了解详情,请参阅 REST API 文档

后续步骤

Apache Kafka® 是 Apache Software Foundation 或其关联公司在美国和/或其他国家/地区的注册商标。