本文档介绍了如何排查 Storage Intelligence、Storage Insights 资产清单报告、Storage Insights 数据集和 Storage 批量操作的常见问题。
Storage Intelligence 配置错误
以下部分介绍了在为资源配置或管理 Storage Intelligence 时可能遇到的错误。
400:存储桶名称无效
问题:请求返回 400 Bad Request,并显示消息 The specified
bucket is not valid.
解决方案:请求无效。确保请求符合以下要求:
- 使用
locations/global。Storage Intelligence 不支持其他位置。 - 确保
bucket_id_regexes中的存储桶名称或正则表达式有效。
以下是有效请求的示例:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"edition_config": "STANDARD",
"filter": {
"included_cloud_storage_buckets": {
"bucket_id_regexes": [
"my-bucket-name",
"prod-data-.*"
]
}
}
}' \
"https://storage./v2/projects/PROJECT_ID/locations/global/intelligenceConfig?updateMask=edition_config,filter"400:参数无效 - 更新掩码为空
问题:当您发送配置或更新请求时,请求返回 400 Bad Request 并显示消息 Empty UPDATE_MASK in the request.
解决方案:在请求中提供非空的 UPDATE_MASK。UPDATE_MASK 用于指定 IntelligenceConfig 资源中要更新的 FieldMask 字段的英文逗号分隔列表(例如 updateMask=edition_config 或 updateMask=edition_config,filter)。
400:更新掩码路径无效
问题:更新配置时,请求返回 400 Bad Request,并显示消息 Invalid UPDATE_MASK paths.
解决方案:验证 UPDATE_MASK 中的每个字段名称是否与 IntelligenceConfig 资源中的有效字段匹配。
400:字段不可修改
问题:更新配置时,请求返回 400 Bad Request,并显示消息 Invalid UPDATE_MASK: UPDATE_TIME field is not editable.
解决方案:从 UPDATE_MASK 中移除不可修改的系统字段(例如 UPDATE_TIME)。仅指定 IntelligenceConfig 中定义的可变字段。
400:值无效
问题:请求返回 400 Bad Request,并显示消息 Invalid value
at storage_intelligence.edition_config.
解决方案:将 edition_config 设置为支持的值:INHERIT、STANDARD 或 DISABLED。
400:非空过滤条件
问题:请求返回 400 Bad Request,并显示消息 Non-empty
filter cannot be specified for INHERIT or DISABLED edition configuration.
解决方案:从请求中移除分桶过滤条件。当 edition_config 设置为 INHERIT 或 DISABLED 时,不支持分桶过滤。
400:过滤条件中的位置或存储桶值为空
问题:请求返回 400 Bad Request,并显示消息 Empty
location or bucket values in filter.
解决方案:确保存储桶过滤条件中的 location 和 bucket 都不是空字符串。
存储空间分析常见问题
每天生成多个资产清单报告
问题:资产清单报告配置每天生成多个报告文件。
解决方案:对于包含超过 100 万个对象的存储分区,Cloud Storage 会对资产清单报告进行分片,每 100 万个对象生成一个分片。例如,如果存储桶包含 350 万个对象,则会生成 4 个报告分片和一个列出每个分片的清单文件。
资产清单报告未显示在目标存储桶中
问题:资产清单报告未显示在目标存储桶中。
解决方案:如果报告未递送到目标存储桶,请验证以下内容:
确保配置的开始日期已过。如需了解详情,请参阅创建资产清单报告配置。
查看资产清单报告历史记录,以检查是否存在失败及其根本原因。如需查看资产清单报告历史记录,请完成以下步骤:
- 在 Google Cloud 控制台中,转到 Cloud Storage 存储桶页面。
在存储桶列表中,点击包含资产清单报告配置的源存储桶的名称。
在存储桶详细信息页面上,点击库存报告标签页。
在资产清单报告配置列表中,点击生成您要检查的报告的资产清单报告配置的 UUID。
在资产清单报告历史记录部分中检查失败情况。将指针悬停在帮助 () 上,即可详细了解失败的原因。
- 在 Google Cloud 控制台中,转到 Cloud Storage 存储桶页面。
确保向项目级层服务代理授予读取和写入资产清单报告所需的 IAM 角色。如需了解详情,请参阅向服务代理授予所需的角色。
资产清单报告延迟
问题:资产清单报告生成延迟。
解决方案:报告生成时间各不相同。延迟时间不超过 24 小时属于正常情况。
数据集未填充
问题:存储空间分析数据集表仍然为空。
解决方案:在关联的 BigQuery 数据集中,检查 error_attributes_view 是否有错误代码。如需了解详情,请参阅排查数据集错误。
查询数据集时“ref”列中的 null 值
问题:在 BigQuery 中查询存储空间分析数据集时,ref 列返回 null。
解决方案:对于以 / 结尾的对象,数据集中的 ref 列为 null。
如果您在 BigQuery 中查询存储空间分析数据集时,ref 列返回 null 值,请验证您是否已授予所需的连接权限和角色,包括对 Cloud Storage 资源的访问权限,如使用 BigQuery 分析对象数据和元数据中所述。
存储批量操作作业验证错误
本部分介绍了向 storagebatchoperations.googleapis.com 提交批量操作作业请求时发生的验证错误。
400:作业 ID 或资源名称无效
问题:作业创建请求返回 400 Bad Request (INVALID_ARGUMENT) 响应,原因代码为 JOB_ID_INVALID 或 RESOURCE_NAME_TOO_LONG。
解决方案:验证作业 ID 是否包含 1 到 63 个小写字母数字字符或连字符 ([a-z0-9]([-a-z0-9]*[a-z0-9])?),以及完整的作业资源路径 (projects/PROJECT_ID/locations/LOCATION/jobs/JOB_ID) 是否不超过 200 字节。如果路径超过 200 字节,请缩短作业 ID。如需了解详情,请参阅作业名称。
400:职位描述超出限制
问题:作业创建请求返回 400 Bad Request (INVALID_ARGUMENT) 响应,原因是 DESCRIPTION_TOO_LONG。
解决方案:确保作业说明不超过 1,024 字节。如果超出此限制,请缩短文本。如需了解详情,请参阅作业说明。
400:缺少或存在无效的招聘信息来源配置
问题:作业创建请求返回 400 Bad Request (INVALID_ARGUMENT) 响应,并包含以下任一原因:
SOURCE_NOT_SPECIFIEDBUCKET_LIST_EMPTYTOO_MANY_BUCKETSMULTI_BUCKET_NOT_SUPPORTEDBUCKET_NAME_REQUIREDOBJECT_CONFIGURATION_REQUIRED
解决方案:确保您的作业指定了有效的来源配置(bucket_list 或 project_source),并且每个存储桶都定义了对象选择方法。如需了解详情,请参阅创建和管理批量操作作业。
400:存储桶或对象名称无效
问题:作业创建请求返回 400 Bad Request (INVALID_ARGUMENT) 响应,原因代码为 BUCKET_NAME_INVALID 或 OBJECT_NAME_INVALID。
解决方案:确保所有存储桶和对象名称都符合 Cloud Storage 命名要求。如需了解详情,请参阅存储分区命名准则和对象命名准则。
400:项目源配置错误
问题:作业创建请求返回 400 Bad Request (INVALID_ARGUMENT) 响应,并包含以下任一原因:
PROJECT_SOURCE_PROJECT_INVALIDPROJECT_SOURCE_DRY_RUN_FIELDS_EXCLUSIVEPROJECT_SOURCE_DRY_RUN_ID_INVALID
解决方案:验证项目源配置是否符合格式和字段排他性要求。如果您指定了试运行作业 ID,请省略所有其他 project_source 参数。如需了解详情,请参阅使用高级过滤条件创建作业。
400:转换参数冲突或缺失
问题:作业创建请求返回 400 Bad Request (INVALID_ARGUMENT) 响应,并包含以下任一原因:
TRANSFORMATION_NOT_SPECIFIEDREWRITE_OBJECT_MISSING_PARAMETERSPUT_OBJECT_HOLD_MISSING_PARAMETERSPUT_METADATA_MISSING_PARAMETERS
解决方案:指定一种转换类型,并提供所有必需的参数。如果配置对象保留,请验证存储桶是否已启用对象锁定,以及时间戳是否采用 RFC 3339 UTC 格式。如需详细了解不同转换的参数要求,请参阅服务类型。
400:对象前缀重叠或重复
问题:作业创建请求返回 400 Bad Request (INVALID_ARGUMENT) 响应,原因代码为 OBJECT_PREFIX_OVERLAP 或 DUPLICATE_OBJECT_PREFIX。
解决方案:移除重复的前缀,并确保 included_object_prefixes 中的任何前缀都不是列表中其他条目的前缀。如需了解详情,请参阅对象前缀。
400:清单文件格式和访问权限问题
问题:作业创建请求返回 400 Bad Request (INVALID_ARGUMENT) 响应,原因代码为 MANIFEST_LOCATION_REQUIRED 或 MANIFEST_LOCATION_INVALID,或者作业无法读取清单。
解决方案:验证清单 URI 是否为有效的 CSV 路径 (gs://<bucket_name>/<path>/<object_name>.csv),以及存储批量操作服务代理是否对清单存储桶具有 roles/storage.objectViewer 角色。如需详细了解 CSV 格式和架构要求,请参阅清单。
400:存储空间分析数据集发现错误
问题:使用存储空间分析数据集进行对象发现会返回 400 Bad Request(INVALID_ARGUMENT 或 FAILED_PRECONDITION)响应,原因如下:
BUCKET_DISCOVERY_SNAPSHOT_TOO_OLDTARGET_LOCATIONS_REQUIRED_FOR_SNAPSHOT_TIMEBUCKET_DISCOVERY_TOO_MANY_BUCKETS
解决方案:验证 snapshot_time 是否在过去 48 小时内,为存储分区指定 target_locations,并确保发现查询匹配的存储分区不超过 1,000 个。如需了解详情,请参阅使用存储空间分析数据集创建清单。
400:在启用了 Autoclass 的存储分区上,存储类别转换失败
问题:作业创建请求返回 400 Bad Request (FAILED_PRECONDITION) 响应,原因 AUTOCLASS_STORAGE_CLASS_TRANSFORMATION_UNSUPPORTED。
解决方案:您无法对启用了 Autoclass 的存储分区运行存储类别转换。要么以不使用 Autoclass 的存储桶为目标,要么移除存储类别转换。如需了解详情,请参阅 Autoclass 限制。
400:在启用统一存储桶级访问权限的存储桶上,对象 ACL 更新失败
问题:作业创建请求返回 400 Bad Request (FAILED_PRECONDITION) 响应,原因 UBLA_OBJECT_ACL_UPDATE_UNSUPPORTED。
解决方案:您无法更新已启用统一存储桶级访问权限的存储桶中的对象 ACL。请改用存储桶级或项目级 IAM 角色来管理访问权限。如需了解详情,请参阅统一存储桶级访问权限。
存储批量操作运行时和执行问题
本部分介绍了在异步执行批量操作作业期间出现的问题。
403:执行期间出现权限错误
问题:批量作业在执行期间失败,并显示 403 Forbidden (PERMISSION_DENIED)。
解决方案:向存储批量操作服务代理 (service-PROJECT_NUMBER@gcp-sa-storagebatchoperations.) 授予您的转换类型所需的 IAM 角色。如需了解详情,请参阅向服务代理授予权限。
对象重写期间的 CMEK 加密错误
问题:由于 Cloud KMS 密钥状态或权限错误,对象重写失败并显示 400 Bad Request 或 403 Forbidden。
解决方案:验证 Cloud KMS 密钥是否为 Enabled,是否与目标存储桶位于同一区域,以及服务代理是否具有 roles/cloudkms.cryptoKeyEncrypterDecrypter 角色。如需了解详情,请参阅服务类型:重写对象。
error_summaries 中的失败次数较高
问题:批量作业完成,但 counters.failed_object_count 不为零,且 error_summaries 中包含错误代码(例如 404 NOT_FOUND、412
FAILED_PRECONDITION 或 403 PERMISSION_DENIED)。
解决方案:运行带有 --location 标志的 gcloud storage batch-operations jobs describe(例如 gcloud storage batch-operations jobs describe JOB_ID --location=LOCATION),以查看汇总的错误细分,并检查 Cloud Logging 中每个对象的错误日志。如需了解详情,请参阅获取作业详细信息。
存储批量操作作业因快照已超过两天而失败
问题:当您创建基于 CEL 过滤器的存储批量操作作业时,作业创建失败。错误消息指出,快照时间已超过两天。
解决方案:为防止对过时的对象状态执行操作,存储批量操作会自动使作业创建失败。如果所选快照的创建时间超过两天,则会发生此故障。请选择以下方法之一来解决此问题:
- 使用清单文件:在 BigQuery 中手动查询数据集。将结果导出到 CSV 清单文件,并将该文件上传到 Cloud Storage 存储桶。然后,您可以使用清单方法创建批量操作作业,以避免两天的时间限制。
- 检查数据集配置:验证您的数据集配置是否处于有效状态,而不是已暂停。确认数据集快照已成功运行。如需了解如何验证配置,请参阅查看数据集配置。
- 使用目标位置和快照时间替换项:指定
--target-snapshot-time标志,以 RFC 3339 格式显式选择快照,从而绕过两天过时失败。指定--target-locations标志,以将操作限制为快照存在的位置。您可以使用这些替换项来解决导致自动全局快照无法更新的同步延迟问题。因此,您可以手动指定更新近的区域快照。如需了解命令语法,请参阅使用高级过滤条件创建作业。
基于 CEL 过滤器的存储批量操作作业在新订阅的项目中失败
问题:在新订阅的项目上运行基于 CEL 过滤器的存储批量操作作业失败,因为系统找不到有效的快照。
解决方案:启用 Storage Intelligence 订阅后,您必须等待 24 小时才能运行基于 CEL 过滤器的存储批量操作作业。此延迟可让系统执行初始元数据快照并确定起始快照时间。
基于 CEL 过滤器的存储批量操作作业失败并显示权限错误或抛出运行时错误
问题:基于 CEL 过滤器的存储批量操作作业在执行期间失败或返回运行时权限错误。
解决方案:存储批量操作使用您的用户凭据来处理对象。如果您没有目标存储分区和对象的必要 IAM 读取者或写入者权限,作业会失败。如果您的 CEL 过滤条件选择的资源是您无权访问的资源,就会出现此问题。确认您的账号对作业范围内的所有存储分区和对象具有 Storage Admin (roles/storage.admin)、Storage Object Admin (roles/storage.objectAdmin) 或同等角色。如需了解如何授予角色,请参阅使用 IAM 权限。
监控和日志分析
如需详细了解如何在 Cloud Logging 中检查每个对象的执行失败情况和错误载荷,请参阅查看存储批量操作日志。
Storage Intelligence Advisor 问题
本部分提供有关如何解决使用 Storage Intelligence 顾问时遇到的常见问题的指南。
Storage Intelligence Advisor 权限遭拒错误
问题:当您访问 Storage Intelligence 顾问时,收到 Permission denied 错误,并且图表和指标为空或显示权限错误。
解决方案:如果您没有具有查看 Storage Intelligence Advisor 所需权限的 IAM 角色,则会发生此问题。请让管理员为您授予您要查看的项目、文件夹或组织的 Storage Admin (roles/storage.admin) 角色。如需查看所需权限的列表,请参阅所需角色。
权限不足,无法查看受影响的项目
问题:当您在组织或文件夹级层查看发现结果时,检测到发现结果的项目面板会在项目旁边显示一个警告指示器,并附带消息 You've insufficient permission to access this project。
解决方案:如果您有权在组织或文件夹级别查看 Storage Intelligence 顾问,但缺少该特定项目的必需 IAM 权限,则会发生此问题。请让项目管理员为您授予受影响项目的 Storage Admin (roles/storage.admin) 角色。
Storage Intelligence 顾问为空或缺少数据
问题:Storage Intelligence 顾问页面加载完毕后,概览部分(根据所选资源标记为项目概览、文件夹概览或组织概览)中的图表、指标或主要发现部分为空或数据已过时。
解决方案:出现此问题的原因如下:
- 数据处理延迟时间:Storage Intelligence 指标和发现结果依赖于存储空间用量的每日快照和分析。数据可能需要 24 到 48 小时才能显示在 Storage Intelligence 顾问中。此类延迟通常会在您创建新存储分区后或首次查看 Storage Intelligence 顾问时发生。如果您希望看到近期活动数据,请等待 48 小时,然后再次检查。
- 没有存储资源:如果所选项目、文件夹或组织在所选时间段内不包含任何存储分区或对象,则 Storage Intelligence 顾问会显示为空。选择包含存储资源的其他项目、文件夹或组织。
- 时间过滤条件不正确:时间过滤条件设置的范围没有存储活动。将时间过滤条件调整为包含存储活动的范围。
发现结果未显示在 Storage Intelligence 顾问中
问题:您希望根据近期的存储活动在热门发现部分中看到发现结果,但该部分为空。
解决方案:如果 Storage Intelligence 顾问在所选时间段内未生成任何发现结果,就会出现此问题。未发现结果可能是由于以下原因造成的:
- 没有匹配的模式:最近的分析周期未检测到与发现模式匹配的存储行为。
- 数据处理延迟:调查结果依赖于存储指标,而这些指标需要 24 到 48 小时才能处理完毕。对于过去 24 小时内发生的事件,检测结果会在下一个处理周期完成后显示。
使用 VPC Service Controls 时出现的问题
问题:当您尝试从 VPC Service Controls 服务边界内的项目访问 Storage Intelligence 顾问时,收到“拒绝访问”或权限错误。
解决方案:如果 VPC Service Controls 未正确配置,导致您的项目、 Google Cloud 控制台与 Storage Intelligence 资源之间无法通信,则会出现此问题。如需解决此问题,请查看以下要求:
- 受限服务:验证服务边界是否限制了 Cloud Storage API (
storage.googleapis.com) 和存储空间分析 (storageinsights.googleapis.com) API。如需了解详情,请参阅列出和描述服务参数。 - 边界配置:验证您用于查看 Storage Intelligence 顾问的项目是否与您监控的项目位于同一服务边界内。如果它们位于不同的边界内,您必须配置入站流量和出站流量规则或使用边界桥。
- 从边界外部进行访问:如果您从边界外部的网络访问 Google Cloud 控制台,则必须创建包含您的用户账号和您正在使用的公共 IP 地址范围的入站规则或访问权限级别。
- 共享 VPC:如果您使用共享 VPC,请验证该项目是否与您的服务项目位于同一服务边界内。如需了解详情,请参阅共享 VPC。
- 审核日志:使用违规分析器检查审核日志中是否存在 VPC Service Controls 违规情况。违规分析器有助于诊断违规行为并找出原因,例如
RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER错误。