我正在尝试通过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网址不兼容。是否有节点包?
答案 0 :(得分:0)
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EF5LIV7LW3XE4"
},
几乎肯定不是你想要的。
"Principal":{
"CanonicalUser":"79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2bexample"
},
要指定原始访问标识,请在CloudFront控制台中的原始访问标识页上使用Amazon S3规范用户标识的值
在屏幕的左侧,在“私有内容”下,您需要的值位于“Origin Access Identity”下,您将找到该十六进制数字字符串。
答案 1 :(得分:0)
签名的网址是问题所在。我使用的节点包无法执行rtmp urls。一旦我切换到使用.net的官方sdk,我就可以播放我的内容了。该软件包已更新为与rtmp网址一起使用。