我正在构建一个文件托管应用程序,它将所有客户端文件存储在S3存储桶的文件夹中。然后,我希望每个顶级文件夹递归跟踪S3的使用量,以便为每个相应的客户端收取存储和带宽的成本。
前端是django,但解决方案可能是python,原因很明显。
以编程方式为每个客户端创建存储桶更好吗?
如果我确实采用为每个客户创建一个存储桶的方法,那么是否可以在启用时获得存储桶的云端曝光成本?
答案 0 :(得分:0)
根据您的需求,您的任务可能有多种解决方案。首先看看Amazon DevPay是否符合您的需求,这应该允许通过使用EC2和S3资源来计费客户。
第二个想法是使用您的AWS账户的Account Activity and Usage Reports部分。可以通过IAM授予对此权限的访问权限。您可以获得有关整个使用情况的详细统计信息,但我认为您不能用桶来解决这个问题。
另一种方法是使用Amazon boto SDK in Python来获取对象及其大小。或者,您可以在客户端软件上传期间监控存储大小。结合您使用上述方法获得的总支出并手动跟踪每个客户的使用情况,您可以计算每个客户的费用。
答案 1 :(得分:0)
不能为每个用户创建一个存储桶,因为亚马逊每个帐户只允许100个存储桶。因此,除非您确定不会有超过100个用户,否则这将是一个非常糟糕的主意。
理想的解决方案是记住Django app本身在数据库中的每个用户的存储。我猜你会使用S3 boto库来存储文件,而不是每次上传后返回字节大小。您可以使用它来存储它。
还有另外一种方法,您可以在存储桶中创建许多文件夹,每个文件夹都特定于用户。但仍然是记住应用中存储空间使用情况的最佳方式