我试图准确了解如何设置一个通常是私有的但允许匿名上传但有限制的存储桶。具体标准是:
- 存储桶主要是私有的,需要我的密钥/秘密来添加/删除/更新/列出文件。
- 有一个名为“incoming”的“目录”(即键前缀),允许匿名用户上传内容到列表,但不能上传。
- 存储桶对所有内容都有一天的有效期。作为奖励,我希望“传入”目录有 30 分钟的到期时间,但如果这不可能,则整个存储桶的到期时间为一天。
- 带有“传入”前缀的文件将在每个对象的大小上受到限制。
- 我可能还想将带有“传入”前缀的对象限制为仅某些内容类型。
我的问题是:
- 简单地创建两个桶会更好吗?一份用于我的传入文件,一份用于我自己的个人处理和存储?
- 将文件上传到传入目录的代码是什么样的。理想情况下,我想避免依赖 S3 库而只使用 HTTP 调用。如果您可以在 Ruby 中向我展示正确的方向,则可以加分。:)
过期似乎可以通过 S3 管理控制台设置,但最短的过期时间仅限于 1 天。我可以在该字段中输入小数吗?权限似乎适用于整个存储桶,而不仅仅是前缀。这让我觉得我只需要两个桶。如果我保留一个存储桶,我认为我需要创建一个 IAM 策略并将其应用于存储桶,但这超出了我对 S3 的有限了解,我想确保我不会在允许人们执行的权限中留下漏洞比我想要的更多。
我发现了很多关于通过 HTTP 表单发布匿名上传到 S3 的文档。我可以将其改编成代码,但我想知道,因为我在应用程序代码中(而不是 HTTP 表单帖子),有没有更简单的方法?