本文介紹如何使用Node.js添加、查看、列舉、刪除儲存空間(Bucket)的清單(Inventory)配置。
重要
如果您通過RAM使用者使用清單功能,請確保已擁有清單功能的相關許可權。關於清單功能的許可權說明,請參見OSS Action分類。
添加清單配置
添加清單配置時,有如下注意事項:
單個Bucket最多隻能配置1000條清單規則。
配置清單的源Bucket與存放匯出的資訊清單檔所在的目標Bucket必須位於同一個Region。
以下代碼用於為某個Bucket添加清單配置。
const OSS = require('ali-oss');
const client = new OSS({
// yourBucketName填寫儲存空間名稱。
bucket: 'yourBucketName',
// 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,
});
const inventory = {
// 設定清單配置ID。
id: 'default',
// 清單配置是否啟用的標識,取值為true或者false。
isEnabled: false,
// (可選)設定清單篩選規則,指定篩選object的首碼。
prefix: 'ttt',
OSSBucketDestination: {
// 設定清單格式。
format: 'CSV',
// yourAccountId填寫目標Bucket擁有者的帳號ID。
accountId: 'yourAccountId',
// AliyunOSSRole填寫目標Bucket的角色名稱。
rolename: 'AliyunOSSRole',
// yourBucketName填寫目標Bucket的名稱。
bucket: 'yourBucketName',
// (可選)yourPrefix填寫清單結果的儲存路徑首碼。
prefix: 'yourPrefix ',
// 如果需要使用SSE-OSS加密清單,請參考以下代碼。
// encryption: {'SSE-OSS': ''}
// 如果需要使用SSE-KMS加密清單,請參考以下代碼。
/*
encryption: {
'SSE-KMS': {
keyId: 'test-kms-id';
};
*/
},
// 設定清單的產生計劃,WEEKLY對應每周一次,DAILY對應每天一次。
frequency: 'Daily',
// 設定清單結果中包含了Object的所有版本, 如果設定為Current,則表示僅包含Object的目前的版本。
includedObjectVersions: 'All',
optionalFields: {
// (可選)設定清單中包含的Object屬性。
field: [
'Size',
'LastModifiedDate',
'ETag',
'StorageClass',
'IsMultipartUploaded',
'EncryptionStatus',
],
},
};
async function putInventory() {
// yourBucketName填寫需要添加清單配置的Bucket名稱。
const bucket = 'yourBucketName';
try {
await client.putBucketInventory(bucket, inventory);
console.log('清單配置添加成功');
} catch (err) {
console.log('清單配置添加失敗:', err);
}
}
putInventory();
查看清單配置
以下代碼用於查看某個Bucket的清單配置。
const OSS = require('ali-oss');
const client = new OSS({
// yourBucketName填寫儲存空間名稱。
bucket: 'yourBucketName',
// 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,
});
async function getBucketInventoryById() {
// yourBucketName填寫指定擷取清單配置的Bucket名稱。
const bucket = 'yourBucketName';
try {
// 查看清單配置。
const result = await client.getBucketInventory(bucket, 'inventoryid');
console.log(result.inventory);
} catch (err) {
console.log(err);
}
}
getBucketInventoryById();
批量列舉清單配置
說明
單次請求最多可擷取100條清單配置項內容。若需擷取超過100條清單配置項,則需發送多次請求,並保留相應的Token,作為下一次請求的參數。
以下代碼用於批量列舉某個Bucket的清單配置。
const OSS = require('ali-oss');
const client = new OSS({
// yourBucketName填寫儲存空間名稱。
bucket: 'yourBucketName',
// 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,
});
async function listBucketInventory() {
const bucket = 'yourBucketName'; // 填寫指定儲存空間名稱。
async function getNextPage(nextContinuationToken) {
// 使用nextContinuationToken來擷取下一頁,如果不提供token,則擷取第一頁。
const result = await client.listBucketInventory(bucket, nextContinuationToken);
// 輸出結果。
console.log(result.inventoryList);
// 如果還有下一頁,遞迴調用函數。
if (result.nextContinuationToken) {
await getNextPage(result.nextContinuationToken);
}
}
// 開始擷取第一頁。
await getNextPage();
}
listBucketInventory();
刪除清單配置
以下代碼用於刪除某個Bucket的清單配置。
const OSS = require('ali-oss');
const client = new OSS({
// yourBucketName填寫儲存空間名稱。
bucket: 'yourBucketName',
// 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,
});
async function deleteBucketInventoryById() {
// yourBucketName填寫指定儲存空間名稱。
const bucket = 'yourBucketName';
// 刪除指定ID的清單配置。
const inventory_id = 'Your InventoryId';
try {
await client.deleteBucketInventory(bucket, inventory_id);
} catch (err) {
console.log(err);
}
}
deleteBucketInventoryById();
相關文檔
關於儲存空間清單的完整範例程式碼,請參見GitHub樣本。
關於添加儲存空間清單配置的API介面說明,請參見PutBucketInventory。
關於查看儲存空間清單配置的API介面說明,請參見GetBucketInventory。
關於批量列舉儲存空間清單配置的API介面說明,請參見ListBucketInventory。
關於刪除儲存空間清單配置的API介面說明,請參見DeleteBucketInventory。