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

标签 angular amazon-web-services amazon-s3 amazon-ec2 amazon-elastic-beanstalk

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

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

所以问题:

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

如果您知道如何实现,可以给我举个例子吗?谢谢:)

注意:我将 Parse JavaScript SDK、AWS S3、AWS EC2、Elastic beanstalk 和 Ionic 2 与 Angular 2 一起使用。

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

最佳答案

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

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

关于angular - 如何只允许特定用户访问 Amazon S3 上的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46442365/

相关文章:

Angular 5 连接 postgreSQL

Angular :在一个组件中使用相同的 <router-outlet> 两次

amazon-web-services - AWS Glue 不删除或弃用通过现已删除的 S3 数据生成的表

python - dynamodb boto put_item 类型为 Map "M"

amazon-web-services - 从AWS挂载数据集

bash - 上传时自动公开文件的 AWS S3 命令

javascript - 使用模型 [Angular] 的嵌套对象填充选择下拉列表

angular - 如何删除 Angular 4 中特定页面的 Global styles.css

amazon-web-services - AccessDenied 根据策略无效 : Policy Condition failed: ["starts-with", "$key", "2017/"]

amazon-s3 - S3 : get all files at a specific "directory" level