我是S3的新手,我想知道现实世界的Web应用程序通常如何与它交互,特别是如何处理用户访问权限。
比如说,我设计了一个基本的……
典型的架构是保留Amazon S3存储桶 的 完全私密 强> 。
当您的应用程序确定允许用户上载或下载文件时,它可以生成一个 的 预签名网址 强> 。这是一个限时URL,允许上传或下载对象。
上传时,也可以 创建POST策略 至 的 执行一些限制 强> 上传时,例如其长度,类型和存储位置。如果上传符合要求,则接受该文件。
你应该 的 维护一个数据库 强> 标识已上载的所有对象并将其映射到“所有者”,权限组,共享等。所有这些都是特定于应用程序的。稍后,当用户请求下载特定对象时,您的应用程序可以生成预先签名的URL,该URL允许用户下载该对象,即使它是私有对象。
始终让您的应用程序确定访问对象的权限。 的 不要将应用程序用户定义为IAM用户。 强>
如果存在直接的权限模型(例如,一个用户的所有文件都在S3存储桶中的一个路径/文件夹中),则可以使用 的 AWS安全令牌服务 强> 授予给定路径的List和Get权限。这对于可以直接调用Amazon S3 API以检索对象的移动应用程序非常有用。但是,它不适合基于Web的应用程序。