在CloudFront中使用私有ACL?

时间:2012-03-22 12:11:34

标签: php amazon-s3 acl amazon-cloudfront

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

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

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

有没有办法:

  • 在一次通话中批量设置ACL?
  • 设置存储桶访问策略,以便CloudFront可以读取存储桶中的所有私人文件吗?

我尝试创建一个Origin Access Identity,然后将其添加到存储桶的访问控制策略中,但这似乎不起作用。

最后,当我将这些网址发送到视频播放器时,我仍然需要对其进行签名吗?

这一切都需要在PHP中以编程方式完成,所以使用CloudBerry,不幸的是这对我没有帮助。

1 个答案:

答案 0 :(得分:0)

这是一个有用的入门指南,它讲述了如何设置私有分发: http://www.bucketexplorer.com/documentation/cloudfront--how-to-create-private-streaming-distribution.html

您可以通过AWS API在一系列视频中循环设置ACL(我不认为这可以批量完成,即使BucketExplorer在队列中执行此操作)。您只需要在每个文件上设置一次ACL。您需要确保授予对原始访问标识中的Canonical用户的访问权限以进行分发。这样,分发可以从S3源访问受保护的文件。然后,您需要设置密钥对和可信签名者。

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