将 Google Cloud Storage 存储桶中的大型静态资产加载到新的数据存储区实体中
Load large static assets from Google Cloud Storage bucket into new datastore entity
我花了几个小时试图找出这里的最佳实践,但我仍然一无所获。有可能我只是把问题措辞错了,因为这一定是在那里。尽管如此...
我在 Google 云存储中有一个存储桶。大型 静态资产文件 从各种来源上传到那里。我不控制上传(例如,我不能坚持通过 blobstore api 等上传)。每个单独文件的大小在 10MB-100MB 之间
我有一个 App Engine 应用程序,我想 运行 一个 cron 作业来 检查任何新上传 到 GCS 存储桶,然后 创建与已上传到 GCS 的新资产相关联的新 Cloud Datastore 实体。
在我的应用程序的其他区域,我的作业需要 存储桶引用 url 到大文件以移交给其他云 API。
是...的最佳方法
- 只存储对云存储资产 URL 的引用?
- 将云存储中的文件作为 blob 加载到数据存储中?使用 ndb.blobstore? (如果是这样,我对如何自动化这个有点含糊;文档似乎专注于在上传时调用 blobstore,而不是作为批处理)
- 还有别的吗?数据流管道?
本质上,我正在寻找最佳实践,将我无法控制上传的云存储中的大型资产集合,并将它们作为一个加载到 gae 中的数据存储数据库中几个属性,根据一些自定义的 ndb 实体定义。未来能够通过其他 API 将存储桶引用传递给资产以进行进一步处理。
再次道歉,如果这个答案已经在那里,但我遇到了困难,我想我会 post 在这里。提前致谢。
与使用 PubSub 类似,您可以使用带有 GCS 的 cloud function 在每个对象完成时调用您的函数。
我认为您可能想使用 Pub/Sub that listens to the change on the storage. Either an app engine or dataflow API can be used to process the file and add entity to datastore (you can keep the url link but it is probably your call to process the asset and save its metadata somehow in your datastore). Here is a link 来使用 Pub/Sub + 应用程序引擎。
关于云存储与 Blobstore,我的理解是 google 是 promoting/favoring Google 云存储而不是 blobstore。如果您正在开发新应用程序而不是维护遗留应用程序,最好考虑 GCS。顺便说一句,请在此处查看 speedplan 的答案:Google Blobstore versus Google cloud storage。
只是想在之前的回答中补充以下几点:
- 数据存储实体的大小最多只有 1MiB-4bytes
- Datastore 中的 Blob 实体是 1 MiB - 89 bytes
- 对于大的 blob,例如图像 Google recommends 使用 Google Cloud Storage
- Google 有一个 tool 用于将 blob 从 Blobstore 迁移到 Google Cloud Storage。
我花了几个小时试图找出这里的最佳实践,但我仍然一无所获。有可能我只是把问题措辞错了,因为这一定是在那里。尽管如此...
我在 Google 云存储中有一个存储桶。大型 静态资产文件 从各种来源上传到那里。我不控制上传(例如,我不能坚持通过 blobstore api 等上传)。每个单独文件的大小在 10MB-100MB 之间
我有一个 App Engine 应用程序,我想 运行 一个 cron 作业来 检查任何新上传 到 GCS 存储桶,然后 创建与已上传到 GCS 的新资产相关联的新 Cloud Datastore 实体。
在我的应用程序的其他区域,我的作业需要 存储桶引用 url 到大文件以移交给其他云 API。
是...的最佳方法
- 只存储对云存储资产 URL 的引用?
- 将云存储中的文件作为 blob 加载到数据存储中?使用 ndb.blobstore? (如果是这样,我对如何自动化这个有点含糊;文档似乎专注于在上传时调用 blobstore,而不是作为批处理)
- 还有别的吗?数据流管道?
本质上,我正在寻找最佳实践,将我无法控制上传的云存储中的大型资产集合,并将它们作为一个加载到 gae 中的数据存储数据库中几个属性,根据一些自定义的 ndb 实体定义。未来能够通过其他 API 将存储桶引用传递给资产以进行进一步处理。
再次道歉,如果这个答案已经在那里,但我遇到了困难,我想我会 post 在这里。提前致谢。
与使用 PubSub 类似,您可以使用带有 GCS 的 cloud function 在每个对象完成时调用您的函数。
我认为您可能想使用 Pub/Sub that listens to the change on the storage. Either an app engine or dataflow API can be used to process the file and add entity to datastore (you can keep the url link but it is probably your call to process the asset and save its metadata somehow in your datastore). Here is a link 来使用 Pub/Sub + 应用程序引擎。
关于云存储与 Blobstore,我的理解是 google 是 promoting/favoring Google 云存储而不是 blobstore。如果您正在开发新应用程序而不是维护遗留应用程序,最好考虑 GCS。顺便说一句,请在此处查看 speedplan 的答案:Google Blobstore versus Google cloud storage。
只是想在之前的回答中补充以下几点:
- 数据存储实体的大小最多只有 1MiB-4bytes
- Datastore 中的 Blob 实体是 1 MiB - 89 bytes
- 对于大的 blob,例如图像 Google recommends 使用 Google Cloud Storage
- Google 有一个 tool 用于将 blob 从 Blobstore 迁移到 Google Cloud Storage。