向用户收取存储使用费

Charge users for storage usage

我想为每个用户报告我的 firebase 默认存储桶的存储使用情况(传输、文件存储),这样我就可以根据使用情况按月向他们收费。

例如,用户存储 1gb 的文件,他们需要支付 0.10 美元/月的费用。计费期过了一半,用户又存储了 1GB 的文件,因此应该收取 $0/10/mo 半个月...按使用量计费。

如何做到这一点?有最佳实践吗?

Firebase 没有为此内置任何内容,据我所知,Cloud Storage 也没有。但是您可以通过对存储进行建模以允许跟踪谁“拥有”每个文件,然后 运行 定期确定费用来确定费用,从而在这些产品之上构建它。

确定谁拥有每个文件

您需要能够将每个文件与其所有者相关联,以便您可以向该所有者收取费用。由于您提到使用 Firebase,您似乎希望允许直接从客户端应用程序上传文件。在这种情况下,我建议将每个用户的文件存储在他们自己的文件夹中,并使用 Firebase 的安全规则对其进行保护,如下所示:https://firebase.google.com/docs/rules/basics#content-owner_only_access

计算费用

然后您需要在服务器上定期 运行 一个进程来检查所有用户文件夹并确定该期间的总费用。如果您每天 运行 这样做,您只需检查用户文件夹中的文件并收取当天的存储费用。


请注意,上述方法中存在(相当)一些边缘条件,例如用户 storing-and-deleting 一天内的文件。你需要想出一个方案来防止这种滥用。对于此特定示例,可能是不允许在创建文件的同一天删除文件。但总的来说,您需要考虑滥用场景并针对每种情况设计保护措施。