我在 S3 中有视频文件和一个通过 src 属性加载文件的简单播放器。
我希望视频只能通过我的网站查看,而不是直接通过 S3 URL(可能在页面的源代码中可见或通过右键单击访问)
浏览 AWS 文档,似乎我可以通过 HTTP 执行此操作的唯一方法是将签名和到期日期附加到查询中,但这还不够。其他访问限制涉及 AWS 用户。
我如何解决这个问题或实现这个服务器/客户端?
我在 S3 中有视频文件和一个通过 src 属性加载文件的简单播放器。
我希望视频只能通过我的网站查看,而不是直接通过 S3 URL(可能在页面的源代码中可见或通过右键单击访问)
浏览 AWS 文档,似乎我可以通过 HTTP 执行此操作的唯一方法是将签名和到期日期附加到查询中,但这还不够。其他访问限制涉及 AWS 用户。
我如何解决这个问题或实现这个服务器/客户端?
我认为存储桶策略(您可以从管理界面设置)可以做到这一点。语法有一些变化(例如,您可以围绕拒绝或允许条件构建策略)并过滤特定的文件名,但我更喜欢将媒体类型拆分为离散的存储桶
{
"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/*"
]
}
}
}
]
}