如何从Cloudfront提供受保护的视频

时间:2013-12-09 17:18:07

标签: video amazon-web-services amazon-s3 rtmp amazon-cloudfront

我正在尝试通过RTMP提供私有视频内容,只能通过签名网址

访问

以下是我的CloudFront分配设置:

Origin Domain Name : ct.recorder.s3.amazonaws.com   

Restrict Bucket Access : Yes

Origin Access Identity : Use an Existing Identity

Your Identities : CT rtmp videos

Grant Read Permissions on Bucket : No, I Will Update Permissions

Restrict Viewer Access (Use Signed URLs) : Yes

Trusted Signers : Self

Distribution State : Enabled

当我尝试签名的云端网址时,它将无法播放。

我错过了什么吗?

我正在使用SDK以编程方式上传视频文件,因此我可以控制我可以设置的权限。我是否必须制作CannedACL或其他东西?

在存储桶级别,我制作了一个策略文件:

{
    "Version": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EF5LIV7LW3XE4"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::ct.recorder/*"
        }
    ]
}

然而它仍然无效。我仍然无法访问我的视频

我尝试了rtmpdump,但NetStream.Failed

失败了

编辑:

我获得了免费版的Cloudberry for S3,我进入了存储桶和存储桶中的对象并设置了权限,以便Origin access identity可以read

结果是CloudFront Origin Access Identity EF5LIV7LW3XE4对存储桶的对象具有Open/download权限,并且对存储桶本身具有list权限。

但这没有帮助。 rtmpdump和玩家仍然会返回错误。

编辑:

我已尝试编辑该政策,但当我将其更改为Michael建议,保存并再次查看时,我的政策中没有我的修改。

编辑:

并不是我无法编辑策略,而是AWS将“CanonicalUser”自动更正为“AWS”,并正确设置值。

所以现在我很困惑。文档说我需要“CanonicalUser”,但AWS不会让我这样做。

编辑:

在获得official confirmation from the forums确实自动更正后,我会假设我的S3存储桶策略是正确的,并且问题出在其他地方。也许我正在使用库来签署我的密钥。

编辑:

我尝试使用我的私钥和access ID使用Cloudberry Explorer创建签名的云端网址,但该网址不适用于我的播放器或rtmpdump

编辑:

我得到确认,我用来创建签名网址的节点包与rtmp网址不兼容。是否有节点包?

2 个答案:

答案 0 :(得分:0)

"Principal": {
     "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EF5LIV7LW3XE4"
},

几乎肯定不是你想要的。

"Principal":{
  "CanonicalUser":"79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2bexample"
},
  

要指定原始访问标识,请在CloudFront控制台中的原始访问标识上使用Amazon S3规范用户标识的值

     

- http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html#private-content-granting-permissions-to-oai(强调补充)

在屏幕的左侧,在“私有内容”下,您需要的值位于“Origin Access Identity”下,您将找到该十六进制数字字符串。

答案 1 :(得分:0)

签名的网址是问题所在。我使用的节点包无法执行rtmp urls。一旦我切换到使用.net的官方sdk,我就可以播放我的内容了。该软件包已更新为与rtmp网址一起使用。