我实际上要在这里偷偷提出两个问题:
1) 我试图弄清楚是否有一种方法可以让 Cognito 用户管理对自己文件夹的访问。假设用户 Dave 想与用户 Anne 共享他 protected 文件。我该如何去做呢?
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}/*"
]
}
]
}
最佳答案
您的用例超出了应该通过存储桶策略实现的范围。
尝试向存储桶策略添加异常(exception)和特殊情况将使规则管理变得复杂,并且会开始达到限制 - S3 支持高达 20 kb 的存储桶策略。
一旦您制定了有关用户、对象、路径等的特定规则,那么您应该真正通过中央应用程序进行管理,然后中央应用程序通过预签名 URL 授予对对象的访问权限 是根据需要即时生成的。
Amazon S3 是一种高度可扩展、可靠的存储系统 - 但不要指望它具有您需要的所有功能。这就是需要您的应用代码的地方。
关于amazon-s3 - 让 Cognito 用户管理对 "own"S3 文件夹的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46874173/