【发布时间】:2012-08-08 14:42:01
【问题描述】:
我正在尝试准确了解如何设置通常是私有但允许匿名上传但有限制的存储桶。具体标准是:
- 存储桶大部分是私有的,需要我的密钥/秘密来添加/删除/更新/列出文件。
- 有一个名为“incoming”的“目录”(即密钥前缀),允许匿名用户将内容上传到列表,但不能上传。
- 存储桶的所有内容都有一天的有效期。作为奖励,我希望“传入”目录的有效期为 30 分钟,但如果不可能,则整个存储桶的有效期为一天。
- 带有“incoming”前缀的文件在每个对象的大小上会受到限制。
- 我可能还想将带有“传入”前缀的对象限制为仅某些内容类型。
我的问题是:
- 最好只创建两个存储桶。一份用于我传入的文件,一份用于我自己的个人处理和存储?
- 将文件上传到传入目录的代码是什么样的。理想情况下,我想避免依赖 S3 库,只使用 HTTP 调用。如果您可以在 Ruby 中向我展示正确的方向,则可以加分。 :)
过期似乎可以通过 S3 管理控制台设置,但最短的过期时间仅限于 1 天。我可以在该字段中输入小数吗?权限似乎适用于整个存储桶,而不仅仅是前缀。这让我觉得我只需要两个桶。如果我保留一个存储桶,我认为我需要创建一个 IAM 策略并将其应用于存储桶,但这超出了我对 S3 的有限知识,我想确保我不会在允许人们这样做的权限中留下漏洞比我想要的更多。
我找到了很多关于通过 HTTP 表单发布匿名上传到 S3 的文档。我可以将它改编成代码,但我想知道,因为我在应用程序代码中(而不是 HTTP 表单帖子),有没有更简单的方法?
【问题讨论】:
-
对于2,你有没有考虑用carrierwave的回形针配置s3?
-
感谢您的建议。是的,我以前使用过这些,尽管我认为它们通常都在经过身份验证的基础上运行(不是匿名的)。可能有一些附加组件可以匿名,但我真的只是希望,因为 S3 是一个 REST 接口,我允许匿名上传,一个没有任何第三方库的简单 HTTP 请求可以解决问题。但是,尝试解析 Amazon 文档比我希望的要麻烦得多,如果有人能指出我正确的方向,我会很高兴。
-
不太明白。匿名是指您希望能够在不提供 s3 凭据的情况下上传文件吗?我认为这是不可能的。
-
是的。我想设置权限,以便“每个人”都可以写入,但只能写入特定的前缀。我已经通过使用一些特殊隐藏字段的 HTML 表单帖子看到了在哪里可以做到这一点。但是我不知道如果我不是通过 HTML 表单来做,而是能够发出一个 HTTP 请求,是否有更简单的事情。
标签: amazon-s3 amazon-web-services http-post acl anonymous