网站托管在App Engine上,如何访问云存储中的图像?

时间:2019-07-17 02:14:07

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

我在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">

我需要编辑存储桶上的权限吗?

edit:我了解我的App Engine创建了自己的存储桶,因此默认情况下它应该有权访问该存储桶,我是否需要首先使用Python检索图像?我正在考虑为每个img src使用jinja2模板函数来运行API请求并获取其各自的图像。

1 个答案:

答案 0 :(得分:1)

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

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

  2. 如果要在不进行身份验证的情况下将其公开,则需要(允许allUsers授予读者)[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。

Defaul AppEngine存储桶的名称为:<project-id>.appspot.com。请注意,它使用projec-id非项目名。因此,要引用默认存储桶,您需要使用以下命名约定:

http://<project-id>.appspot.com.storage.googleapis.com/OBJECT_NAME 要么 http://storage.googleapis.com/<project-id>.appspot.com/OBJECT_NAME

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