Object Storage Service (OSS) バケットにアップロードされるすべてのデータが頻繁にアクセスされるわけではありません。 めったにアクセスされないデータは、コンプライアンスとアーカイブの目的でコールドストレージに保存されます。 ビジネスシナリオに基づいて、バッチで保存する必要がなくなったデータをバケットから削除することができます。 この場合、オブジェクトの最終変更時刻に基づいてライフサイクルルールを設定し、オブジェクトのストレージクラスをホットからコールドに定期的に変更したり、オブジェクトを削除してストレージコストを削減したりできます。
使用上の注意
オブジェクトの最終変更時刻に基づいてライフサイクルルールを設定する前に、この機能に慣れていることを確認してください。 詳細については、「最終変更時刻に基づくライフサイクルルール」をご参照ください。
ライフサイクルルールを設定するには、
oss:PutBucketLifecycle
権限が必要です。 ライフサイクルルールをクエリするには、oss:GetBucketLifecycle
権限が必要です。 ライフサイクルルールを削除するには、oss:DeleteBucketLifecycle
権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。
バケットのライフサイクルルールの設定
次のコードは、バケットのオブジェクトの最終変更時刻に基づいてライフサイクルルールを設定する方法の例を示しています。 ライフサイクルルールを設定した後、ビジネス要件に基づいてライフサイクルルールを変更できます。 既存のライフサイクルルールを変更する方法については、「最終変更時刻に基づくライフサイクルルール」をご参照ください。
const OSS = require('ali-OSS ')
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを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、
// バケットの名前を指定します。
bucket: 'yourbucketname'
});
async関数putBucketLifecycle (ライフサイクル) {
try {
const result = await client.putBucketLifecycle('yourbucketname', [
ライフサイクルの設定 (Set lifecycle)
]);
console.log (結果);
} catch (e) {
console.log(e);
}
}
const lifecycle1 = {
id: 'rule1' 、
ステータス: 'Enabled' 、
プレフィックス: 'foo/'、
有効期限: {
// オブジェクトの現在のバージョンが最後に変更されてから3日後に期限切れになるように指定します。
日: 3
}
}
putBucketLifecycle(lifecycle1)
const lifecycle2 = {
id: 'rule2' 、
ステータス: 'Enabled' 、
プレフィックス: 'foo/'、
有効期限: {
// 指定された日付より前に作成されたオブジェクトの有効期限を指定します。
createdBeforeDate: '2020-02-18T00:00:00.000Z'
},
}
putBucketLifecycle(lifecycle2)
const lifecycle3 = {
id: 'rule3' 、
ステータス: 'Enabled' 、
プレフィックス: 'foo/'、
abortMultipartUpload: {
// 部品が3日で期限切れになるように指定します。
日: 3
},
}
putBucketLifecycle(lifecycle3)
const lifecycle4 = {
id: 'rule4' 、
ステータス: 'Enabled' 、
プレフィックス: 'foo/'、
abortMultipartUpload: {
// 指定した日付より前に作成したパーツの有効期限を指定します。
createdBeforeDate: '2020-02-18T00:00:00.000Z'
},
}
putBucketLifecycle(lifecycle4)
const lifecycle5 = {
id: 'rule5' 、
ステータス: 'Enabled' 、
プレフィックス: 'foo/'、
transition: {
// オブジェクトが最後に変更されてから20日後に、現在のバージョンのオブジェクトのストレージクラスをアーカイブに変更することを指定します。
日: 20,
storageClass: 'アーカイブ'
},
有効期限: {
// オブジェクトの現在のバージョンが最後に変更されてから21日後に期限切れになるように指定します。
日: 21
},
}
putBucketLifecycle(lifecycle5)
const lifecycle6 = {
id: 'rule6' 、
ステータス: 'Enabled' 、
プレフィックス: 'foo/'、
transition: {
// 指定された日付より前に作成されたオブジェクトのストレージクラスをアーカイブに変更することを指定します。
createdBeforeDate: '2023-02-19T00:00:00.000Z' 、
storageClass: 'アーカイブ'
},
有効期限: {
// 指定された日付より前に作成されたオブジェクトを削除するように指定します。
createdBeforeDate: '2023-01-18T00:00:00.000Z'
},
}
putBucketLifecycle(lifecycle6)
const lifecycle7 = {
id: 'rule7' 、
ステータス: 'Enabled' 、
プレフィックス: 'foo/'、
有効期限: {
// 削除マーカーが期限切れになると自動的に削除されるように指定します。
expiredObjectDeleteMarker: true
}
}
putBucketLifecycle(lifecycle7)
const lifecycle8 = {
id: 'rule8' 、
ステータス: 'Enabled' 、
プレフィックス: 'foo/'、
// オブジェクトが最後に変更されてから10日後に、以前のバージョンのオブジェクトのストレージクラスをIAに変更することを指定します。
noncurrentVersionTransition: {
noncurrentDays: '10' 、
storageClass: 「IA」
}
}
putBucketLifecycle(lifecycle8)
const lifecycle9 = {
id: 'rule9' 、
ステータス: 'Enabled' 、
プレフィックス: 'foo/'、
// オブジェクトが最後に変更されてから10日後に、以前のバージョンのオブジェクトのストレージクラスをIAに変更することを指定します。
noncurrentVersionTransition: {
noncurrentDays: '10' 、
storageClass: 「IA」
},
// ルールに一致させるオブジェクトのタグを指定します。
tag: [{
キー: 'key1' 、
値: 'value1'
},
{
キー: 'key2' 、
値: 'value2'
}]
}
putBucketLifecycle(lifecycle9)
バケットのライフサイクルルールの照会
次のコードは、バケットのライフサイクルルールを照会する方法の例を示しています。
const OSS = require('ali-OSS ')
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを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、
// バケットの名前を指定します。
bucket: 'yourbucketname'
});
async関数getBucketLifecycle () {
try {
const result = await client.getBucketLifecycle('Yourbucketname');
console.log(result.ru les); // ライフサイクルルールを照会します。
rules.forEach(rule => {
console.log(rule.id) // ルールidを照会します。
console.log(rule.status) // ルールのステータスを照会します。
console.log(rule.tags) // ライフサイクルルールで設定されたタグを照会します。
console.log(rule.expiration.days) // 有効期間の設定を照会します。
console.log(rule.expiration.createdBeforeDate) // 有効期限の設定を照会します。
// 期限切れパーツのルールを照会します。
console.log(rule.abortMultipartUpload.days | | rule.abortMultipartUpload.createdBeforeDate)
// ストレージクラス変換のルールを照会します。
console.log(rule.transition.days | | rule.transition.createdBeforeDate) // 変換日の設定を照会します。
console.log(rule.transition.storageClass) // ストレージクラスの変換に使用する設定を照会します。
// ライフサイクルルールを照会して、期限切れの削除マーカーが自動的に削除されるかどうかを確認します。
console.log(rule.transition.expiredObjectDeleteMarker)
// 以前のバージョンのオブジェクトのストレージクラスの変換に使用された設定を照会します。
console.log(rule.noncurrentVersionTransition.noncurrentDays) // 以前のバージョンのオブジェクトの変換日設定を照会します。
console.log(rule.noncurrentVersionTransition.storageClass) // 以前のバージョンのオブジェクトのストレージクラスの変換に使用される設定を照会します。
})
} catch (e) {
console.log(e);
}
}
getBucketLifecycle();
バケットのライフサイクルルールの削除
次のコードは、バケットのすべてのライフサイクルルールを削除する方法の例を示しています。 1つ以上のライフサイクルルールを削除する場合は、「ライフサイクルルールの最終変更時刻に基づく」をご参照ください。
const OSS = require('ali-OSS ')
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを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、
// バケットの名前を指定します。
bucket: 'yourbucketname'
});
async関数deleteBucketLifecycle () {
try {
const result = await client.de leteBucketLifecycle('Yourbucketname');
console.log (結果);
} catch (e) {
console.log(e);
}
}
deleteBucketLifecycle();
参考資料
ライフサイクルルールの管理に使用される完全なサンプルコードについては、『GitHub』をご参照ください。
ライフサイクルルールを設定するために呼び出すことができるAPI操作の詳細については、「PutBucketLifecycle」をご参照ください。
ライフサイクルルールを照会するために呼び出すことができるAPI操作の詳細については、「GetBucketLifecycle」をご参照ください。
ライフサイクルルールを削除するために呼び出すことができるAPI操作の詳細については、「DeleteBucketLifecycle」をご参照ください。