除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。