繁体   English   中英

允许使用 Cognito 访问 S3 上的自定义前缀

[英]Allow access to custom prefix on S3 with Cognito

我需要允许用户使用我无法更改的特定前缀(即 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}变量?

如评论中所述,Amazon Cognito 目前不直接支持您的用例。 您可以实施类似以下内容来实现您的目标:

  1. 使用 Cognito 像往常一样对您的用户进行身份验证。 Cognito 身份将有权调用 API 网关端点。
  2. 您的 API(在 Lambda 中运行)使用 Cognito 身份 ID(在上下文中提供)来查找 Cognito 身份到您的自定义 S3 前缀的映射。
  3. 您的 API 使用 STS 生成临时凭证以访问该前缀,并将它们返回给客户端。
  4. 客户端使用这些凭据直接向 S3 发出请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM