【问题标题】:How do you get or generate a URL to the object in a bucket?如何获取或生成存储桶中对象的 URL?
【发布时间】:2025-12-29 09:55:17
【问题描述】:

我将对象存储在谷歌云存储上的存储桶中。我想为该对象提供一个 http url 以供下载。是否有标准约定或方式将存储在云存储中的文件公开为 http url?

【问题讨论】:

  • 对象是公开的吗?如果没有,你想怎么做授权?

标签: google-cloud-storage google-compute-engine


【解决方案1】:
【解决方案2】:

是的。假设对象是可公开访问的:

http://BUCKET_NAME.storage.googleapis.com/OBJECT_NAME

你也可以使用:

http://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME

HTTP 和 HTTPS 都可以正常工作。请注意,该对象必须可供匿名用户读取,否则下载将失败。更多文档请访问https://developers.google.com/storage/docs/reference-uris

如果对象是不可公开访问的,并且您只希望一个用户能够访问它们,您可以生成一个签名 URL,该 URL 将只允许 URL 的持有者下载对象,并且即便如此,也只是在有限的时间内。我建议为此使用其中一个 GCS 客户端库,因为签名代码很容易出错:https://developers.google.com/storage/docs/accesscontrol#Signed-URLs

【讨论】:

  • 是使用公共 URL 和网站链接更好,还是使用经过身份验证的服务帐户检索文件并将其流式传输回网络服务器给最终用户?
  • 完全取决于您的需求。允许最终用户直接流式传输可以节省带宽,从而节省成本,但通过您自己的系统代理它可以实现更多控制。
  • 另请注意,对象名称可能包含斜杠 (/),因此“模拟”了一个层次结构(尽管存储桶内没有层次结构,它是一个平面命名空间,但某些工具可能会假装层次结构的存在是为了更好的可视化。