【问题标题】:Site hosted on App Engine, how to access images in cloud storage?网站托管在 App Engine 上,如何访问云存储中的图像?
【发布时间】:2019-07-17 02:14:07
【问题描述】:

我在 App 引擎上有一个 Web 应用程序,在 Firestore 中有数据,在云存储中有一些图像。我可以很好地与 Firestore 通信以获取数据,例如带有文件路径的文件名:

集合名称“猫”

'name': 'Black Cat'
'filename': 'cat_black.jpg'

在云存储中,我有一个存储桶,它以存储我的 cat 文档的 firestore 中的集合命名。在存储桶中有一个名为“cat_black.jpg”的 jpg 文件。如何以只有我的应用引擎才能获取和显示照片的安全方式链接到此文件?

# App Engine Web UI

<img src="https://storage.cloud.google.com/Cats/cat_black.jpg">

我需要修改存储桶的权限吗?

编辑:我知道我的 App Engine 创建了自己的存储桶,因此默认情况下它应该可以访问存储桶,我需要先在 Python 中检索图像吗?我正在考虑为每个 img src 运行一个 API 请求并获取其各自图像的 jinja2 模板函数。

【问题讨论】:

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


    【解决方案1】:

    默认情况下,当您为项目创建存储桶时,your app has all the permissions required to read and write to it

    1. 如果您想设置权限以允许其他用户访问存储桶及其内容,请参阅Setting bucket permissions

    2. 如果您想在不进行身份验证的情况下将其公开,您需要(授予 allUsers 到 Reader 的权限)[https://cloud.google.com/storage/docs/access-control/making-data-public]

    您还可以查看Setting Up Google Cloud Storage 的此说明以了解更多详细信息。

    有几种方法可以引用存储桶中的对象: http://BUCKET_NAME.storage.googleapis.com/OBJECT_NAME 或者 http://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME

    不要忘记使用 BUCKET_NAME。

    默认 AppEngine 存储桶的名称为:&lt;project-id&gt;.appspot.com。请注意,它使用 projec-id 而不是项目名称。因此,要引用默认存储桶,您需要使用以下命名约定:

    http://&lt;project-id&gt;.appspot.com.storage.googleapis.com/OBJECT_NAME 或者 http://storage.googleapis.com/&lt;project-id&gt;.appspot.com/OBJECT_NAME

    您不需要先在 Python 中检索图像。

    【讨论】:

    • 我明天再试一次!我觉得我确实尝试过做类似的事情,它说我没有这样做的凭据,但我有一个“令牌”。当我部署我的 App Engine 时,它​​创建了一个以项目命名的存储桶,这是我需要正确使用的存储桶吗?例如。我的项目被称为cats,而我创建的存储桶被称为cats.appspot.com,那么我会将其引用为http://storage.googleapis.com/cats.appspot.com/cat_black.jpg 吗?或者我会创建另一个名为任何东西的存储桶,例如。 cat-photos 然后我的应用程序本身应该可以访问它?
    • 请检查更新的答案。您不需要创建新的存储桶,但您可以根据需要创建。默认情况下,当您为项目创建存储桶时,您的应用拥有读取和写入它所需的所有权限。
    • 哦,好的!明天上班再去,回来汇报。
    • 桶需要公开吗?
    • 这取决于您希望如何为您的服务/网站设计身份验证。请检查更新的答案。如果你想在没有身份验证的情况下公开它,你需要(权限 allUsers to Reader)[cloud.google.com/storage/docs/access-control/…
    猜你喜欢
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多