如何获取或生成存储桶中对象的 URL?

Posted

技术标签:

【中文标题】如何获取或生成存储桶中对象的 URL?【英文标题】:How do you get or generate a URL to the object in a bucket? 【发布时间】:2013-12-27 00:28:10 【问题描述】:

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

【问题讨论】:

对象是公开的吗?如果没有,你想怎么做授权? 【参考方案1】:

一种方法是使用https://storage.cloud.google.com// 查看更多文档 https://developers.google.com/storage/docs/collaboration#browser

【讨论】:

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

以上是关于如何获取或生成存储桶中对象的 URL?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取使用 Cloudfront 上传的 S3 存储桶中的文件?

如何获取存储在数据库中的资源的 URL

如何从 Firebase 存储 getDownloadURL 获取 URL

如何使用 aws-sdk 获取 AWS S3 上文件的 URL?

如何使用 Java 列出存储桶中的所有 AWS S3 对象

如何从 s3 存储桶中获取 Pyspark 中带有前缀的文件?