问题排查

403:帐号已停用

问题:我尝试创建存储分区,但收到 403 Account Disabled 错误。

解决方案:此错误表示您没有为关联项目启用结算功能。如需了解启用结算功能的步骤,请参阅为项目启用结算功能

如果已启用结算功能,但是您仍然收到此错误消息,您可以与支持部门联系并提供您的项目 ID 和问题描述。

403:访问遭拒

问题:我尝试列出存储分区中的对象,但收到 403 Access Denied 错误。

解决方案:检查您的凭据是否正确。例如,如果您使用的是 gsutil,请检查存储在 .boto 文件中的凭据是否正确。

假设您使用的是正确的凭据,您的请求是通过代理使用 HTTP(而不是 HTTPS)进行路由的吗?如果是,请检查您的代理是否已配置为从此类请求中移除 Authorization 标头。如果进行了此类配置,请确保您的请求使用 HTTPS(而不是 HTTP)。

409:冲突

问题:我尝试创建存储分区,但收到以下错误:

409 Conflict. Sorry, that name is not available. Please try a different one.

解决方案:您尝试使用的存储分区名称(例如 gs://catsgs://dogs)已被占用。Cloud Storage 使用全局命名空间,因此您不能将存储分区命名为与现有存储分区相同的名称。请选择未使用的名称。

代理服务器

问题:我要通过代理服务器进行连接,我需要做什么?

解决方案:如需通过代理服务器访问 Cloud Storage,您必须有权访问以下网域:

  • accounts.google.com,用于通过 gsutil config 创建 OAuth2 身份验证令牌
  • oauth2.googleapis.com,用于执行 OAuth2 令牌交换
  • *.googleapis.com,用于执行存储请求

如果您的代理服务器或安全政策不支持按网域列出白名单(而是需要按 IP 网络块列出白名单),我们强烈建议您在代理服务器配置中包括所有 Google IP 地址范围。您可以通过在 ARIN 上查询 WHOIS 数据来查找地址范围。最佳做法是定期查看代理设置,以确保它与 Google 的 IP 地址相匹配。

我们不建议您使用单次查询 oauth2.googleapis.comstorage.googleapis.com 所获得的单个 IP 地址来配置代理。由于 Google 服务通过 DNS 名称进行呈现,而这些名称映射到了可能随时间变化的大量 IP 地址,因此,如果基于单次查询来配置代理,可能会导致您无法连接到 Cloud Storage。

如果您的请求通过代理服务器进行路由,您可能需要与网络管理员联系,以确保代理不会删除包含您的凭据的 Authorization 标头。如果没有 Authorization 标头,您的请求将被拒绝,并且您会收到 MissingSecurityHeader 错误。

gsutil stat

问题:我尝试使用 gsutil stat 命令来显示子目录的对象状态,但收到错误。

解决方案:Cloud Storage 使用平面命名空间将对象存储到存储分区中。 虽然您可以在对象名称中使用斜杠(“/”),使其看起来仿佛处于层次结构中,但 gsutil stat 命令会将尾部斜杠视为对象名称的一部分。

例如,如果运行命令 gsutil -q stat gs://my-bucket/my-object/,gsutil 将查询对象 my-object/(带有尾部斜杠)的相关信息,而不是对嵌套在 my-bucket/my-object/ 下的对象执行操作。除非您实际拥有具有该名称的对象,否则操作将失败。

对于子目录列出操作,请改为使用 gsutil ls

配置为网站的存储分区

设置存储分区来托管静态网站时可能遇到的常见问题如下。

HTTPS 传送

问题:我想在不使用负载平衡器的情况下通过 HTTPS 传送我的内容。

解决方案:您可以使用 https://storage.googleapis.com/my-bucket/my-object 等直接 URI 通过 HTTPS 传送静态内容。对于通过 SSL 使用自定义网域传送内容的其他选项,您可以:

域名验证

问题:我无法验证我的域名。

解决方案:通常,Search Console 中的验证过程会指示您将文件上传到您的网域,但是,如果没有相关的存储分区(您只能在执行域名验证后创建),您可能无法执行此操作。

在这种情况下,请使用域名提供程序验证方法来验证所有权。有关相关操作步骤,请参阅所有权验证。您可以在创建存储分区之前完成此验证。

页面无法访问

问题:我的网站提供的网页向我发出 Access denied 错误消息。

解决方案:检查对象是否已被公开共享。如果没有,请参阅公开数据以了解如何执行此操作。

如果您之前上传并共享了一个对象,但随后上传了该对象的新版本,则您必须以公开方式重新共享该对象。这是因为,上传新的版本后,公开权限会被覆盖。

内容下载

问题:系统提示我下载我的页面内容,而不能在浏览器中查看。

解决方案:如果您将 MainPageSuffix 指定为对象并且该对象的类型不是网络内容,系统会提示网站访问者下载内容,而不是提供页面。如需解决此问题,请将 content-type 元数据条目更新为合适的值,例如 text/html。如需了解如何执行此操作,请参阅修改对象元数据

使用 storage.cloud.google.com 下载内容

问题:我正在从 storage.cloud.google.com 下载我的公开内容,我在浏览器中导航到公开对象时收到 403 - Forbidden 错误

https://storage.cloud.google.com/[BUCKET_NAME]/[OBJECT_NAME]

解决方案:使用 storage.cloud.google.com 下载对象的过程称为经过身份验证的浏览器下载;该过程始终使用基于 Cookie 的身份验证,即使对象设为可供 allUsers 公开访问也是如此。如果您为 Cloud Storage 启用了审核日志,则该功能的一项限制是停用经过身份验证的浏览器下载;如果启用了审核日志,则此类下载会导致 403 响应。

为避免此问题,请审核日志,或切换到支持未经身份验证的下载的直接 API 调用

301:永久移动

问题:访问目录路径时,系统会返回一个空对象和一个 301 HTTP 响应代码。

解决方案:如果在访问目录(例如 http://www.example.com/dir/)时,您的浏览器下载了一个零字节对象,并且收到 301 响应代码,则您的存储分区很可能包含具有该名称的空对象。如需检查是否存在此问题并解决问题,请执行以下操作:

  1. 在 Google Cloud Console 中打开 Cloud Storage 浏览器。
    打开 Cloud Storage 浏览器
  2. 点击 Google Cloud Console 顶部的激活 Cloud Shell 按钮。激活 Cloud Shell
  3. 运行 gsutil ls -R gs://www.example.com/dir/。如果输出内容包含 http://www.example.com/dir/,则表明该位置存在一个空对象。
  4. 使用以下命令移除空对象:gsutil rm gs://www.example.com/dir/

您现在可以访问 http://www.example.com/dir/ 并让它返回该目录的 index.html 文件(而不是空对象)。

了解 Cloud Storage 浏览器中的错误

问题:使用 Cloud Storage 浏览器执行操作时,我收到一条一般性错误消息。例如,我在尝试删除存储分区时看到错误消息,但看不到操作失败的原因。

解决方案:使用 Google Cloud Console 的通知查看有关失败操作的详细信息:

  1. 点击 Google Cloud Console 顶部的通知按钮。

    通知

    下拉列表会显示 Google Cloud Console 最近执行的操作。

  2. 点击您要详细了解的操作项。

    此时将打开一个页面,其中显示了有关该操作的详细信息。

  3. 点击各行即可展开详细的错误信息。

    以下是一个失败存储分区删除操作的错误信息示例,该示例说明了存储分区保留政策阻止删除存储分区。

    存储分区删除错误详情

后续步骤