amazon-web-services - 从存储桶策略中排除一个 Amazon S3 对象

标签 amazon-web-services amazon-s3

我想取消我的 S3 存储桶 my-test-bucket 内的文件 (images/login_logo.png) 的公共(public)访问权限。

目前该文件的权限设置如下:

enter image description here

如上图所示。它不适合所有人公开访问。

但我仍然可以通过 s3 链接访问它。

这个现象是我的存储桶策略造成的吗?

{
    "Version": "2012-10-17",
    "Id": "Policy1528702071704",
    "Statement": [
        {
            "Sid": "Stmt1528702067249",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-test-bucket/*"
        }
    ]
}

如果是这样,在包含大约 10,000 个文件的大型公共(public)存储桶中取消单个文件的公共(public)访问权限的最佳方法是什么?

由于 this issue,我无法将 make public 应用于大存储桶.

最佳答案

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

您可以通过存储桶策略(例如上面的存储桶策略)或通过添加特定对象的权限来使对象可访问。

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

对一个文件进行异常(exception)处理的唯一方法是添加拒绝策略,例如:

{
    "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"
        }
    ]
}

拒绝始终会覆盖允许,因此该对象将保持私有(private)。

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

关于amazon-web-services - 从存储桶策略中排除一个 Amazon S3 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50792869/

相关文章:

amazon-s3 - 有没有办法设置亚马逊AWS计费限额?

python - AWS Lambda 函数在 S3 上传时触发 SNS 主题

amazon-web-services - 是否可以升级和/或移动 Amazon RDS 预留实例?

hadoop - 使用 hadoop 从 S3 'requester pay' 存储桶下载数据时出错

python - 使用 Boto3 嵌套键获取 S3 中文件的完整路径

php - 在 S3 中检索对象用户元数据 - aws sdk v3 php

javascript - Angular 如何使用 ng-click 从 S3 Amazon 下载文件

amazon-web-services - ECS服务持续重启时触发云观察报警

linux - Laravel 没有从 env 文件中获取默认的 DB_CONNECTION 值

amazon - 使用 Uploadify 直接发布到 Amazon S3