【发布时间】:2018-03-23 00:56:58
【问题描述】:
我试图了解 Google Cloud Platform 存储,但无法真正理解文档中使用的语言。我想问您是否可以使用存储和 API 来存储用户在您的应用程序中拍摄的照片,如果提供 URL,还可以取回图像?即使可以,这样做是否安全合理?
【问题讨论】:
标签: google-cloud-platform google-cloud-storage
我试图了解 Google Cloud Platform 存储,但无法真正理解文档中使用的语言。我想问您是否可以使用存储和 API 来存储用户在您的应用程序中拍摄的照片,如果提供 URL,还可以取回图像?即使可以,这样做是否安全合理?
【问题讨论】:
标签: google-cloud-platform google-cloud-storage
是的,您几乎可以使用存储桶来存储任何类型的数据。
在将图像从应用程序传输到存储桶方面,必须授权应用程序写入存储桶。
一种选择是在应用程序中使用服务帐户密钥。服务帐户是一个特殊帐户,应用程序可以使用它来授权各种 Google API,包括存储 API。
有更多关于服务帐户here 的信息和here 有关使用服务帐户密钥的信息。这些密钥可以在您的应用程序中使用,并允许应用程序继承分配给该服务帐户的权限/范围。
就使用 URL 检索图像而言,一种可能的选择是使用 signed URLs,这将允许您在给定数量的存储桶中授予用户对对象(在您的情况下为图像)的读取或写入权限时间。
也可以使用 ACL(访问控制列表)来控制对存储桶对象的访问。如果您对公开可用的图像(即所有人都可以访问)感到高兴,则可以为 AllUsers 设置具有“读者”访问权限的 ACL。 有关这方面的更多信息可以found here。
如果您决定公开提供图像,则从存储桶中检索对象/图像的 URL 格式为:
https://storage.googleapis.com/[BUCKET_NAME]/[OBJECT_NAME]
编辑:
关于在文件进入存储桶之前使用接口上传文件,一种选择是拥有一个具有外部 IP 地址的实例(或负载均衡器后面的多个实例),其中最初上传图像。您可以使用FUSE 将 Cloud Storage 挂载到此实例,以便将上传的文件轻松传输到存储桶。在数据库方面,您可以选择在 Compute Engine 实例上手动安装数据库,或使用 Cloud SQL 等完全托管的数据库服务。
【讨论】: