多个设备上的AWS S3

时间:2017-10-19 18:01:57

标签: android amazon-web-services amazon-s3

好的,所以我是AWS新手。我想制作一个可以存储少量用户数据的应用。 S3似乎是存储数据的方式。有没有办法用S3自动创建多个存储空间?让我们说我制作一个Android应用程序,人们将其安装在手机上。他们会自动获得S3存储空间吗?我怎么做?感谢

2 个答案:

答案 0 :(得分:1)

您可以使用文件夹为项目创建 S3 Bucket (具体取决于架构,可以是客户的架构)。通过这种方式,您将获得包含所有用户数据的s3服务实例。

答案 1 :(得分:0)

Amazon S3只是一个对象存储系统。你如何使用它完全取决于你。

如果您希望以每位用户为基础存储信息,那么除了 数据的存储方式之外,您还需要考虑安全性

如果用户可以访问某些私有信息(而不是任何人公开可见),那么您首先需要控制对数据的访问。

  • 对于公开信息,无需进行身份验证
  • 对于隐私信息,需要确定允许访问的内容,然后授予访问权限

您应向每个用户提供永久AWS凭证(访问密钥,密钥)。这些凭据仅适用于您的IT操作人员(您!)和您的应用程序。

这留下两个选择:

  • 您的中央服务器可以使用AWS Secure Token服务生成临时访问凭据,同时指定他们拥有的访问权限(例如,访问特定的S3存储桶和路径,或访问其他AWS服务,例如DynamoDB)。 OR
  • 为存储在Amazon S3中的特定对象生成预签名网址

根据您的使用情况,使用预签名网址似乎更合适。基本上,流程是:

  • 您的应用会向您的中央服务器发送请求,请求访问对象。
  • 服务器(或者更确切地说,您编写的在中央服务器上运行的应用程序)验证其身份并确认应允许他们访问存储在Amazon S3中的对象。
  • 然后,中央服务器会生成预签名网址,授予对Amazon S3中对象的限时访问权限,并将该网址发送回客户端应用
  • 然后,客户端应用程序使用该URL从Amazon S3检索数据

只有中央服务器上运行的应用才需要AWS凭据。然后,它使用这些凭据生成可由客户端应用程序使用的预签名URL。

顺便说一句,中央服务器上的应用程序实际上并不需要在服务器上运行。您可以使用 AWS API Gateway AWS Lambda 函数发送请求,这些函数可以执行逻辑并发回响应。这将是一个无服务器解决方案,但仍然采用集中逻辑。