为啥我的视频会被拒绝访问?

Posted

技术标签:

【中文标题】为啥我的视频会被拒绝访问?【英文标题】:Why am I getting AccessDenied with videos?为什么我的视频会被拒绝访问? 【发布时间】:2012-03-12 11:19:47 【问题描述】:

使用 AWS S3。我混合了视频和照片文件。所有这些都在它们各自的子目录中。所有文件都设置为私有。当我尝试访问视频文件时收到AccessDenied。其他文件都很好。

我试过没有用:


 "Id": "Policy1331547131417",
 "Statement": [
   
     "Sid": "Stmt1331546963174",
     "Action": [
       "*"
     ],
     "Effect": "Allow",
     "Resource": "arn:aws:s3:::actual_bucket_name_here/uploads/users/*/videos/*",
     "Principal": 
       "AWS": [
         "*"
       ]
     
   ,
   
     "Sid": "Stmt1331547083926",
     "Action": [
       "*"
     ],
     "Effect": "Allow",
     "Resource": "arn:aws:s3:::actual_bucket_name_here/uploads/users/*/photos/*",
     "Principal": 
       "AWS": [
         "*"
       ]
     
   ,
   
     "Sid": "Stmt1331547130024",
     "Action": [
       "*"
     ],
     "Effect": "Allow",
     "Resource": "arn:aws:s3:::actual_bucket_name_here/uploads/users/*/banners/*",
     "Principal": 
       "AWS": [
         "*"
       ]
     
   
 ]

对于视频、照片和横幅,我的存储桶策略是相同的。所有文件的 ACL 权限也相同。那么为什么我无法访问我的视频目录中的文件呢?

【问题讨论】:

您通过哪种方式“访问”您的视频文件,即使用哪个工具(javascript 视频播放器小部件等)? 【参考方案1】:

您实际上是如何尝试访问您的视频文件的,即通过哪个工具、服务、API?

使用的访问方法实际上可能也需要s3:ListBucket 操作的权限,例如JavaScript 视频播放器小部件可能会隐式查找相关视频的各种文件格式,以向您的用户呈现相应的选择 - 您需要注意 Operations on Buckets(例如 ListBucket)和 Operations on Objects 之间的区别(例如GetObject),请参阅我对Problems specifying a single bucket in a simple AWS user policy 的回答了解更多详情。

相应地扩展您的视频存储桶政策可能会解决此问题,例如(仅限政策片段):


 "Statement": [
   
     "Action": [
       "s3:ListBucket"
     ],
     "Effect": "Allow",
     "Resource": "arn:aws:s3:::actual_bucket_name_here/uploads/users/*/videos",
     "Principal": 
       "AWS": [
         "*"
       ]
     
   
 ]

请注意,此政策片段针对存储桶,其中您的仅针对其中的对象和两个片段都是必需的 - 如上所述,我对Problems specifying a single bucket in a simple AWS user policy 的回答中解释了这种细微差别。

【讨论】:

我正在尝试通过名为 JwPlayer 的网络播放器访问视频。在相同的视频目录(视频文件所在的位置)中,有缩略图。即使是这些缩略图也无法访问。对于大拇指,我使用的是 <img> 元素 附言。我将操作更改为"*"。请参阅我上面的编辑。还是同样的问题。拥有"Action" "*" 也应该让位于ListBucket 操作,不是吗? @ChristianFazzini:将操作更改为* 确实包括ListBucket 对于手头的资源确实,但是,您的策略片段地址对象 inside 存储桶,而 ListBucket 是存储桶本身所必需的,如 my other linked answer to a related problem 中更详细说明的那样 - 我已经更新了我的答案,以强调这里现在也是内联的。 【参考方案2】:

除了欧宝欧宝的回答。

以下是对我有用的方法。


    "Statement": [
        
            "Action": [
                "s3:GetObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::BUCKET_NAME/*",
            "Principal": 
                "AWS": [
                    "*"
                ]
            
        
    ]

【讨论】:

Shahrukh 这有帮助。 我很高兴 :) 听到

以上是关于为啥我的视频会被拒绝访问?的主要内容,如果未能解决你的问题,请参考以下文章

shutdown -s -m 为啥拒绝访问?

为啥使用 WMI 连接时出现访问被拒绝错误?

Django Rest:为啥访问被拒绝,尽管 AccessAny 被设置为权限?

为啥我在使用 adb 时拒绝访问数据文件夹?

为啥有些文件拒绝访问

为啥使用CMD命令中的find命令总是拒绝访问?