【问题标题】:Get storage path from Google Storage signed url从 Google Storage 签名的 url 获取存储路径
【发布时间】:2019-05-16 15:26:14
【问题描述】:

获得对 Google 存储文件的公开可读引用的推荐方法似乎是使用 Signed URLs

我需要根据 URL 检索存储引用,这样当我的数据库记录被删除时,我也可以从存储中删除它的文件。

path/file.jpeg 中存储的文件的签名 URL 似乎遵循以下模式:

https://storage.googleapis.com/bucket.name/path%2Ffile.jpeg?foobar

所以我目前正在使用正则表达式来获取bucket.name? 字符之间的文本,然后将%2F 替换为/。我想知道:

  • 这可靠吗?
  • 官方库中是否有任何 API 可以为我执行此操作?找不到。
  • 有没有更好的方法?就像将存储路径以及签名的 url 一起存储在数据库记录中(对我来说似乎有点过头了)。

【问题讨论】:

    标签: url google-cloud-platform google-cloud-storage


    【解决方案1】:

    获得对 Cloud Storage 对象的公开可读引用的推荐方法是通过 allowing public access 对其进行访问,这样做您将获得一个格式为 storage.googleapis.com/[your-bucket]/ 的 URL [路径到文件]/[文件]。

    -这可靠吗? 签名 URL 旨在仅在有限时间内需要访问(读取、写入或删除)时使用,因此为当前应用程序需求使用签名 URL 可能不是最佳方法,因为您使用正则表达式来获取适当的 URL 路径但忽略“?”之后的所有文本这需要对某些计算过程进行签名。

    -官方库中是否有任何 API 可以为我做到这一点?找不到。 不确定您是否指的是从签名的 URL 中提取路径,如果是这样,那么答案是否定的。

    -有更好的方法吗? 使用公共访问权限可能是另一种选择。如果您使用签名的 url 也有删除权限但没有真正使用限时功能,那么最好的方法是使用对象公共访问,创建一个具有足够权限的服务帐户(删除云存储对象)并使用 storage client library删除数据库记录时从存储桶中删除对象。

    【讨论】:

    • 谢谢。但问题是一样的,不是吗?如果我允许公共访问,我会得到一个 URL(如签名 URL,但没有?)。我仍然需要使用正则表达式来提取数据库路径(将其用作存储客户端库的输入)。对吗?
    • 是的,您需要提取它,但您不需要替换字符 (%2F),并且您不需要完成完整的签名 URL 创建过程,因为没有限制时间需要。但这只是您可能要考虑的解决方案的另一种方法。在任何情况下,客户端库都没有提供从签名 URL 中提取路径的特定方法。
    • 好的!感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 2019-11-07
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多