本文介绍如何在受版本控制的存储空间(Bucket)中管理文件(Object)的访问权限(ACL)。

设置文件访问权限

PutObjectACL默认设置Object当前版本的ACL权限。如果Object的当前版本是删除标记(Delete Marker),OSS将返回404 Not Found。请求参数中指定versionId可以设置指定Object版本的ACL权限。

以下代码用于设置文件访问权限:

const OSS = require('ali-oss');

const client = new OSS({
  bucket: '<Your BucketName>',
  //region以杭州为例(oss-cn-hangzhou),其他region按实际情况填写。
  region: '<Your Region>',
  //阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>'
});

async function putACL() {
  const name = '<your objectName>'
  const acl = '<your acl>'
  const versionId = 'your versionId' // 设置指定versionId的Object的访问权限(ACL)。
 const options = {
    versionId
  };
  const result = client.putACL(name, acl, options);
  console.log(result);
}

putACL();

设置文件访问权限的详细信息请参见PutObjectACL

获取文件访问权限

GetObjectACL默认获取Object当前版本的ACL权限。如果Object的当前版本是删除标记(Delete Marker),OSS将返回404 Not Found。请求参数中指定versionId可以获取指定Object版本的ACL权限。

以下代码用于获取文件访问权限:

const OSS = require('ali-oss');

const client = new OSS({
  bucket: '<Your BucketName>',
  //region以杭州为例(oss-cn-hangzhou),其他region按实际情况填写。
  region: '<Your Region>',
  //阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
  accessKeyId: '<Your AccessKeyId>',
  accessKeySecret: '<Your AccessKeySecret>'
});

async function getACL() {
  const name = '<your objectName>'
  const versionId = 'your versionId' //查看此次执行获取访问权限操作的object的versionId。
  const options = {
    versionId
  };
  const result = client.getACL(name, options);
  console.log(result);
}

getACL();

获取文件访问权限的详细信息请参见GetObjectACL