S3存储桶策略如何使特定子文件夹公开,而其他所有内容均为私有?

41
我们目前有一个S3存储桶策略,使所有内容都公开可见。
目前我们有一个名为“bucket1”的存储桶,在里面有编号子文件夹,每个条目从01开始编号(例如01、02、03),并且内部始终有一个名为“128”的文件夹。
我们想做的是使“128”文件夹中的文件始终是公开的。
因此,我们需要允许“bucket1 / * / 128”可以被访问,而其他所有内容只能使用时间戳签名访问。
假设这是可能的,但不知道如何创建语句。
2个回答

82

我做到了!

我曾试过各种冗长的超思考方法来尝试实现这个目标,包括鲜为人知的“非资源”方法,而我所需要做的只是将默认的“允许全部”策略应用于我指定的子文件夹!

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::BUCKETNAME/*/128/*"
        }
    ]
}

注意:已编辑资源名称。


哪一部分是针对特定子文件夹的?/128/ - Jin Kwon
@JinKwon 是的,完全正确。 - RyanQuey

5

现在似乎被阻止了...

该存储桶具有公共访问权限,您已向此存储桶提供了公共访问权限。我们强烈建议您永远不要向 S3 存储桶授予任何形式的公共访问权限。


那只是一个警告,物品仍然像警告所示的那样是公开的。 - csvan
1
有趣的是,这个本应该作为标记答案下的评论的所谓答案因为其他人遇到了类似的问题而得到了赞同。 - SmartE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接