このトピックでは、Node.js を使用してバケットのインベントリ設定を追加、表示、一覧表示、削除する方法について説明します。
Resource Access Management (RAM) ユーザーとしてインベントリ機能を使用する場合は、必要な権限があることを確認してください。 インベントリ機能の権限の詳細については、「OSS Action の分類」をご参照ください。
インベントリ設定の追加
インベントリ設定を追加する際は、次の点にご注意ください。
1 つのバケットには、最大 1,000 個のインベントリルールを設定できます。
マニフェストファイルのソースバケットと宛先バケットは、同じリージョンにある必要があります。
次のコードは、バケットにインベントリ設定を追加する方法を示しています。
const OSS = require('ali-oss');
const client = new OSS({
// バケット名を設定します。
bucket: 'yourBucketName',
// バケットが配置されているリージョンを設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを 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,
// (オプション) インベントリのフィルター ルールを設定して、オブジェクトをフィルタリングするためのプレフィックスを指定します。
prefix: 'ttt',
OSSBucketDestination: {
// インベントリのフォーマットを設定します。
format: 'CSV',
// accountId を宛先バケットのオーナーの ID に設定します。
accountId: 'yourAccountId',
// rolename を宛先バケットのロール名に設定します。
rolename: 'AliyunOSSRole',
// bucket を宛先バケットの名前に設定します。
bucket: 'yourBucketName',
// (オプション) prefix をインベントリ結果のストレージパスのプレフィックスに設定します。
prefix: 'yourPrefix ',
// SSE-OSS を使用してインベントリを暗号化するには、次のコードをご参照ください。
// encryption: {'SSE-OSS': ''}
// SSE-KMS を使用してインベントリを暗号化するには、次のコードをご参照ください。
/*
encryption: {
'SSE-KMS': {
keyId: 'test-kms-id';
};
*/
},
// インベントリの生成スケジュールを設定します。 WEEKLY は週に 1 回、DAILY は 1 日に 1 回を示します。
frequency: 'Daily',
// インベントリ結果にオブジェクトのすべてのバージョンを含めるかどうかを指定します。 このパラメーターを Current に設定した場合、現在のバージョンのオブジェクトのみが含まれます。
includedObjectVersions: 'All',
optionalFields: {
// (オプション) インベントリに含めるオブジェクトプロパティを設定します。
field: [
'Size',
'LastModifiedDate',
'ETag',
'StorageClass',
'IsMultipartUploaded',
'EncryptionStatus',
],
},
};
async function putInventory() {
// インベントリ設定を追加するバケットの名前を設定します。
const bucket = 'yourBucketName';
try {
await client.putBucketInventory(bucket, inventory);
console.log('インベントリ設定が追加されました。');
} catch (err) {
console.log('インベントリ設定の追加に失敗しました:', err);
}
}
putInventory();
インベントリ設定の表示
次のコードは、バケットのインベントリ設定を表示する方法を示しています。
const OSS = require('ali-oss');
const client = new OSS({
// バケット名を設定します。
bucket: 'yourBucketName',
// バケットが配置されているリージョンを設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを 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() {
// インベントリ設定を表示するバケットの名前を設定します。
const bucket = 'yourBucketName';
try {
// インベントリ設定を表示します。
const result = await client.getBucketInventory(bucket, 'inventoryid');
console.log(result.inventory);
} catch (err) {
console.log(err);
}
}
getBucketInventoryById();
インベントリ設定の一覧表示
1 回のリクエストで取得できるインベントリ設定は最大 100 件です。 100 件を超える設定を取得するには、複数のリクエストを送信してください。 前の応答のトークンを次のリクエストに含めます。
次のコードは、バケットのインベントリ設定を一覧表示する方法を示しています。
const OSS = require('ali-oss');
const client = new OSS({
// バケット名を設定します。
bucket: 'yourBucketName',
// バケットが配置されているリージョンを設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを 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 を使用して次のページを取得します。 トークンを指定しない場合、最初のページが取得されます。
const result = await client.listBucketInventory(bucket, nextContinuationToken);
// 結果を出力します。
console.log(result.inventoryList);
// 次のページがある場合は、関数を再帰的に呼び出します。
if (result.nextContinuationToken) {
await getNextPage(result.nextContinuationToken);
}
}
// 最初のページの取得を開始します。
await getNextPage();
}
listBucketInventory();
インベントリ設定の削除
次のコードは、バケットのインベントリ設定を削除する方法を示しています。
const OSS = require('ali-oss');
const client = new OSS({
// バケット名を設定します。
bucket: 'yourBucketName',
// バケットが配置されているリージョンを設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを 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() {
// バケットの名前を指定します。
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」をご参照ください。