【问题标题】:AWS upload a file to a specific user using s3 bucketAWS 使用 s3 存储桶将文件上传到特定用户
【发布时间】:2017-11-10 13:10:09
【问题描述】:

您好 StackOverFlow 社区,

我没有代码可以显示这个问题,而且我缺少很多关于 AWS 的知识,所以我什至不知道要搜索或寻找什么。

这是我想要实现的目标

用例:

  • 用户注册
  • 转到他/她的帐户。
  • 上传新的个人资料图片。

传统网络服务器

您将上传带有用户 ID 的文件。 (来自先前的请求或会话)

这样您就可以为文件生成一个名称,将其存储在某处并在数据库中引用它。你怎么决定。最后新上传​​的图片,src 路径在 Db 中并链接到用户。

我试图在 AWS 上实现同样的目标。

这些是我认为我理解的事情。

S3 用于存储二进制/静态内容 AWs Cognito 用于对用户进行身份验证,(我在这里不太自信) 相当于会话。 Lambda 是一个只接受 JSON 的网络服务。

我想如何使用这些工具来达到预期的效果。

我没有可尝试的代码,如果有人能指出我的示例方向,我会很乐意尝试,如果我有任何进一步的问题,然后返回这里。 我只是不确定我是否有正确的想法,我是否走在正确的轨道上。我一直在搜索,但找不到可以满足该用例的示例。

提前致谢。

【问题讨论】:

  • 上传你的文件到s3,你想使用哪种后端类型?

标签: amazon-web-services amazon-s3 aws-lambda amazon-cognito


【解决方案1】:

您需要编写一个网络应用程序(就像使用传统的网络服务器一样)。然后,您的 Web 应用程序可以使用 AWS 服务。

用户注册

用户将连接到您的网络应用程序并执行您希望实施的任何注册过程。身份验证和用户存储可以使用 Amazon Cognito 或您自己的应用程序逻辑和数据库来完成。

转到他们的帐户

同样,这是一个在您的网络应用程序中导航的用户。

上传个人资料图片

他们将上传到您的网络应用程序。然后,您的应用程序可以将此图片存储在 Amazon S3 存储桶中。也可以将网页编码为 upload directly to Amazon S3,但您的 Web 应用程序必须在页面后面创建动态代码才能实现这一点。

一般cmets

上述所有任务都与非 AWS 解决方案完全相同。但是,您可以利用各种 AWS 服务来提供帮助,例如 Cognito 和 S3。

您可以更进一步,使用 AWS Lambda 和 AWS API Gateway 编写完全无服务器的应用程序,但这是更困难的一步。

【讨论】:

    【解决方案2】:

    您可以使用任何可用的身份验证机制,例如 Cognito 或您自己的身份验证机制,身份验证后您可以创建 S3 SignedUrls 并将文件直接上传到 s3 存储桶。

    这是一种将文件上传到 s3 的安全方式。

    S3 存储桶确实可以选择在实际文件名之前使用前缀,您可以使用它来分隔和维护与您的用户相关的文件。

    例如

    2017/06/8/<user_id>/ is a kind of prefix information will give you the time.
    

    考虑到您的后端系统可能包含 Java,以下是Generate a SignedUrls 将文件上传到 s3 的步骤。

    【讨论】:

      猜你喜欢
      • 2018-04-25
      • 2015-09-10
      • 2020-03-17
      • 2012-09-08
      • 2021-02-07
      • 2020-11-02
      • 2012-05-28
      • 2017-09-24
      • 1970-01-01
      相关资源
      最近更新 更多