shopify 应用程序的存储服务

Storage service for a shopify application

我正在为 Shopify 开发在线产品设计工具。该应用程序将托管在我的网络服务器上。用户将在他的网页上放置一个 JavaScript 代码。该代码将在 iframe 中打开我的应用程序(具有讽刺意味的是,这就是 Shopify 应用程序的工作方式)。然后用户可以使用该工具创建设计并将生成的图像保存在我的网络服务器上。我想要的是将用户生成的图像上传到存储服务器,而不是将它们存储在我的网络服务器上。我正在寻找 service/solution 允许我的应用程序在注册期间为用户创建存储帐户并指定允许的最大存储空间 space。该服务还应允许通过 API 上传文件。上传的文件应该可以通过 URL 访问。该服务还应该能够提供基于每个用户的分析。

这很简单。每次客户使用您的服务上传内容时,您都会知道。因此,在您的 App 中以简单的数据结构记录事件。如果客户超过某个限制,则进行处理。你在开公交车,所以你可以告诉他们要么多付钱,要么下车,要么保持原样。 Amazon S3 非常便宜,永远不会让您花钱,而且任何客户让您花钱的可能性都很低,您有大约 10 分钟的时间来制作这个简单的代码块,然后从那里开始。

对于面临同样情况的其他人,这就是我最终做的事情

  1. 在 S3 兼容存储上创建了单个存储桶。使此存储桶 public 易于访问,因为它将包含图像等静态资产。
  2. 为此存储桶中的每个用户创建了一个文件夹。
  3. 跟踪每个用户文件夹的大小。据我所知,S3 存储不提供获取文件夹大小的方法,因此我最终获取了文件夹中所有对象的列表并将它们的大小相加。我们仅在上传或删除文件时计算大小并将大小保存在数据库中。

@chris 每个用户一个桶的建议很好,最初我实施了这个策略,但在后期我遇到了障碍。我发现 S3 不允许您通过 HTTPS 访问内容。要通过 HTTPS 访问内容,我们必须使用 Cloudflare 或任何其他 CDN,您可以在其中创建 (https) 区域并将存储桶指定为其来源。每个用户一个桶,我们需要为每个新用户创建一个新区域。这种情况并不理想,因为许多 CDN 会为每个创建的新区域额外收费。所以我们决定为所有用户使用一个桶,并在这个桶内为每个用户创建一个文件夹。然后,我们在 CDN 上创建了一个区域,并将存储桶的 public 路径指定为 CDN 区域的起点。

我们还计划限制一个桶中的数据不超过 100 个用户,并在每新增 100 个用户后创建一个新桶。