我设置流分发的方式与设置下载分发的方式相同,我使用的是 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