代码之家  ›  专栏  ›  技术社区  ›  2famous.TV

让Cognito用户管理对“自己的”S3文件夹的访问

  •  1
  • 2famous.TV  · 技术社区  · 7 年前

    实际上,我要在这里提出两个问题:

    我试图找出是否有一种方法可以让Cognito用户管理对自己文件夹的访问。假设用户Dave希望与用户Anne共享其受保护的文件。我该怎么做?

    2) 一组用户如何访问bucket中相同的受限文件夹?在我的应用程序中,用户很少单独工作,他们会将文件上传到他们所属的组织。

    以下是我到目前为止得到的政策,但它不适合我。有没有一种方法可以直接在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}/*"
                ]
            }
        ]
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   John Rotenstein    7 年前

    您的用例超出了应该通过Bucket策略实现的范围。

    尝试将异常和特殊情况添加到bucket策略中会使规则管理变得复杂,并将开始达到极限-- S3支持高达20KB的存储桶策略 .

    一旦你了解了关于用户、对象、路径等的特定规则,你就可以 真的应该通过你的中央应用程序来管理它 ,然后通过 预签名URL 根据需要动态生成。

    Amazon S3是一个高度可扩展、可靠的存储系统,但不要期望它具备您需要的所有功能。这就是需要你的应用程序代码的地方。