【问题标题】:how to make my users access to their own bucket in my application如何让我的用户在我的应用程序中访问他们自己的存储桶
【发布时间】:2020-10-18 20:31:46
【问题描述】:

我正在考虑让我的用户访问他们自己的 s3 存储桶,以便他们可以在我的网络应用程序中加载和显示他们的图像。

用户来到我的网站 -> 点击 UI -> 登录和授权 -> 选择图片 -> 显示它。

这种情况可能吗?如何? 我的前端使用 react,后端使用 node.js..

我是否使用任何文件传输协议?或者如何从 s3 存储桶中获取图像?

【问题讨论】:

    标签: node.js reactjs amazon-web-services amazon-s3 amazon-ec2


    【解决方案1】:

    如果您在前端使用 JavaScript 并在后端使用节点 js,则需要使用 AWS JS SDKAWS.S3 类来执行所有交互。

    您应该考虑使用用户名前缀存储资产,以便更轻松地列出对象(而不是您将存储在 username/image.jpgimage.jpg)。

    要上传,您可以使用PutObject 函数,并使用ListObjectsV2 函数列出传入前缀。

    您可以通过使用Cognito User Pool 来管理身份验证来进一步增强此功能。您可以通过在 IAM 策略中使用 ${cognito-identity.amazonaws.com:sub} 变量来限制对 S3 中用户特定前缀的访问,从而增强安全性。

    【讨论】:

    • 所以我在想,当用户访问我的网站时,他们首先需要注册或登录,然后,一旦他登录,他就可以访问自己的 s3 存储桶。我不希望他们将任何内容上传到我的存储桶中。所以他们必须将他们的图像上传到他们自己的存储桶中。这可能与 cognito 吗?还是用户需要在我的存储桶中上传?哪种方式可行?
    • 嗯,您不能在 cognito 的权限中执行此操作,因为值的格式会显示为 us-east-1:12345678-1234-1234-1234-123456790ab。在这种情况下,您的应用需要在实例上使用 IAM 角色并在应用后端(在您的 NodeJS 中)管理存储桶名称。
    • 就像人们从谷歌云存储加载他们的图像一样。我想知道是否可以使用 s3 存储桶。
    • 对,我没有使用谷歌云存储的经验,但是对于 S3,人们倾向于为应用程序创建一个 S3 存储桶,然后使用前缀来分隔每个用户名 :)
    【解决方案2】:

    您可以在身份验证部分使用 AWS Cognito。

    存档所需内容的最简单方法是使用 AWS amplify。 See here 关注 this guide 获取 node.js 的分步说明

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      相关资源
      最近更新 更多