我试图准确理解如何设置一个通常是私有的存储桶,但允许匿名上传有限制。具体标准是:
我的问题是:
过期似乎可通过S3管理控制台设置,但最短到期时间限制为1天。我可以在该字段中输入小数吗?权限似乎适用于整个存储桶而不仅仅是前缀。这让我觉得我只需要两个水桶。如果我保留一个存储桶,我认为我需要创建一个IAM策略并将其应用到存储桶中,但这超出了我对S3的有限知识,我想确保我不会在允许人员的权限中留下漏洞比我想要的更多。
我找到了很多关于通过HTTP表单帖子匿名上传到S3的文档。我可以将其改编成代码,但我想知道,因为我在应用程序代码(而不是HTTP表单帖子)是否有更简单的方法?
答案 0 :(得分:15)
您描述的内容可以在一个存储桶中实现。您可以通过存储桶策略允许匿名访问特定文件夹,选中examples或使用AWS Policy Generator。在你的情况下,它看起来像这样:
{
"Version": "2008-10-17",
"Id": "Policy1346097257207",
"Statement": [
{
"Sid": "Allow anonymous upload to /incoming",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::[your_bucket]/incoming/*"
}
]
}
也可以使用简单的html表单匿名上传文件到您的存储桶:
<form action="http://[your_bucket].s3.amazonaws.com/" method="post" enctype="multipart/form-data">
<input type="hidden" name="acl" value="public-read" />
Name: <input type="text" name="key" value="incoming/[filename]" /><br/>
File: <input type="file" name="file" /> <br />
<input type="submit" name="submit" value="Upload" />
</form>
基于S3浏览器的上传详细描述了here。
答案 1 :(得分:3)
我最近花了一些时间搞清楚匿名上传到S3的细节,并且也遇到了这个问题。我在一段时间内写了一篇关于ME的解决方案:
https://gist.github.com/jareware/d7a817a08e9eae51a7ea
基本上,您可以实现您想要的目标,但经过身份验证的管理请求不会起作用(或者至少我不知道解决方案)。
我知道这是一个较旧的问题,但只是在这里记录它,以防它帮助其他人。