我花了几个小时试图找出最好的做法,我仍然空着 . 我可能只是在说错了这个问题,因为这必须在那里 . 不过...
我在Google Cloud 端存储中有一个存储桶 . 从各种来源上传大型 static asset files . 我不坚持通过blobstore api等上传 . )每个文件的大小在10MB-100MB的范围内
我有一个应用程序引擎应用程序,我想运行一个cron作业 check for any new uploads 到GCS桶,然后 create a new Cloud Datastore entity that correlates to the new asset that's been uploaded to GCS .
在我的应用程序的其他方面,我有一些工作,需要 bucket reference url 到大文件交给其他 Cloud API .
是...的最佳方法
-
只需存储对 Cloud 存储资产的URL的引用?
-
将文件从 Cloud 存储加载到数据存储区作为blob?使用ndb.blobstore? (如果是这样,我对如何自动执行此操作有点模糊;文档似乎专注于在上载时调用blobstore,而不是作为批处理过程)
-
别的什么?数据流管道?
Essentially I'm looking for the best practice for taking a collection of large assets in Cloud Storage that I don't control the upload of, and loading them into a datastore database in gae as one of several properties, according to some custom ndb entity definition. With the future ability to pass a bucket reference to an asset for further process via other APIs.
再次,如果这个答案已经在那里,我很抱歉,但是我碰到了一堵墙,以为我会在这里发帖 . 提前致谢 .
3 回答
我想你可能想要使用Pub/Sub来监听存储上的变化 . 可以使用应用程序引擎或数据流API来处理文件并将实体添加到数据存储区(您可以保留URL链接,但可能是您处理资产并以某种方式在数据存储中保存其元数据的调用) . 这是link使用Pub / Sub应用程序引擎 .
关于Cloud Storage vs Blobstore,我的理解是谷歌正在推广/支持除blobstore之外的Google Cloud 端存储 . 如果您正在开发新应用程序而不是维护旧版应用程序,那么最好考虑使用GCS . 顺便说一句,请参阅speedplan的答案:Google Blobstore versus Google cloud storage .
与使用PubSub类似,您可以使用带有GCS的cloud function在每个对象完成时调用您的函数 .
只想在以前的答案中添加以下几点:
数据存储区实体的大小最多为1MiB-4bytes
在数据存储区中Blob实体是1 MiB - 89 bytes
对于大型blob,例如图像Google recommends,使用Google Cloud 端存储
Google有一个tool用于将blob从Blobstore迁移到Google Cloud 端存储 .