修复数据驻留和 CMEK 要求

您可以重新预配可观测性存储桶,以满足数据驻留和加密监管要求。重新预配后,_Trace 存储桶的存储位置和加密配置将与可观测性存储桶的默认设置一致。

如需重新预配存储桶,请配置默认设置,然后调用重新预配方法。重新配置操作可以执行以下任一操作:

  • 将 Cloud Key Management Service 密钥追溯应用于可观测性存储桶,而无需更改其存储位置。
  • 更改可观测性存储桶的存储位置,并使用 Google 默认加密。
  • 更改可观测性存储桶的存储位置,并使用 Cloud KMS 密钥加密存储的数据。

如果您想更改可观测性存储桶的显示名称、说明或 Cloud KMS 密钥,请勿重新预配该存储桶。对于这些情况,请更新可观测性存储桶。

重新配置的工作原理

当您启动重新预配操作时,系统会执行以下步骤:

  1. 系统会确定可观测性存储桶是否符合重新预配的条件。当以下所有检查均通过时,可观测性存储桶即符合条件:

    • 可观测性存储桶名为 _Trace。
    • 存储桶尚未重新预配。
    • 找到可观测性存储桶的默认设置。
    • 为了与默认设置保持一致,可观测性存储桶的位置需要更改,或者加密方式必须从 Google 默认加密更改为 CMEK。
  2. 系统会更新存储桶配置。此过程需要四到五个小时。

限制

存在以下限制:

  • 系统允许每个可观测性存储桶最多执行一次重新预配操作。后续请求会失败并显示 FAILED_PRECONDITION 错误。

  • 您只能重新预配名为 _Trace 的存储桶。

  • 您无法访问在重新配置之前存储的任何数据。此数据已被删除,无法恢复。

  • 如果存储桶的位置发生变化,则关联和关联的 BigQuery 数据集会被删除。您必须重新创建所有链接。

  • 如果存储桶的位置发生变化,您必须手动更新现有分析视图。

  • 您无法取消或撤消重新预配操作。系统会忽略取消操作的尝试。

  • 重新预配操作期间的查询行为未定义。

审核

如需确定可观测性存储桶的重新预配历史记录,您可以使用审核日志。管理员活动日志会记录谁发出了重新预配请求、受影响的可观测性存储桶以及初始响应。

如需查找这些记录,请在 Logs Explorer 中应用以下过滤条件:

logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" AND
resource.type="audited_resource" AND
resource.labels.service="observability.googleapis.com" AND
resource.labels.method="google.cloud.observability.v1.Observability.ReprovisionBucket"

以下部分示例展示了管理员活动审核日志:

  {
    "logName": "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity",
    "resource": {
      "type": "audited_resource",
      "labels": {
        "project_id": "PROJECT_ID",
        "service": "observability.googleapis.com",
        "method": "google.cloud.observability.v1.Observability.ReprovisionBucket"
      }
    },
    "protoPayload": {
      "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
      "status": {
        "code": 0,
        "message": "OK"
      },
      ...
      "serviceName": "observability.googleapis.com",
      "methodName": "google.cloud.observability.v1.Observability.ReprovisionBucket",
      "authorizationInfo": [...]
      "resourceName": "projects/PROJECT_ID/locations/us/buckets/_Trace",
      "request": {
        "@type": "type.googleapis.com/google.cloud.observability.v1.ReprovisionBucketRequest",
        "name": "projects/PROJECT_ID/locations/us/buckets/_Trace"
      },
      "response": {
        "@type": "type.googleapis.com/google.longrunning.Operation",
        "name": "projects/PROJECT_ID/locations/us/operations/reprovision-123456789-0",
        "done": false,
        "metadata": {
          "@type": "type.googleapis.com/google.cloud.observability.v1.OperationMetadata",
          "target": "projects/PROJECT_ID/locations/us/buckets/_Trace",
          "verb": "reprovision",
          "apiVersion": "v1"
        }
      }
    },
    "severity": "NOTICE",
    "timestamp": "2026-06-30T16:54:02.123456Z"
  }

准备工作

  1. 查看限制。
  2. 如需获得重新预配可观测性存储桶所需的权限,请让您的管理员为您授予托管可观测性存储桶的项目上的 Observability Editor (roles/observability.editor) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。

    Observability Editor 角色提供创建和删除可观测性存储桶、可观测性数据集以及数据集上的链接的权限。您需要这些权限,因为重新预配操作会同时发出创建和删除命令。

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

重新预配可观测性存储桶

如需重新预配可观测性存储桶,请执行以下步骤:

  1. 为可观测性存储桶配置默认设置
  2. 重新预配存储桶
  3. 监控进度
  4. 手动创建关联并更新分析视图

为可观测性存储桶配置默认设置

设置默认存储位置,并可选择设置默认 Cloud KMS 密钥。您可以在项目、文件夹或组织级层设置这些角色。例如,如果您为某个文件夹配置了默认设置,则该文件夹的后代会使用这些设置,除非后代也配置了默认设置。

如需详细了解如何查看和配置默认设置,请参阅为可观测性存储桶设置默认值。

重新预配存储桶

使用异步发出重新预配请求并轮询以确定重新预配操作何时完成的脚本。如需重新预配可观测性存储桶,请使用 projects.locations.buckets.reprovision 方法。

您必须指定可观测性存储桶的名称,其格式如下:

projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_ID

