【问题标题】:Django Boto S3 AccessDjango Boto S3 访问
【发布时间】:2011-03-30 17:36:14
【问题描述】:

我想不通。

这就是我想要发生的事情......

我有一个应用程序,用户使用 boto 和 django 将文件上传到 S3。我希望这些文件是私有的,并且只能通过我的应用程序使用我的 api 凭据访问。

因此,如果用户通过我的应用上传照片,他或其他任何人可以下载照片的唯一方法是通过他在我的应用上的帐户。这是否可能,如果可以,我该如何使用 boto 的 acl 规则进行设置。我不需要代码,(希望)我可以弄清楚,只是简单介绍一下如何做。

这有意义吗?我知道我没有很好地传达它,我提前道歉。另外,感谢您的帮助。

【问题讨论】:

  • S3 服务是您拥有的单个帐户,还是客户提供他们自己的 S3 帐户并通过您的系统访问?

标签: python django amazon-s3 boto


【解决方案1】:

boto 的 ACL 的文档是 here。我建议只使用private“罐装政策”——因为您的用户无论如何都没有 S3 帐户,这是迄今为止最简单的想法。您的应用程序当然必须跟踪哪个用户“拥有”哪些文件(这应该是一个非常非常简单的 Django 模型!)。

【讨论】:

    【解决方案2】:

    django-storages 已经有解决这个问题的方法,并且有一个 boto 后端。除了教化,不要自己动手。

    【讨论】:

    • 您能指出 django-storages 的 ACL 功能的文档吗?我找不到。
    • 我看不到任何文档,但似乎 S3BotoStorage 类本身允许您为存储桶 (bucket_acl) 和新密钥 (acl) 传递预设 ACL 名称)。
    【解决方案3】:

    我认为您可能在错误的领域寻找您想要完成的任务。 ACL 界面允许您授予权限,但它们取决于拥有 Amazon S3 账户的用户。 @Alex Martelli 建议使用 private 罐头政策,我同意 - 这将阻止除您之外的任何帐户访问您的存储桶/密钥。

    为了强制用户只能通过您自己的应用程序下载,只需在generating the URL 时将一个小值传递给expires_in 参数。用户只能通过您的应用程序获得一个有效的下载链接,下载后该链接将失效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 2011-04-19
      • 2013-12-06
      • 1970-01-01
      相关资源
      最近更新 更多