如何在s3中存储不同用户的图像或文件

jam*_*mes 1 amazon-s3 amazon-web-services

我正在尝试建立一个存储不同用户数据(例如图像和文件)的网站。我知道如何在 s3 中存储内容,但如何存储不同用户的数据,以便他们是唯一可以访问它的人,并且他们可以访问其他人的数据?

Joh*_*ein 6

如果您对“用户”的定义意味着“应用程序用户”,那么您绝对不应该向他们提供 IAM 凭证(仅适用于您自己的员工)。

相反,您的应用程序应该执行以下操作:

  • 对用户进行身份验证以了解他们是谁(例如使用 Amazon Cognito 或身份存储)
  • 将 Amazon S3 中的所有对象设为私有
  • 当用户想要访问私有对象时,您的应用程序应该确定是否应该允许他们访问(基于您自己的数据库中的信息和业务逻辑)
  • 如果允许访问,应用程序应生成一个预签名 URL,该 URL 提供对私有对象的限时访问
  • 应用程序可以将预签名 URL 嵌入 HTML 页面中,例如标记<img>
  • 当 Amazon S3 收到对象请求时,它将验证URL,如果正确,将提供对对象的访问
  • 如果任何人在过期后尝试使用预签名 URL,则该链接将不起作用

只需几行代码即可创建预签名 URL,并且不需要回调 AWS。

请参阅:Amazon S3 预签名 URL