我实际上要在这里偷偷提出两个问题:
1)我正在尝试弄清楚是否有办法让 Cognito 用户管理对自己文件夹的访问权限。假设用户 Dave 想要与用户 Anne 共享他受保护的文件。我将如何做到这一点?
2) 一组用户如何访问存储桶中的相同受限文件夹?在我的应用程序中,用户很少单独工作,他们将文件上传到他们所属的组织。
以下是我到目前为止得到的政策,但它不适合我。有没有办法直接在 S3 中执行我想执行的操作,还是必须执行 Lambda/Dynamo/S3 设置?
我是否需要为应用中的每个组织和用户提供唯一的策略才能实现此目的?这不是有点矫枉过正吗?
我将不胜感激我能在这个话题上得到的任何帮助。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::BUCKETNAME/user/${cognito-identity.amazonaws.com:sub}",
"arn:aws:s3:::BUCKETNAME/user/${cognito-identity.amazonaws.com:sub}/*"
]
}
]
}
您的使用案例超出了应通过存储桶策略实施的范围。
尝试向存储桶策略添加例外和特殊情况将使规则管理变得复杂,并且会开始达到限制 - S3 支持高达 20 KB 的存储桶策略。
一旦您进入有关用户、对象、路径等的特定规则,那么您实际上应该通过您的中央应用程序来管理它,然后通过根据需要动态生成的预签名 URL 授予对对象的访问权限。
Amazon S3 是一个高度可扩展、可靠的存储系统,但不要指望它能满足您需要的所有功能。这就是需要应用代码的地方。