除Bucket级别ACL以外,OSS还提供了Object级别的ACL。您可以在上传Object时设置相应的ACL,也可以在Object上传后的任意时间内根据自己的业务需求随时修改ACL。
读写权限类型
文件的访问权限(ACL)有以下四种:
访问权限 | 描述 | 访问权限值 |
继承Bucket | 文件遵循存储空间的访问权限。 | default |
私有 | 文件的拥有者和授权用户有该文件的读写权限,其他用户没有权限操作该文件。 | private |
公共读 | 文件的拥有者和授权用户有该文件的读写权限,其他用户只有文件的读权限。请谨慎使用该权限。 | public-read |
公共读写 | 所有用户都有该文件的读写权限。请谨慎使用该权限。 | public-read-write |
设置文件访问权限
以下代码用于设置指定Object的访问权限:
const oss = require('ali-oss');
const client = oss({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'yourregion',
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// yourbucketname填写存储空间名称。
bucket: 'yourbucketname'
});
async function setACL() {
try {
// yourObjectName填写不包含Bucket名称在内的Object的完整路径。
await client.putACL('yourObjectName', 'private');
console.log('Set ACL successfully');
} catch (e) {
console.error(e);
}
}
setACL();
获取文件访问权限
以下代码用于获取指定Object的访问权限:
const oss = require('ali-oss');
const client = oss({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'yourregion',
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// yourbucketname填写存储空间名称。
bucket: 'yourbucketname',
});
async function getACL() {
try {
// yourObjectName填写不包含Bucket名称在内的Object的完整路径。
const result = await client.getACL('yourObjectName');
console.log(result.acl);
} catch (e) {
console.error(e);
}
}
getACL();
相关文档
关于管理文件访问权限的完整示例代码,请参见GitHub示例。
关于设置文件访问权限的API接口说明,请参见PutObjectACL。
关于获取文件访问权限的API接口说明,请参见GetObjectACL。