微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从客户端浏览器访问永久 GCS 对象?

如何解决从客户端浏览器访问永久 GCS 对象?

我正在开发一个基本的 Flask 应用程序。我有一个页面,我只想显示一个下载器链接,指向我的 GCS 存储桶中名为 twilio-billing 的每个文件。我尝试使用签名网址,但它仅限于 7 天,并且不应公开,因为它是私人文档。

到目前为止我所拥有的:

  • 一个名为 twilio-gcs@mousset005.iam.gserviceaccount.com 的服务帐户,拥有 Storage AdminStorage Object AdminStorage Object Viewer 权限
  • json 生成twilio-gcs@mousset005.iam.gserviceaccount.com 身份验证密钥。该文件使用 os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "config/gcp.json" 加载到我的 Flask 应用程序上。我已经能够将文件从我的 Flask 应用程序直接上传到该存储桶中。

现在我想让用户能够下载他的账单。我可以尝试使用两个不同的 url 来访问存储在我的存储桶中的对象:

  1. https://storage.cloud.google.com/twilio-billing/2021-1-Twilio-receipt.pdf:有效,但我必须使用自己的 Google 帐户登录。如果没有,我将被重定向到 gmail 登录
  2. https://storage.googleapis.com/twilio-billing/2021-1-Twilio-receipt.pdf:从来没有工作过。即使使用 HTTP 并且当我登录我的 Google 帐户时,也会收到错误 403Anonymous caller does not have storage.objects.get access to the Google Cloud Storage object.

您有什么建议吗?

web_messaging/blueprints/texting/templates/temporary.html

<!DOCTYPE html>
<html lang="en">
<head>
    <Meta charset="UTF-8">
    <Meta http-equiv="X-UA-Compatible" content="IE=edge">
    <Meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <a href="https://storage.googleapis.com/twilio-billing/2021-1-Twilio-receipt.pdf">link A (error 403)</a>
    <a href="https://storage.cloud.google.com/twilio-billing/2021-1-Twilio-receipt.pdf">link B (must be logged in to my Google Cloud Account) </a>
</body>
</html>

web_messaging/blueprints/texting/routes.py

# returning the list all of files 
@texting.route("/billing",methods=['GET'])
@login_required
def billing():
    bucket = gcp_storage.get_bucket('twilio-billing')
    for blob in bucket.list_blobs(prefix=''):
        print(blob)
        # will generate my list of link here to render it on my html
    return render_template("temporary.html")

解决方法

您可以将对象访问权限设置为公开。请参阅此 Google 云存储文档,https://cloud.google.com/storage/docs/access-public-data

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。