如何仅允许特定用户访问Amazon S3上的内容

Ant*_*oni 3 amazon-s3 amazon-ec2 amazon-web-services amazon-elastic-beanstalk angular

我是Amazon S3的新手.我需要一些S3存储解决方案的帮助.这是我的问题.

我在Amazon S3中创建了一个存储桶.现在每个人都可以访问我的存储桶URL(例如https://BUCKET_NAME.s3.amazonaws.com),他们可以看到存储桶中的所有文件.我只希望我的移动应用用户能够查看/查看/下载存储桶中的文件.但是,如果我阻止文件/将存储桶中的文件设置为私有,我的移动应用程序用户将无法查看他/她的文件.

所以问题是:

  • 有没有办法保护对AWS S3的访问?或者我如何只允许特定用户访问Amazon S3上的内容?它是服务器端身份验证还是其他什么?

如果你知道怎么做,你能告诉我一个例子吗?谢谢 :)

注意:我使用Parse JavaScript SDK,AWS S3,AWS EC2,Elastic beanstalk和Ionic 2与Angular 2.

如果您认为我错过了任何细节,请告诉我,以便我可以添加:)

Ash*_*han 7

有多个选项可用于保护特定用户的访问权限.

  • 如果您使用的是AWS Cognito,则可以使用AWS JavaScript SDK通过IAM策略授予对S3中特定存储桶和对象的访问权限,并在使用AWS Cognito(或通过Cognito联合)通过Angular应用程序进行身份验证后临时访问您收到的凭据.
  • 您还可以使用AWS CloudFront 签名URL签名Cookie来保护对S3对象的访问.要使用后端端点(对于经过身份验证的用户)访问内容,您可以生成签名URL或签名Cookie,Angular应用程序将使用它来通过CloudFront访问S3.
  • 另一种选择是从服务器端访问S3并返回文件(与其他方法相比,这将大大增加服务器的开销,因此除非您有特定的方案在检索之前动态修改文件或内容,否则不建议这样做)
  • 您还可以使用AWS API Gateway作为S3的代理来提供文件.这里有10MB的文件大小限制,因为API网关最多可以传输10MB的文件.