上面表达式中的字段含义如下:

  • PROJECT_ID:项目的标识符。
  • LOCATION:可观测性存储桶的位置。
  • BUCKET_ID:可观测性存储桶的 ID。此 ID 必须为 _Trace。

响应是一个 Operation 对象。Operation.done 字段提供进度信息:

  • done 为 false:操作正在进行中。如需了解如何轮询操作,请参阅监控进度。

  • done 为 true:表示操作已完成且已设置 error 或 response 字段:

    • response 已设置:表示异步操作成功完成。该值反映了作为重新预配目标的可观测性存储桶的最新状态。

    • error 已设置:表示异步操作失败。此字段的值是一个 Status 对象,其中包含 gRPC 错误代码和出错提示。如需了解常见错误消息,请参阅错误消息。

重新预配通常需要 4 到 5 个小时才能完成。

监控进度

Operation 对象包含进度信息。 轮询操作,直到 Operation.done 字段的值为 true。然后,您可以使用 Operation.response 和 Operation.error 字段来确定重新预配是成功还是失败。

如需轮询 Operation,请使用 folders.locations.operations.get 方法。

将路径参数设置为操作的名称:

operations/UNIQUE_ID

UNIQUE_ID 字段是操作的唯一标识符。

响应是一个更新后的 Operation 对象。

如果您的应用在轮询时收到 HTTP 503 / UNAVAILABLE 响应,请实现指数退避算法并重试请求。此错误表示请求在传输层或网络层失败。

手动创建链接并更新分析视图

重新预配操作完成后,重新创建所有链接并更新分析视图。

例如,您可能会执行以下操作:

  1. 列出可观测性数据集上的链接。在某些情况下,重新预配操作会保留链接。如需了解此步骤,请参阅列出数据集上的链接。

  2. 重新创建关联的 BigQuery 数据集。如需了解此步骤,请参阅在数据集上创建链接。

  3. 查看您的分析视图,并根据需要更新指向可观测性存储桶的路径。

错误消息

本部分列出了常见错误代码以及适用的恢复操作。

FAILED_PRECONDITION

FAILED_PRECONDITION 出错提示表示可观测性存储桶不符合重新预配的条件。

错误消息示例:

{
    "error":{
        "code": 400,
        "message": "Only _Trace buckets can be reprovisioned.",
        "status": "FAILED_PRECONDITION",
        "details": [ ... ]
    }
}

您无法执行任何操作来使可观测性存储桶符合重新预配的条件。

INVALID_ARGUMENT

INVALID_ARGUMENT 出错提示表示可观测性存储桶的位置和 CMEK 配置与可观测性存储桶的默认设置一致。

如需解决此故障,请更新项目、文件夹或组织的可观测性存储桶的默认设置,然后重试重新预配可观测性存储桶。

PERMISSION_DENIED

PERMISSION_DENIED 出错提示表示您没有重新预配可观测性存储桶所需的 IAM 角色。

如需解决此失败问题,请让管理员向您授予本文档准备工作部分中列出的 IAM 角色。

问题排查

本部分介绍了如何解决常见问题,并解答了在重新预配可观测性存储桶后可能出现的问题。

如何知道存储桶是否已重新预配?

查询审核日志,并按日志名称、服务和方法过滤日志条目。如需了解详情,请参阅本文档中标题为审核的部分。

为什么我的项目列出了两个用于跟踪数据的存储桶?

在重新预配 _Trace 可观测性存储桶期间,系统可能需要创建新的存储桶。如果此值为 true,则在重新预配操作期间,您的项目将包含两个名为 _Trace 的可观测性存储桶。

  • 如果您列出项目中的可观测性存储桶,则结果中会报告这两个存储桶。

  • 如果您使用 Observability Analytics 查询跟踪记录数据,则两个存储桶都有一个 _AllSpans 视图。

您无需采取任何措施。

如果系统在重新预配操作过程中创建了可观测性存储桶,则在该操作成功完成后,该操作的目标存储桶将被删除。如果重新预配操作失败,则新存储桶会被删除。

为什么重新预配后查询的数据不同?

重新配置操作会删除在操作启动之前存储的所有数据。这些数据无法恢复。

为什么 Trace Explorer 在重新预配后不显示任何数据?

Trace Explorer 使用缓存来提高性能。缓存与要查询的可观测性存储桶相关联,重要的是,如果该存储桶在查询时不可用,则查询会失败。

在重新预配操作期间,您的 Google Cloud 项目可能包含两个名为 _Trace 的可观测性存储桶。此外,当该操作完成时,其中一个存储桶会被删除。在这种情况下,Trace Explorer 使用的缓存可能会绑定到不再存在的存储桶。

此故障会在缓存超时后自行更正,这大约需要 10 分钟。

为什么我的可观测性存储桶无法重新预配?

如果重新预配操作失败并显示 FAILED_PRECONDITION 状态,则目标可观测性存储桶不符合重新预配条件。下面列出了存储桶不符合重新预配条件的一些原因:

  • 可观测性存储桶未命名为 _Trace。
  • 可观测性存储桶的重新预配次数超过一次。您可以查询审核日志,以确定存储桶是否已重新预配。
  • 未找到可观测性存储桶的默认设置。如需解决此故障,请为可观测性存储桶配置默认设置,然后重试该命令。
  • 可观测性存储桶的配置与默认设置一致。也就是说,重新预配操作不会更改可观测性存储桶的配置。
  • 为了与默认设置保持一致,系统需要将 CMEK 替换为 Google 管理的加密。不支持此操作。