2012-03-22 32 views
1

我正在开发一个网络应用程序,其中的视频文件存储在Amazon S3上,并且使用CloudFront是一项可随时打开和关闭的可选功能。在CloudFront中使用私有ACL?

我有一堆使用私有ACL设置的视频文件,我使用签名的URL来访问它们。这很好。

但是,我想在该存储桶上创建一个CloudFront RTMP分配,但很难以编程方式更新每次(可能超过300)对象的ACL(并且需要很长时间才能完成所有请求发生,因为你不能按批处理,对吧?)。

有没有办法要么:

  • 设置ACL散装的,在一个电话?
  • 设置存储桶访问策略,以便CloudFront可以读取存储桶中的任何私人文件?

我试图创建一个Origin访问身份,然后将其添加到存储区的访问控制策略,但这似乎不起作用。

最后,我还需要在将URL发送给视频播放器时对其进行签名吗?

这一切都需要在PHP中以编程方式完成,所以使用CloudBerry,这对我不利。

回答

0

这是开始了有益的指导,它告诉如何建立私人分布: http://www.bucketexplorer.com/documentation/cloudfront--how-to-create-private-streaming-distribution.html

您可以通过AWS API将ACL设置您的影片在一系列循环(我不认为这可以批量完成,即使BucketExplorer在队列中这样做)。您只需要在每个文件上设置一次ACL。您需要确保您授予访问您在Origin Access Identity中分发的规范用户的权限。通过这种方式,分配可以从S3原点访问受保护的文件。然后你需要建立一个密钥对和一个可信任的签名者。

每次有人访问视频时,您都需要对URL进行签名。有很多可用的脚本。这对于Ruby来说是一个有用的指南,但是你可以很容易地用PHP重写代码: http://r2d6.com/posts/1301220789-setting-up-private-streaming-with-cloudfront-and-ruby-on-rails