0

我设置流分发的方式与设置下载分发的方式相同,我使用的是 osmf 播放器。由于某些原因,我无法播放我正在测试的 mp4 文件。所以我测试了一些我在我的发行版中使用 Restrict Viewer Access 的东西,我能够播放我的普通文件,只需添加文件名和带有签名 URL 的文件。但是,当我使用 Restricted Viewer Access 放回我的发行版时,只有签名的 url 我无法播放它们。我有一个身份附加到我的云端分发 E1XXXXXXXXXW,这是我的存储桶策略

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

但是当我限制“AWS”时我无法访问我的任何文件:“arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E1XXXXXXXXXW”

更新

所以我做了更多的测试,我创建了一个下载分发并保留了我的流分发,这是代码,

String signedUrlDownload = CloudFrontService.signUrl("http://" + distributionDomain + "/" + s3ObjectKey, // Resource
                                                                                                                    // URL or
                                                                                                                    // Path
                        keyPairId, // Certificate identifier, an active trusted
                                    // signer for the distribution
                        derPrivateKey, // DER Private key data
                        policy // Access control policy
                        );

                System.out.println(signedUrlDownload);

                signedUrl = CloudFrontService.signUrl(s3ObjectKey, // Resource
                                                                    // URL or
                                                                    // Path
                        keyPairId, // Certificate identifier, an active trusted
                                    // signer for the distribution
                        derPrivateKey, // DER Private key data
                        policy // Access control policy
                        );
                System.out.println(signedUrl);

因此,当我这样做时,我可以使用来自signedUrlDownload 的字符串下载我的文件。

所以我知道它是正确生成的。

因此,我继续进行测试并取消限制查看访问,并使用签名 URL 再次尝试,它似乎有效,但随后我开始手动更改 url,无论我做什么,它每次都有效。一切正常:

testfolder/myfile.m4a
testfolder/myfile.m4a?aaaaaa=xxxxxxxxx
testfolder/myfile.m4a??Policy=eyJTdGF0ZW1lbnQiOiBbeyJSZXNvdXJjZSI6IioiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjEzODA1OTg3NTN9LCJJcEFkZHJlc3MiOnsiQVdTOlNvdXJjZUlwIjoiMC4wLjAuMC8wIn0sIkRhdGVHcmVhdGVyVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxMzgwNTg3OTUzfX19XX0_&Signature=EzXX1h6iBFSb6Gx2LeFwOnFmvCl6flNMXYsEKwd7ZSSMWlcd-mtOXjBqvoP58M~Bj1kikbNSDaCX5j14TY6LjVtTXE7QgcGC~0c9~wxsDAnN8VYN8ItTDJySzwv8oLPrHc3O2hh6kGF7UH3T04qbhXplRdSgHZJePLHbfG70z6A_&Key-Pair-Id=APKAITVLU6K7B3YQB4HQ

所以这告诉我,当我限制访问时,我的策略无法正常工作,或者我将错误的值传递给我的播放器(我还在云端客户端诊断工具上进行了测试,http: //d1k5ny0m6d4zlj.cloudfront.net/diag/ CFStreamingDiag.html)。

这就是我在客户端上所做的基本上是传递以下流:

rtmp://myasdfad.cloudfront.com/cfx/st/mp4:testfolder/myfiles.m4p?Policy=eyJTdGF0ZW1lbnQiOiBbeyJSZXNvdXJjZSI6IioiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjEzODA1OTk5MjB9LCJJcEFkZHJlc3MiOnsiQVdTOlNvdXJjZUlwIjoiMC4wLjAuMC8wIn0sIkRhdGVHcmVhdGVyVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxMzgwNTg5MTIwfX19XX0_&Signature=jaw9KQybdckjvJBpJpeo-ukVEy9nerKsTpNAa3SJxrYkWzQG0CrF6hP1ok0iGW4wKvft4hhKzZhaO-OL7hVXE09ORzCxosDhYVPGvFoLKGNYH3mP4KXXxqlBxVcNeoUogRXqNI2SJW2J-TwQ-othwwRRas3pDaVfMddyrjBr2pU_&Key-Pair-Id=APKAITVLU6K7B3YQB4HQ
4

1 回答 1

0

我错了,最初的时间出了点问题,这就是为什么它有时会起作用,有时却不起作用。

于 2013-10-01T19:47:43.580 回答