AWS使用s3存储桶

时间:2017-06-08 17:29:41

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

您好StackOverFlow社区,

我没有针对此问题展示的代码,我遗漏了很多关于AWS的知识,所以我甚至不知道要搜索或查找的内容。

这是我想要实现的目标

用例:

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

传统的Web服务器

您可以使用用户的ID上传文件。 (来自之前的请求或会话)

通过这种方式,您可以为文件生成名称,将其存储在某个位置并在数据库中引用该文件。你怎么决定。最后,新上传的图像,src路径在Db中并链接到用户。

我正在努力在AWS上实现同样的目标。

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

S3用于存储二进制/静态内容 AWs Cognito用于验证用户和(我在这里不太自信)相当于会话。 Lambda是一种只接受JSON的Web服务。

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

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

提前致谢。

2 个答案:

答案 0 :(得分:1)

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

用户注册

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

转到他们的帐户

同样,这是一个用户浏览您的网络应用程序

上传个人资料照片

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

一般性评论

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

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

答案 1 :(得分:0)

您可以使用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的步骤。