前言

  • 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.