首页 > 解决方案 > S3 存储桶策略仅使某些文件类型公开可读

问题描述

我们经营一家可以下载音乐的商店。

在存储桶中,我们有用特定数字表示每个曲调的文件夹,在文件夹中我们有各种文件格式。

预听文件以 mp3 格式存储。

目前,我们手动选择 mp3 文件并授予他们对任何人(世界)的读取权限。

但这也应该可以通过存储桶策略实现,即,每个上传的 mp3 都可以被任何人读取。

但是我们使用策略生成器创建的策略不起作用......

有任何想法吗?

{
    "Id": "Policy1541353430646",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1541353373980",
            "Action": [
                "s3:GetObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::examplebucket/*",
            "Condition": {
                "StringEquals": {
                    "s3:prefix": "mp3"
                }
            },
            "Principal": "*"
        }
    ]
}

标签: amazon-web-servicesamazon-s3

解决方案


Aprefix表示名称的开头,所以这不起作用。

相反,更改Resource以匹配您的结局:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:GetObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::examplebucket/*.mp3"
        }
    ]
}

这也适用于子目录中的对象。


推荐阅读