我试图准确理解如何设置一个通常是私有的存储桶,但允许匿名上传有限制 . 具体标准是:
-
存储桶主要是私有的,需要我的密钥/秘密来添加/删除/更新/列出文件 .
-
有一个名为"incoming"的"directory"(即密钥前缀),允许匿名用户上传内容但不上传 .
-
桶的所有内容都有一天到期 . 作为奖励,我希望"incoming"目录有30分钟到期,但如果不可能,那么整个存储桶的一天到期将会有效 .
-
具有"incoming"前缀的文件的每个对象的大小将受到限制 .
-
我可能还希望将具有"incoming"前缀的对象仅限制为某些内容类型 .
我的问题是:
-
简单地创建两个桶会更好吗?一个用于我的传入文件,一个用于我自己的个人处理和存储?
-
将文件上传到传入目录的代码是什么样的?理想情况下,我想避免依赖于S3库并只使用HTTP调用 . 如果你能在Ruby上向我展示正确的方向,那就是积分 . :)
到期似乎可通过S3管理控制台设置,但最短到期时间限制为1天 . 我可以在该字段中输入小数吗?权限似乎适用于整个存储桶而不仅仅是前缀 . 这让我觉得我只需要两个水桶 . 如果我保留一个存储桶,我认为我需要创建一个IAM策略并将其应用到存储桶中,但这超出了我对S3的有限知识,我想确保我不会在允许人们做的权限上留下漏洞比我想要他们更多 .
我找到了很多关于通过HTTP表单帖子匿名上传到S3的文档 . 我可以将其改编成代码,但我想知道,因为我在应用程序代码(而不是HTTP表单的帖子)是否有更简单的方法?
2 回答
您描述的内容可以在一个桶中实现 . 您可以通过存储桶策略允许匿名访问特定文件夹,请检查examples或使用AWS Policy Generator . 在你的情况下,它可能看起来像这样:
也可以使用简单的html表单匿名上传文件到您的存储桶:
基于S3浏览器的上传详细描述here .
我最近花了一些时间来搞清楚匿名上传到S3的来龙去脉,并且也遇到了这个问题 . 我在一段时间内写了一篇关于ME的解决方案:
https://gist.github.com/jareware/d7a817a08e9eae51a7ea
基本上你可以实现你想要的,除了经过验证的管理请求不起作用(或者至少我不知道解决方案) .
我知道这是一个较旧的问题,但只是在这里记录它,以防它帮助其他人 .