前言
- Browser.js 6.x
Browser.js
官方文档:https://help.aliyun/document_detail/64040.html
GITHUB地址:https://gitee/mirrors/ali-oss
GITEE镜像地址:https://github/ali-sdk/ali-oss
示例:列出所有对象(测试bucket,对象数量较少)
<html>
<head>
</head>
<body></body>
<!-- Introducing online resources -->
<script src="aliyun-oss-sdk.min.js"></script>
<script type="text/javascript">
const client = new OSS({
region: 'oss-cn-beijing',
accessKeyId: 'STS.NTbFYrajjBxfz9zTKxxxxxxx',
accessKeySecret: 'GcvcZfGkkEd4fJfQu9gVDMjxvXxxxxxxxxxxxx',
stsToken: 'CAISgAJ1q6Ft5B2yfSjIr5fXDePGjLVL9bqNeB/LsEsdfxxxxxxxxxxxxxxxxxxxx...xxxxxxx=',
refreshSTSToken: async () => {
const info = await fetch('you sts server');
return {
accessKeyId: info.accessKeyId,
accessKeySecret: info.accessKeySecret,
stsToken: info.stsToken
}
},
refreshSTSTokenInterval: 300000,
bucket: 'bucket name'
});
client.list().then((result) => {
console.log('object list : ', result.objects);
});
</script>
</html>
遇到错误
执行示例后,遇到403错误
:AccessDenied:The bucket you access does not belong to you.
分析
现象1
- 使用 accessKeyId、accessKeySecret 执行示例,没有错误。
- 使用STS生成的accessKeyId、accessKeySecret、stsToken执行示例,出现403错误。
可以判定错误与STS相关。
现象2
403错误
:AccessDenied:The bucket you access does not belong to you.
经过查找,找到2个相关的文档:
- 阿里云 The bucket you access does not belong to you
- 访问OSS时出现403状态码的排查方法
可以判定错误为:没有权限访问此bucket
。
综合现象1和现象2,可以判定错误为:使用STS方式时,没有权限访问此bucket
。
错误原因
- 与STS方式相关的说明略(可参考这里)。
- 使用STS方式时,需要创建RAM用户,再创建RAM角色。
- 使用STS方式创建授权时,对于Policy:
如果指定该权限策略,则STS Token最终的权限策略取RAM角色权限策略与该权限策略的交集;如果不指定该权限策略,则STS Token最终的权限策略取RAM角色的权限策略
。
本次错误因RAM角色的权限策略
引起:RAM用户具备操作bucket的权限,RAM角色不具备操作bucket的权限
。
解决办法
为RAM角色
添加操作bucket的权限(AliyunOSSFullAccess
)。
更多推荐
【阿里云OSS】403错误,AccessDenied:The bucket you access does not belong to you.
发布评论