Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 限制S3子文件夹级别关于私有和公共的存储桶策略_Amazon Web Services_Amazon S3 - Fatal编程技术网

Amazon web services 限制S3子文件夹级别关于私有和公共的存储桶策略

Amazon web services 限制S3子文件夹级别关于私有和公共的存储桶策略,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我们有很多信息,我们可以通过存储桶级别将存储桶公开和私有。但我很好奇,我们可以将bucket策略设置为文件夹级别,甚至子文件夹。下面是我当前S3存储桶中的文件夹结构 companies/aa-company/public-folder companies/aa-company/private-folder companies/bb-company/public-folder companies/bb-company/private-folder 我想知道的是,我想在bucket策略中对公用文件

我们有很多信息,我们可以通过存储桶级别将存储桶公开和私有。但我很好奇,我们可以将bucket策略设置为文件夹级别,甚至子文件夹。下面是我当前S3存储桶中的文件夹结构

companies/aa-company/public-folder
companies/aa-company/private-folder
companies/bb-company/public-folder
companies/bb-company/private-folder

我想知道的是,我想在bucket策略中对公用文件夹进行公共读取访问。有可能吗?

是的,绝对有可能。您可以使用来实现这一点

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3:::<bucket-name>/companies/aa-company/public-folder*",
                "arn:aws:s3:::<bucket-name>/companies/bb-company/public-folder*"
            ]
        }
    ]
}
{
“版本”:“2012-10-17”,
“声明”:[
{
“效果”:“允许”,
“委托人”:“*”,
“操作”:“s3:GetObject”,
“资源”:[
“arn:aws:s3::/companys/aa company/public folder*”,
“arn:aws:s3::/companys/bb company/public folder*”
]
}
]
}
是的,您可以通过以下方式:

您可以将通配符用作资源ARN的一部分。您可以在任何ARN段(由冒号分隔的部分)内使用通配符(*和?)。星号(*)表示零个或多个字符的任意组合,问号(?)表示任意单个字符。您可以使用多个*或?每个段中包含个字符,但通配符不能跨越段

示例策略可以如下所示(基于):

您还需要禁用bucket上的block公共访问设置

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicRead",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::test-bucket-342-d/*/public-folder/*"
        }
    ]
}