gpt4 book ai didi

amazon-s3 - S3 - 匿名上传 - key 前缀

转载 作者:行者123 更新时间:2023-12-02 19:40:25 25 4
gpt4 key购买 nike

我试图准确了解如何设置一个通常是私有(private)的但允许有限制的匿名上传的存储桶。具体标准为:

  • 存储桶大部分是私有(private)的,需要我的 key / secret 来添加/删除/更新/列出文件。
  • 有一个名为“incoming”的“目录”(即键前缀),允许匿名用户将内容上传到但不能上传到列表。
  • 存储桶中的所有内容都有一天的有效期。作为奖励,我希望“传入”目录有 30 分钟的过期时间,但如果不可能的话,整个存储桶的过期时间可以为一天。
  • 带有“传入”前缀的文件每个对象的大小将受到限制。
  • 我可能还想将带有“传入”前缀的对象限制为仅某些内容类型。

我的问题是:

  1. 简单地创建两个存储桶是不是更好?一份用于我传入的文件,一份用于我自己的个人处理和存储?
  2. 将文件上传到传入目录的代码是什么样的?理想情况下,我希望避免对 S3 库的依赖,而只使用 HTTP 调用。如果你能在 Ruby 中向我展示正确的方向,那就加分了。 :)

有效期似乎可以通过 S3 管理控制台设置,但最小有效期仅限 1 天。我可以在该字段中输入小数吗?权限似乎适用于整个存储桶,而不仅仅是一个前缀。这让我觉得我只需要两个桶。如果我保留一个存储桶,我认为我需要创建一项 IAM 策略并将其应用到该存储桶,但这超出了我对 S3 的有限知识,我想确保我不会在允许人们执行此操作的权限中留下漏洞超出了我的预期。

我发现了很多有关通过 HTTP 表单帖子匿名上传到 S3 的文档。我可以将其改编成代码,但我想知道,因为我在应用程序代码中(而不是 HTTP 表单帖子),是否有更简单的方法?

最佳答案

您所描述的内容可以在一个存储桶内实现。您可以通过存储桶策略允许匿名访问特定文件夹,请检查 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详细。

关于amazon-s3 - S3 - 匿名上传 - key 前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11916179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com