我是否可以在不使用IAM的情况下将第三方文件上传到S3存储桶?我想避免为AWS账户发送凭据的麻烦,但仍然利用S3 UI 。我只找到了一个或另一个的解决方案。
pre-signed url选项听起来不错,但似乎只能使用他们的SDK,我不打算告诉我的客户在他们的计算机上安装python来上传文件。
browser based upload要求我制作自己的前端html表单并在服务器上运行才能上传(lol)。
我是否可以简单地创建一个预先签名的网址,用户将用户导航到S3控制台并允许他们在到期时间之前上传?当然,公开制作桶也不是一种选择。为什么这么复杂!
答案 0 :(得分:4)
管理控制台
Amazon S3管理控制台仅显示与用户的AWS账户关联的S3存储桶。此外,无法限制显示的存储桶(即使用户无法访问它们,也会在帐户中显示所有存储桶)。
因此,您当然不希望授予他们访问AWS管理控制台的权限。
预签名网址
您的用户不要求AWS SDK使用预先签名的网址。相反,您必须运行您自己的系统,生成预签名的URL并将其提供给用户(例如通过网页或API调用)。
网页
您可以在Amazon S3上托管静态上传页面,但无法对用户进行身份验证。由于您只希望提供对特定人员的访问权限,因此您需要在后端运行一些代码来对其进行身份验证。
生成... 强>
您问:"我是否可以简单地创建一个预先签名的网址,用户将用户导航到S3控制台并允许他们在到期时间之前上传?"
是和否。是的,您可以生成预先签名的URL。但是,它不能与S3控制台一起使用(见上文)。
为什么这么复杂?
因为安全很重要。
那么,该怎么办?
一些选择:
底线:安全性非常重要。但是,您希望避免发送凭据的麻烦",您也不希望运行系统来执行身份验证检查。没有做一些工作就无法获得安全性,安全性差的成本将远高于实现良好安全性的成本。
答案 1 :(得分:0)
您可以部署一个 lambda 函数来调用“签名 URL”,然后使用该 URL 上传文件。这是一个例子