Object Storage Service (OSS) のデータ保持ポリシーは、Write Once, Read Many (WORM) 属性を持っています。この機能を利用することで、データの削除や変更を防ぎながら、データを安全に保管・利用できます。バケットにデータ保持ポリシーを設定することで、リソース所有者を含むすべてのユーザーが、指定された期間、OSS バケット内のオブジェクトを変更または削除することを防ぐことができます。保持期間が終了するまで、バケット内のオブジェクトのアップロードと読み取りしかできません。保持期間が終了すると、オブジェクトの変更または削除が可能になります。
保持ポリシーを設定する前に、この機能についてよく理解しておく必要があります。詳細については、「保持ポリシー」をご参照ください。
データ保持ポリシーの作成
次のコードは、データ保持ポリシーを作成する方法の例です。
const OSS = require('ali-oss');
const client = new OSS({
// region を、バケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、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,
// bucket をご使用のバケット名に設定します。
bucket: 'yourBucketName',
});
// データ保持ポリシーを作成します。
async function initiateBucketWorm() {
// bucket をご使用のバケット名に設定します。
const bucket = 'yourbucketname'
// 保持期間を日数で指定します。
const days = '<Retention Days>'
const res = await client.initiateBucketWorm(bucket, days)
console.log(res.wormId)
}
initiateBucketWorm()ロックされていないデータ保持ポリシーのキャンセル
次のコードは、ロックされていないデータ保持ポリシーをキャンセルする方法の例です。
const OSS = require('ali-oss');
const client = new OSS({
// region を、バケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、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,
// bucket をご使用のバケット名に設定します。
bucket: 'yourBucketName',
});
// データ保持ポリシーをキャンセルします。
async function abortBucketWorm() {
// bucket をご使用のバケット名に設定します。
const bucket = 'yourbucketname'
try {
await client.abortBucketWorm(bucket)
console.log('abort success')
} catch(err) {
console.log('err: ', err)
}
}
abortBucketWorm()データ保持ポリシーのロック
次のコードは、データ保持ポリシーをロックする方法の例です。
const OSS = require('ali-oss');
const client = new OSS({
// region を、バケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、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,
// bucket をご使用のバケット名に設定します。
bucket: 'yourBucketName',
});
// データ保持ポリシーをロックします。
async function completeBucketWorm() {
// bucket をご使用のバケット名に設定します。
const bucket = 'yourbucketname'
const wormId = 'Your Worm Id'
try {
await client.completeBucketWorm(bucket, wormId)
} catch(err) {
console.log(err)
}
}
completeBucketWorm()データ保持ポリシーの取得
次のコードは、データ保持ポリシーを取得する方法の例です。
const OSS = require('ali-oss');
const client = new OSS({
// region を、バケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、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,
// bucket をご使用のバケット名に設定します。
bucket: 'yourBucketName',
});
// データ保持ポリシーを取得します。
async function getBucketWorm() {
// bucket をご使用のバケット名に設定します。
const bucket = 'yourbucketname'
try {
const res = await client.getBucketWorm(bucket)
// データ保持ポリシー ID を表示します。
console.log(res.wormId)
// データ保持ポリシーのステータスを表示します。ステータスは「InProgress」(ロックされていない) または「Locked」(ロック済み) です。
console.log(res.state)
// オブジェクトの保持期間を表示します。
console.log(res.days)
} catch(err) {
console.log(err)
}
}
getBucketWorm()オブジェクトの保持期間の延長
次のコードは、ロック済みのデータ保持ポリシー内のオブジェクトの保持期間を延長する方法の例です。
const OSS = require('ali-oss');
const client = new OSS({
// region を、バケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、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,
// bucket をご使用のバケット名に設定します。
bucket: 'yourBucketName',
});
// ロック済みのデータ保持ポリシー内のオブジェクトの保持期間を延長します。
async function extendBucketWorm() {
// bucket をご使用のバケット名に設定します。
const bucket = 'yourbucketname'
const wormId = 'Your Worm Id'
const days = 'Retention Days'
try {
const res = await client.extendBucketWorm(bucket, wormId, days)
console.log(res)
} catch(err) {
console.log(err)
}
}
extendBucketWorm()関連ドキュメント
データ保持ポリシーの完全なサンプルコードについては、「GitHub の例」をご参照ください。
データ保持ポリシーを作成する API 操作の詳細については、「InitiateBucketWorm」をご参照ください。
ロックされていないデータ保持ポリシーをキャンセルする API 操作の詳細については、「AbortBucketWorm」をご参照ください。
データ保持ポリシーをロックする API 操作の詳細については、「CompleteBucketWorm」をご参照ください。
データ保持ポリシーを取得する API 操作の詳細については、「GetBucketWorm」をご参照ください。
オブジェクトの保持期間を延長する API 操作の詳細については、「ExtendBucketWorm」をご参照ください。