Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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 从Bucket策略中排除一个Amazon S3对象_Amazon Web Services_Amazon S3 - Fatal编程技术网

Amazon web services 从Bucket策略中排除一个Amazon S3对象

Amazon web services 从Bucket策略中排除一个Amazon S3对象,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我想取消S3存储桶中的文件(images/login\u logo.png)的公共访问权限我的测试存储桶 当前,此文件的权限设置如下所示: 如上图所示。它对每个人都没有公共访问权限 但我仍然可以从s3链接访问它 这种现象是由我的桶政策造成的吗 { "Version": "2012-10-17", "Id": "Policy1528702071704", "Statement": [ { "Sid": "Stmt1528702067

我想取消S3存储桶中的文件(
images/login\u logo.png
)的公共访问权限
我的测试存储桶

当前,此文件的权限设置如下所示:

如上图所示。它对每个人都没有公共访问权限

但我仍然可以从s3链接访问它

这种现象是由我的桶政策造成的吗

{
    "Version": "2012-10-17",
    "Id": "Policy1528702071704",
    "Statement": [
        {
            "Sid": "Stmt1528702067249",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-test-bucket/*"
        }
    ]
}
如果是这样的话,取消包含大约10000个文件的大型公共存储桶中单个文件的公共访问权限的最佳方法是什么


我无法将
公开
应用于大型存储桶,因为。

默认情况下,Amazon S3中的所有对象都是私有的

您可以通过Bucket策略(例如上面的策略)或通过在特定对象上添加权限来访问对象

如果这些方法中的任何一个授予对对象的访问权,则该对象是可访问的。因此,您的bucket策略授予对整个bucket的访问权这一事实意味着您的对象是公共的

为一个文件创建例外的唯一方法是添加拒绝策略,例如:

{
    "Version": "2012-10-17",
    "Id": "Policy1528702071704",
    "Statement": [
        {
            "Sid": "AllowALl",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-test-bucket/*"
        },
        {
            "Sid": "DenyOneObject",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-test-bucket/images/login_logo.png"
        }
    ]
}
拒绝总是覆盖允许,因此对象将保持私有


但是,要小心:此策略拒绝所有人(包括您!)的读取权限。您可能需要对其进行调整,以便仍然可以访问(可能通过使用
NotPrincipal
)。

是的,您的bucket策略允许每个人读取。感谢您的帮助:-)