【发布时间】:2016-07-29 00:52:35
【问题描述】:
我需要允许用户使用我无法更改的特定前缀(即 username1)访问 S3 上的文件,因此我不能只使用 ${cognito-identity.amazonaws.com:sub} 作为前缀。我的 S3 存储桶已经填充了特定前缀下的内容 - 因此用户登录到我的应用程序,然后被允许访问这些特定前缀之一
目前在 AWS 上设置为允许用户使用 Firebase 和开发人员身份验证身份在 Cognito 角色中进行身份验证。每个用户帐户(电子邮件/密码)都有一个关联的 S3 前缀,他们必须能够访问该前缀。一些用户将共享此前缀(例如,两个用户访问 S3-bucket/username1)。用户不应该能够列出或访问除相关前缀之外的任何其他前缀。
我不太确定完成此任务的最佳方法是什么——仅使用 Cognito 角色或使用数据库和 lambda 函数 + api 端点、存储桶/用户策略或 ACL。有没有我想念的简单方法?
AWS 新手,非常感谢任何帮助!
tl;dr:如何只允许用户访问 S3 上具有特定前缀的文件,而不是 ${cognito-identity.amazonaws.com:sub} 变量?
【问题讨论】:
-
你是说你不能使用 cognito-identity 前缀,因为你需要它不改变?一旦您验证了 Cognito 身份,它就不会改变,除非您将其与另一个合并,这看起来不像您正在做的那样。如果这是您的问题,您应该可以安全地使用该前缀。
-
@JeffBailey:不,我需要使用与认知身份无关的完全不同的前缀——我已经在特定前缀下将数据下载并存储到 S3,我想使用认知来允许用户访问这些前缀之一
-
Amazon Cognito 目前不支持自定义值。我们从其他客户那里听到了这个要求,并将在未来的服务更新中考虑它。
-
@MarkMercurio:感谢您告诉我。我认为这意味着无法使用 Cognito 完成我需要的工作,因此我将制定另一个解决方案。再次感谢,我会留意的,以防你们将来添加它!
标签: amazon-web-services amazon-s3 aws-lambda amazon-cognito aws-api-gateway