本文介绍如何使用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。
文档内容是否对您有帮助?