从应用程序引擎访问Google云存储帐户对象

时间:2019-06-25 14:14:26

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

概述

我有一个GCP存储桶,其中有一个.json文件和5个jpeg文件。在.json文件中,图像名称与jpeg文件名称匹配。我想知道一种基于图像名称访问存储帐户中每个对象的方法。

方法1(当前方法):

当前,使用python脚本从存储桶中获取图像。这是通过遍历图像名称的.json文件,获取每个单独的图像名称,然后基于存储桶/图像名称构建URL并检索图像并将其显示在flask App Engine网站上来完成的。

此当前方法要求存储桶对象是公开的,这在互联网被授予访问此存储桶的权限方面造成了安全问题,其次,它的计算量很大,每个图像都必须分别从存储桶中拉下。该存储桶最终将包含10000张图像,这将导致图像加载和显示在网页上的速度变慢。

要求(新方法): 有一种方法可以让我从存储桶中提取图像,而不是一次提取所有图像,然后将它们显示在网页上。我希望能够从存储桶中访问单个图像并显示从.json文件中检索到的相应图像数据。

最后,我想确保存储桶或对象都不是公共的,并且只能通过应用程序引擎进行访问。

谢谢

1 个答案:

答案 0 :(得分:1)

看到现在正在工作的Python代码将很有帮助。您不需要公开存储对象。应该可以使用Google Cloud Storage(GCS)API和对存储具有只读权限的服务帐户令牌来检索它们(尽管取决于您是否知道对象名称以及是否需要获取存储桶名称,可能需要对该服务帐户具有更多权限。

关于性能,您可以在前端做一些事情以弄清楚要显示的内容,并仅获取用户滚动时要显示的内容,或者可以从GCS存储桶中分页显示结果

此处链接到服务帐户和API片段:

https://cloud.google.com/iam/docs/service-accounts https://cloud.google.com/storage/docs/reference/libraries#client-libraries-install-python

有关在此处检索GCS对象的分页的信息:

How does paging work in the list_blobs function in Google Cloud Storage Python Client Library