删除架构主题版本

本文档介绍了如何从架构注册表中删除架构主题的特定版本。您可以通过以下两种方式删除主题版本:

  • 软删除。将版本标记为已删除,但其信息会保留下来,并且可以恢复。

  • 永久删除。永久移除相应版本及其关联的数据。

所需的角色和权限

如需获得删除架构主题版本所需的权限,请让您的管理员向您授予父主题的 Managed Kafka Schema Registry Editor (roles/managedkafka.schemaRegistryEditor) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含删除架构主题版本所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

您需要具备以下权限才能删除架构主题版本:

  • 在父正文上授予以下权限: managedkafka.googleapis.com/subjectVersions.delete

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

如需详细了解预定义角色,请参阅 Managed Service for Apache Kafka 预定义角色

软删除架构主题版本

以下是软删除架构主题版本的一些最佳实践:

  • 验证没有活跃的生产者或消费者正在使用您打算删除的架构主题版本。

  • 删除架构主题版本后,请监控您的应用,确保它们继续按预期运行。

  • 软删除功能可用于恢复已删除的架构主题版本,如果您不确定是否要删除某个架构主题版本,此功能会非常有用。

如需软删除架构主题版本,请按照以下步骤操作。

控制台

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

    前往架构注册表

  2. 点击主题所在的架构注册表的名称。

  3. 此架构注册表中的主题下,点击主题的名称。

  4. 所有版本列表中,找到要删除的版本,然后点击更多操作

  5. 点击删除版本

  6. 删除架构版本窗口中,点击软删除

  7. 输入 delete 以确认删除,然后点击删除

REST

如需软删除架构主题版本,请向 projects.locations.schemaRegistries.subjects.versions.delete 方法发出 DELETE 请求。

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

如需软删除架构主题版本,请执行以下操作:

  • 对于默认上下文,请使用以下命令:

    DELETE https://managedkafka.googleapis.com/v1main/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/REGISTRY_ID/subjects/SUBJECT_ID/versions/VERSION_ID
    Authorization: Bearer $(gcloud auth application-default print-access-token)
    
  • 针对特定上下文使用以下命令:

    DELETE https://managedkafka.googleapis.com/v1main/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/REGISTRY_ID/contexts/CONTEXT_ID/subjects/SUBJECT_ID/versions/VERSION_ID
    Authorization: Bearer $(gcloud auth print-access-token --impersonate-service-account=SERVICE_ACCOUNT)
    

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目 ID,例如 test-project
  • LOCATION:架构注册表所在的 Google Cloud 区域,例如 us-central1
  • REGISTRY_ID:您的架构注册表的 ID,例如 test_registry
  • CONTEXT_ID:上下文的 ID,例如 test_context
  • SUBJECT_ID:正文的 ID,例如 test_subject
  • VERSION_ID:要删除的正文的版本,例如 2latest
  • SERVICE_ACCOUNT:服务账号,例如 test-service-account@test-project.iam.gserviceaccount.com

如果请求成功,API 会返回 200 OK 状态代码和空的响应正文。

如需了解详情,请参阅 projects.locations.schemaRegistries.subjects.versions.delete 方法文档。

硬删除架构主题版本

以下是永久删除架构主题版本的一些最佳实践:

  • 确保您有备份或在需要时可重新创建架构主题版本。

  • 验证没有活跃的生产者或消费者在使用您打算删除的架构主题版本。

  • 在将更改应用到生产环境之前,请务必先在开发或预发布环境中测试架构主题版本删除操作。

  • 删除架构主题版本后,请监控您的应用,确保它们继续按预期运行。

  • 如果您需要永久移除架构主题版本,请使用硬删除。

如需硬删除架构主题版本,请按以下步骤操作。

控制台

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

    前往架构注册表

  2. 点击主题所在的架构注册表的名称。

  3. 此架构注册表中的主题下,点击主题的名称。

  4. 所有版本列表中,找到要删除的版本,然后点击更多操作

  5. 点击删除版本

  6. 删除架构版本窗口中,点击永久删除

  7. 输入 delete 以确认删除,然后点击删除。此操作会先软删除主题版本,然后再永久删除该版本。

REST

如需使用 REST API 硬删除架构主题版本,您必须先对其进行软删除。软删除后,您可以继续执行硬删除。

如需硬删除架构主题版本,请向 projects.locations.schemaRegistries.subjects.versions.delete 方法发出 DELETE 请求。如需永久删除架构主题版本,请添加 hardDelete=true 查询参数。

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

如需硬删除架构主题版本,请执行以下操作:

  • 对于默认上下文,请使用以下命令:

    DELETE https://managedkafka.googleapis.com/v1main/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/REGISTRY_ID/subjects/SUBJECT_ID/versions/VERSION_ID?hardDelete=true
    Authorization: Bearer $(gcloud auth application-default print-access-token)
    
  • 针对特定上下文使用以下命令:

    DELETE https://managedkafka.googleapis.com/v1main/projects/PROJECT_ID/locations/LOCATION/schemaRegistries/REGISTRY_ID/contexts/CONTEXT_ID/subjects/SUBJECT_ID/versions/VERSION_ID?hardDelete=true
    Authorization: Bearer $(gcloud auth print-access-token --impersonate-service-account=SERVICE_ACCOUNT)
    

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目 ID,例如 test-project
  • LOCATION:架构注册表所在的 Google Cloud 区域,例如 us-central1
  • REGISTRY_ID:您的架构注册表的 ID,例如 test_registry
  • CONTEXT_ID:上下文的 ID,例如 test_context
  • SUBJECT_ID:正文的 ID,例如 test_subject
  • VERSION_ID:要删除的正文的版本,例如 2latest
  • SERVICE_ACCOUNT:服务账号,例如 test-service-account@test-project.iam.gserviceaccount.com

如果请求成功,API 会返回 200 OK 状态代码和空的响应正文。

如需了解详情,请参阅 projects.locations.schemaRegistries.subjects.versions.delete 方法文档。

后续步骤

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