今天一同事在用临时账户对上传到oss服务器的文件进行crc64校验的时候用ossClient对象获取ossObject的时候
提示Access denied by authorizer's policy.
看返回的提示信息应该是权限的问题,同事那边的临时账户是调用我这边的接口来获取,所以我猜想问题应该是在我这边,这个问题通过阿里云提供的文档来看是临时用户没有权限导致的
由于本人刚接触这一块,代码又是以前的人写的,所以一开始没整明白。一边看文档一边向阿里提交了工单协助处理,文档有说到临时账户是基于子账户的权限的,于是登录子账户控制台发现子账户的权限都是有的。这时候阿里回复了我的工单,工单说到是我临时账户policy配置的问题,让我把policy配置成最高操作权限,于是我按它说的给临时账户的policy设置了最大权限,然后重新发布服务,让同事再重试一次,这个时候没有报前面说的错误了,但出现了新的错误:The parameter policy has not passed grammer check.
意思大概就是policy的语法错误,于是检查policy的设置。因为以前有配置要用的权限(权限最小化),所以干脆不管最大权限语法对不对,我直接在原来的policy的action中加了个“getObject”权限,然后又重新打包上传到服务器,重启服务,让同事又重试了一下,看着shell窗口日志一条条打印出来,最后看到成功两字,中间也没报任何异常,心里瞬间松了口气,调了一个下午加晚上终于调通了,这就跟便秘蹲了大半个小时突然一股丹田之气打通任督二脉,瞬间潮起潮落一样,一个字,爽!
另外,在写policy的时候建议大家先在RAM Policy Editor上面写,这个在线编辑器提供了对policy语法的验证。