S3:如何授予 public 对现有存储桶文件的写入权限,但不授予 putObject 权限(私有 CRUD,Public Read/Update)

S3: How to grant public write access to an existing bucket file, but not the putObject permission (Private CRUD, Public Read/Update)

所以,我想要一个服务,它可以在具有特定 link 的 S3 存储桶中创建文件,然后允许任何具有 link 的人写入文件并读取文件它。

但是创建文件不能是 public 权限,只有 editing/reading 已经存在的文件,前提是您有 link.

存储桶策略是否可行?基本上允许一项服务 CRUD 权限但具有 public RU 权限。

你需要自己写这样的服务。

首先,请注意 Amazon S3 中的 'Create' 和 'Update' 没有区别——两者都使用 PutObject 操作.对象不能 'edited' -- 它们只能被覆盖。

您可以通过使用 public 带有混淆 URLs 的对象来实现您的阅读目标——只要有人知道 URL, 他们可以访问该对象。这不是一种完美的安全手段,但这是您的选择。

您不想授予 public 在存储桶中创建对象的权限,否则任何人都可以将任何文件上传到存储桶(例如受版权保护的电影) 并且您将支付存储和数据传输的费用。

允许上传的更安全的方法是让用户对您的后端进行身份验证,然后您的后端可以生成一个 Amazon S3 pre-已签名 URL 可用于上传到存储桶。此预签名 URL 可以指定限制,例如文件大小和上传的文件名。

详情请见:Uploading objects using presigned URLs - Amazon Simple Storage Service