限制S3对象访问来自特定域的请求

alg*_*der 6 video amazon-s3 video-streaming amazon-web-services

我在S3中有视频文件和一个通过src属性加载文件的简单播放器.

我希望只能通过我的网站查看视频,而不是直接通过S3 URL查看(可能在页面的源代码中可以看到,也可以通过右键单击访问)

通过AWS文档查看,似乎我通过HTTP执行此操作的唯一方法是在查询中附加签名和到期日期,但这还不够.其他访问限制是指AWS用户.

我如何解决这个问题或实现这个服务器/客户端?

Off*_*mal 11

我认为您可以从管理界面设置的存储桶策略将执行此操作.语法有一些变化(您可以围绕拒绝允许条件构建策略)并过滤特定的文件名,但我更喜欢将媒体类型拆分为离散存储桶

{
"Version": "2008-10-17",
"Id": "Restrict based on HTTP referrer policy",
"Statement": [
    {
        "Sid": "1",
        "Effect": "Deny",
        "Principal": {
            "AWS": "*"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::mybucket/myprefix/*",
        "Condition": {
            "StringNotLike": {
                "aws:Referer": [
                    "http://www.mydomain.com/*",
                    "http://www.subdomain.mydomain.com/*"
                ]
            }
        }
    }
]
}
Run Code Online (Sandbox Code Playgroud)

  • 有没有办法为移动应用程序做同样的事情?即仅当来自我的 Android 移动应用程序的请求 - S3 应该允许 GET - 否则。 (2认同)