我需要允许用户访问S3上带有特定前缀(即用户名1)的文件,我不能更改该前缀,所以我不能只使用${cognito-identity.amazonaws.com:sub}
作为前缀。我的S3存储桶已经填充了特定前缀下的内容,因此用户登录到我的应用程序,然后被允许访问其中一个特定前缀
目前在AWS上设置为允许用户使用Firebase和开发人员身份验证身份以Cognito角色进行身份验证。每个用户帐户(电子邮件/密码)都有一个关联的S3前缀,他们必须能够访问该前缀。一些用户将共享此前缀(例如,两个用户访问S3 bucket/username1)。用户不应能够列出或访问除其关联前缀之外的任何其他前缀。
我不太确定实现这一点的最佳方法是什么——只使用Cognito角色,或者使用数据库和lambda函数+api端点、bucket/用户策略或ACL。有没有一种简单的方式让我错过了?
AWS非常新,任何帮助都将不胜感激!
tl;dr:如何只允许用户访问S3上具有特定前缀的文件,该前缀不是${cognito-identity.amazonaws.com:sub}
变量?
正如评论中所提到的,Amazon Cognito目前并不直接支持您的用例。您可以实现以下内容来实现您的目标:
- 使用Cognito对用户进行正常身份验证。Cognito标识将具有调用API网关端点的权限
- API(在Lambda中运行)使用Cognito标识id(在上下文中提供)来查找Cognito身份到自定义S3前缀的映射
- API使用STS生成访问该前缀的临时凭据,并将其返回给客户端
- 客户端使用这些凭证直接向S3发出请求