Zencoder存储桶策略与域名级隐私存储桶策略不生效问题咨询
问题根因
- 目标桶权限配置不匹配:错误提示写入目标桶为
zencoder123,但你当前提供的策略仅针对newuploads12桶配置了Zencoder权限,zencoder123桶未授予对应写入权限是触发报错的直接原因。 - 规则冲突导致访问拦截:域名级限制规则仅允许携带
https://www.vlogmo.com/*Referer头的请求调用s3:GetObject接口,但Zencoder写入文件后发起的校验请求为服务端调用,不会携带对应Referer头,即使单独配置了Zencoder的读权限,未豁免Referer校验的情况下仍会触发隐式拒绝。 - 重复Statement ID导致解析异常:两条Zencoder相关权限使用了相同的Sid
Stmt1295042087538,部分AWS区域的策略解析器会对重复Sid的规则进行合并或覆盖,导致权限丢失。 - 对象所有权配置冲突:若存储桶开启了「强制桶拥有者所有权」规则,Zencoder写入时未携带
bucket-owner-full-controlACL的情况下,写入请求会被直接拦截。
解决方案
- 修正Zencoder任务的输出桶配置,确保和配置策略的桶
newuploads12一致;若确实需要写入到zencoder123桶,需给zencoder123桶也添加相同的Zencoder权限规则。 - 使用修正后的存储桶策略,修改重复Sid的同时豁免Zencoder主体的Referer校验:
{ "Version": "2012-10-17", "Id": "ZencoderBucketPolicy", "Statement": [ { "Sid": "Stmt1295042087538-ObjectAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::395540211253:root" }, "Action": [ "s3:GetObjectAcl", "s3:GetObject", "s3:PutObjectAcl", "s3:PutObject", "s3:ListMultipartUploadParts" ], "Resource": "arn:aws:s3:::newuploads12/*" }, { "Sid": "Stmt1295042087538-BucketAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::395540211253:root" }, "Action": [ "s3:ListBucketMultipartUploads", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::newuploads12" }, { "Sid": "AllowGetFromVlogmo", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::newuploads12/*", "Condition": { "StringLike": { "aws:Referer": "https://www.vlogmo.com/*" }, "StringNotEquals": { "aws:PrincipalArn": "arn:aws:iam::395540211253:root" } } } ] }
- 在Zencoder任务的输出参数中添加
"acl": "bucket-owner-full-control",确保写入对象的所有权归属存储桶所属账号,避免权限冲突。 - 若存储桶开启了KMS默认加密,需在KMS密钥策略中同步授予Zencoder的ARN加密、解密权限。
内容的提问来源于stack exchange,提问作者tony Macias
相关产品推荐
相关产品推荐

