Amazon S3 Bucket Policy阻止下载?

时间:2017-10-12 05:27:39

标签: amazon-web-services amazon-s3

我建立了一个电子学习网站,并使用Amazon S3存储文件。

我想:

  

•网站访问者可以观看视频•他们无法下载   视频**

我应该在存储分区策略中添加哪个策略,先生?

我使用了以下政策,但这会将视频保密,因此他们都无法观看和下载。

{
"Version": "2012-10-17",
"Id": "Policy1459891655092",
"Statement": [
    {
        "Sid": "Stmt1459891443631",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::mybucketname/public/*"
    }
]

}

2 个答案:

答案 0 :(得分:4)

S3可以提供受保护内容的流式传输。这是一个非常常见的请求。

首先,您使用Amazon Elastic Transcoder将视频转码为HLS(HTTP直播流)。然后,用户使用支持连接到Web服务器的HLS的视频播放器或浏览器。存储在S3上的内容是加密的。 HLS将视频分成多个分辨率的许多小段。视频在播放期间会根据诸如Internet速度,设备分辨率等变化等因素动态变化.CloudFront不需要提供HLS视频。

了解亚马逊的Elastic Transcoder和Apple的HLS查看器,让您入门。甚至Microsoft Edge也支持HLS。

答案 1 :(得分:1)

您无法使用S3策略阻止下载,因为用户必须下载才能查看。 S3也不支持流媒体。但您可以与AWS Cloudfront结合使用来流式传输S3视频。您只需设置允许AWS Cloudfront获取S3视频的权限,然后Cloudfront将在边缘缓存它们。用户可以通过Cloudfront URL流式传输视频。

Read this for more detail

  

第一个选项非常容易实现,并且仅受到支持   关于每个移动设备和桌面。你需要做的就是放   您在S3存储桶中的内容并创建一个CloudFront分配   指向桶。您用户的视频播放器将使用CloudFront   用于请求视频的URL(可作为分发的一部分访问)   文件。该请求将被引导至最佳边缘位置,基于   用户的位置。 CloudFront将从其缓存中提供视频,   如果尚未缓存,则从S3存储桶中获取它。这个   选项有几个缺点。它会使您的使用效率低下   观众的带宽。如果用户不打扰看整个   视频,内容永远不会被看到仍然下载。跳过前面   或快进还需要下载可能的内容   永远不会被人看见。