最終アクセス時刻に基づくライフサイクルルールを使用すると、データアクセスパターンを自動的に監視してコールドデータを識別できます。その後、コールドデータのストレージクラスを移行することで、インテリジェントなデータ階層化を実装し、ストレージコストを削減できます。
利用シーン
あるマルチメディアウェブサイトでは、最終アクセス時刻に基づいてデータをホットデータとコールドデータに分類する必要があります。従来の方法では手動でのログ分析が必要ですが、最終アクセス時刻に基づくライフサイクルルールを使用すると、データを自動的に識別して階層化できます。
このシナリオでは、データは examplebucket バケット内の異なるパスに分類されて保存されます。目標は、指定された期間が経過した後、一部のデータをより低コストのストレージクラスに移行することです。
ストレージパス | ストレージシナリオ | ライフサイクルポリシー | 結果 |
data/ | WMV 形式のライブストリーミング動画を保存します。これらの動画は、アップロード後の最初の 2 か月間はアクセス頻度が低く、その後はほとんどアクセスされません。 | 最終アクセスから 200 日後に低頻度アクセス (IA) ストレージクラスに移行します。データが再度アクセスされた場合でも、IA ストレージクラスに保持されます。 | 指定された日数が経過すると、ストレージクラスが移行されます。基準を満たさないデータは、標準ストレージクラスに保持されます。 |
MP4 形式の映画動画データを保存します。ほとんどのファイルは、6 か月ごとに頻繁にアクセスされます。 | |||
log/ | 大量のログデータを保存します。過去 3 か月以内に数回のアクセスレコードがあるファイルは少数です。すべてのファイルは、アップロード後 6 か月経つとほとんどアクセスレコードがなくなります。 |
|
最終アクセス時刻に基づくライフサイクルポリシーを使用すると、OSS はホットデータとコールドデータを自動的に識別して階層化します。たとえば、`data/` パス内の頻繁にアクセスされる MP4 動画は標準ストレージクラスに保持されます。6 か月間アクセスされなかった MP4 動画は、200 日後に低頻度アクセスストレージクラスに移行されます。最終更新時刻に基づくライフサイクルルールを設定した場合、`data/` パス内のデータは最終更新時刻にのみ基づいて移行または削除できます。これにより、ファイルアクセス頻度に基づくインテリジェントなデータ階層化の実装が妨げられます。
このシナリオのライフサイクルポリシーと推奨される操作は参考用です。実際のビジネスニーズに基づいてライフサイクルルールを設定できます。
前提条件
アクセス追跡が有効化されていること。
オブジェクトを標準または低頻度アクセスストレージクラスからアーカイブ、コールドアーカイブ、またはディープコールドアーカイブストレージクラスに移行するには、してこの機能をリクエストする必要があります。
重要チケットが承認された後、最終アクセス時刻に基づくポリシーを使用してオブジェクトを標準または低頻度アクセスストレージクラスからアーカイブ、コールドアーカイブ、またはディープコールドアーカイブストレージクラスに移行する場合、これらのオブジェクトの最終アクセス時刻は、デフォルトでバケットのアクセス追跡が有効になった時刻になります。
操作手順
OSS コンソールを使用
アクセス追跡の有効化
OSS コンソールにログインします。
左側のナビゲーションウィンドウで、バケット をクリックします。[バケット] ページで、対象のバケットを見つけてクリックします。
左側のナビゲーションウィンドウで、データ管理 > ライフサイクル を選択します。
[ライフサイクル] ページで、[アクセス追跡の有効化] スイッチをオンにします。
説明アクセス追跡を有効にすると、OSS はバケット内のすべてのオブジェクトの最終アクセス時刻を、アクセス追跡が有効になった時刻に設定します。
ライフサイクルルールの設定
[ライフサイクル] ページで、[ルールの作成] をクリックします。
[ライフサイクルルールの作成] パネルで、以下のセクションで説明するように、`data/` プレフィックスと `log/` プレフィックスのライフサイクルルールを設定します。
data/ プレフィックスのライフサイクルルール
以下で説明するように、`data/` プレフィックスのライフサイクルルールに必要なパラメーターを設定します。他のパラメーターはデフォルト設定のままでかまいません。
設定項目
説明
ステータス
[開始] をクリックします。
ポリシー
[プレフィックスで照合] を選択します。
接頭辞
data/と入力します。オブジェクトのライフサイクル
[日数を指定] を選択します。
ライフサイクルベースのルール
ドロップダウンリストから [最終アクセス時刻] を選択します。200 日と入力します。データは自動的に [低頻度アクセス (アクセス後も IA に保持)] に移行されます。
log/ プレフィックスのライフサイクルルール
以下で説明するように、`log/` プレフィックスのライフサイクルルールに必要なパラメーターを設定します。他のパラメーターはデフォルト設定のままでかまいません。
設定項目
説明
ステータス
[開始] を選択します。
ポリシー
[プレフィックスで照合] を選択します。
接頭辞
log/と入力します。オブジェクトのライフサイクル
[日数を指定] を選択します。
ライフサイクルベースのルール
ドロップダウンリストから [最終アクセス時刻] を選択します。120 日と入力します。データは自動的に [低頻度アクセス (アクセス後も IA に保持)] に移行されます。
ドロップダウンリストから [最終アクセス時刻] を選択します。250 日と入力します。データは自動的に [アーカイブ] に移行されます。
[OK] をクリックします。
Alibaba Cloud SDK を使用
最終アクセス時刻に基づくライフサイクルルールの作成は、Java、Python、および Go SDK のみがサポートしています。最終アクセス時刻に基づくライフサイクルルールを作成する前に、指定したバケットのアクセス追跡を有効にする必要があります。
アクセス追跡の有効化
Java
import com.aliyun.oss.*; import com.aliyun.oss.common.auth.*; import com.aliyun.oss.common.comm.SignVersion; import com.aliyun.oss.model.AccessMonitor; public class Demo { public static void main(String[] args) throws Exception { // この例では、中国 (杭州) リージョンのエンドポイントを使用します。実際のエンドポイントを指定してください。 String endpoint = "https://oss-cn-hangzhou.aliyuncs.com"; // 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。 EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider(); // バケット名を指定します。例:examplebucket。 String bucketName = "examplebucket"; // バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。 String region = "cn-hangzhou"; // OSSClient インスタンスを作成します。 // OSSClient が不要になったら、shutdown メソッドを呼び出して関連リソースを解放します。 ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration(); clientBuilderConfiguration.setSignatureVersion(SignVersion.V4); OSS ossClient = OSSClientBuilder.create() .endpoint(endpoint) .credentialsProvider(credentialsProvider) .clientConfiguration(clientBuilderConfiguration) .region(region) .build(); try { // バケットのアクセス追跡を有効にします。アクセス追跡ステータスを有効 (Enabled) から無効 (Disabled) に変更する前に、バケットに最終アクセス時刻に基づくライフサイクルルールが存在しないことを確認してください。 ossClient.putBucketAccessMonitor(bucketName, AccessMonitor.AccessMonitorStatus.Enabled.toString()); } catch (OSSException oe) { System.out.println("Caught an OSSException, which means your request made it to OSS, " + "but was rejected with an error response for some reason."); System.out.println("Error Message:" + oe.getErrorMessage()); System.out.println("Error Code:" + oe.getErrorCode()); System.out.println("Request ID:" + oe.getRequestId()); System.out.println("Host ID:" + oe.getHostId()); } catch (ClientException ce) { System.out.println("Caught an ClientException, which means the client encountered " + "a serious internal problem while trying to communicate with OSS, " + "such as not being able to access the network."); System.out.println("Error Message:" + ce.getMessage()); } finally { if (ossClient != null) { ossClient.shutdown(); } } } }Python
# -*- coding: utf-8 -*- import oss2 from oss2.credentials import EnvironmentVariableCredentialsProvider # 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。 auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider()) # バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 endpoint = "https://oss-cn-hangzhou.aliyuncs.com" # エンドポイントに対応するリージョン (例: cn-hangzhou) を指定します。注意:このパラメーターは V4 署名に必須です。 region = "cn-hangzhou" # "examplebucket" をご利用のバケット名に置き換えます。 bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region) # バケットのアクセス追跡を有効にします。アクセス追跡を有効にした後、ステータスを無効 (Disabled) に変更する場合は、バケットに LastAccessTime 一致ルールに基づくライフサイクルルールがないことを確認してください。 bucket.put_bucket_access_monitor("Enabled")Go
package main import ( "context" "flag" "log" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" ) // グローバル変数を定義します。 var ( region string // バケットリージョン。 bucketName string // バケット名。 ) // init 関数はコマンドラインパラメーターを初期化します。 func init() { flag.StringVar(®ion, "region", "", "The region in which the bucket is located.") flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.") } // main 関数はバケットのアクセス追跡を有効にします。 func main() { // コマンドラインパラメーターを解析します。 flag.Parse() // バケット名が空かどうかを確認します。 if len(bucketName) == 0 { flag.PrintDefaults() log.Fatalf("invalid parameters, bucket name required") } // リージョンが空かどうかを確認します。 if len(region) == 0 { flag.PrintDefaults() log.Fatalf("invalid parameters, region required") } // デフォルト設定をロードし、認証情報プロバイダーとリージョンを設定します。 cfg := oss.LoadDefaultConfig(). WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()). WithRegion(region) // OSS クライアントを作成します。 client := oss.NewClient(cfg) // バケットのアクセス追跡を有効にするリクエストを作成します。 request := &oss.PutBucketAccessMonitorRequest{ Bucket: oss.Ptr(bucketName), AccessMonitorConfiguration: &oss.AccessMonitorConfiguration{ Status: oss.AccessMonitorStatusEnabled, // アクセス追跡を有効にします。 }, } // バケットのアクセス追跡を有効にする操作を実行します。 putResult, err := client.PutBucketAccessMonitor(context.TODO(), request) if err != nil { log.Fatalf("failed to put bucket access monitor %v", err) } // 結果を出力します。 log.Printf("put bucket access monitor result: %#v\n", putResult) }data/プレフィックスとlog/プレフィックスに対して、最終アクセス時間に基づいてライフサイクルルールを設定します。Java
import com.aliyun.oss.ClientException; import com.aliyun.oss.OSS; import com.aliyun.oss.common.auth.*; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.OSSException; import com.aliyun.oss.model.*; import java.util.ArrayList; import java.util.List; public class Lifecycle { public static void main(String[] args) throws Exception { // この例では、エンドポイントは中国 (杭州) に設定されています。実際のエンドポイントを指定してください。 String endpoint = "https://oss-cn-hangzhou.aliyuncs.com"; // 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。 EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider(); // バケット名を指定します。例:examplebucket。 String bucketName = "examplebucket"; // OSSClient インスタンスを作成します。 // OSSClient インスタンスが不要になったら、shutdown メソッドを呼び出してリソースを解放します。 OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider); try { String ruleId1 = "rule1"; String ruleId2 = "rule2"; // プレフィックスを data/ に指定します。 String matchPrefix = "data/"; // プレフィックスを log/ に指定します。 String matchPrefix2 = "log/"; SetBucketLifecycleRequest request = new SetBucketLifecycleRequest(bucketName); // ライフサイクルルール 1 では、data/ プレフィックスを持つすべてのファイルを、最終アクセス時刻から 200 日後に低頻度アクセスストレージクラスに移行します。これらのファイルが再度アクセスされた場合、低頻度アクセスストレージクラスに保持されます。 List<LifecycleRule.StorageTransition> storageTransitions = new ArrayList<LifecycleRule.StorageTransition>(); LifecycleRule.StorageTransition storageTransition = new LifecycleRule.StorageTransition(); storageTransition.setStorageClass(StorageClass.IA); storageTransition.setExpirationDays(200); storageTransition.setIsAccessTime(true); storageTransition.setReturnToStdWhenVisit(false); storageTransitions.add(storageTransition); LifecycleRule rule = new LifecycleRule(ruleId1, matchPrefix, LifecycleRule.RuleStatus.Enabled); rule.setStorageTransition(storageTransitions); request.AddLifecycleRule(rule); // ライフサイクルルール 2 では、log/ プレフィックスを持つすべてのファイルを、最終アクセス時刻から 120 日後に低頻度アクセスストレージクラスに移行します。これらのファイルが再度アクセスされた場合、低頻度アクセスストレージクラスに保持されます。 List<LifecycleRule.StorageTransition> storageTransitions2 = new ArrayList<LifecycleRule.StorageTransition>(); LifecycleRule.StorageTransition storageTransition2 = new LifecycleRule.StorageTransition(); storageTransition2.setStorageClass(StorageClass.IA); storageTransition2.setExpirationDays(120); storageTransition2.setIsAccessTime(true); storageTransition2.setReturnToStdWhenVisit(false); storageTransitions2.add(storageTransition2); // 同じルール内で、log/ プレフィックスを持つすべてのファイルを、最終更新時刻から 250 日後にアーカイブストレージクラスに移行します。 LifecycleRule.StorageTransition storageTransition3 = new LifecycleRule.StorageTransition(); storageTransition3.setStorageClass(StorageClass.Archive); storageTransition3.setExpirationDays(250); storageTransition3.setIsAccessTime(false); storageTransitions2.add(storageTransition3); LifecycleRule rule2 = new LifecycleRule(ruleId2, matchPrefix2, LifecycleRule.RuleStatus.Enabled); rule2.setStorageTransition(storageTransitions2); request.AddLifecycleRule(rule2); VoidResult result = ossClient.setBucketLifecycle(request); System.out.println("Return status code:"+result.getResponse().getStatusCode()+" set lifecycle succeed"); } catch (OSSException oe) { System.out.println("Caught an OSSException, which means your request made it to OSS, " + "but was rejected with an error response for some reason."); System.out.println("Error Message:" + oe.getErrorMessage()); System.out.println("Error Code:" + oe.getErrorCode()); System.out.println("Request ID:" + oe.getRequestId()); System.out.println("Host ID:" + oe.getHostId()); } catch (ClientException ce) { System.out.println("Caught an ClientException, which means the client encountered " + "a serious internal problem while trying to communicate with OSS, " + "such as not being able to access the network."); System.out.println("Error Message:" + ce.getMessage()); } finally { if (ossClient != null) { ossClient.shutdown(); } } } }Python
# -*- coding: utf-8 -*- import oss2 from oss2.credentials import EnvironmentVariableCredentialsProvider from oss2.models import LifecycleRule, BucketLifecycle, StorageTransition # 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。 auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider()) # yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 # バケット名を指定します。例:examplebucket。 bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket') # ライフサイクルルール 1 では、data/ プレフィックスを持つすべてのファイルを、最終アクセス時刻から 200 日後に低頻度アクセスストレージクラスに移行します。これらのファイルが再度アクセスされた場合、低頻度アクセスストレージクラスに保持されます。 rule1 = LifecycleRule('rule1', 'data/', status=LifecycleRule.ENABLED) rule1.storage_transitions = [StorageTransition(days=200, storage_class=oss2.BUCKET_STORAGE_CLASS_IA, is_access_time=True, return_to_std_when_visit=False)] # ライフサイクルルール 2 では、log/ プレフィックスを持つすべてのファイルを、最終アクセス時刻から 120 日後に低頻度アクセスストレージクラスに移行します。これらのファイルが再度アクセスされた場合、低頻度アクセスストレージクラスに保持されます。 # 同じルール内で、log/ プレフィックスを持つすべてのファイルを、最終更新時刻から 250 日後にアーカイブストレージクラスに移行します。 rule2 = LifecycleRule('rule2', 'log/', status=LifecycleRule.ENABLED) rule2.storage_transitions = [StorageTransition(days=120, storage_class=oss2.BUCKET_STORAGE_CLASS_IA, is_access_time=True, return_to_std_when_visit=False), StorageTransition(days=250, storage_class=oss2.BUCKET_STORAGE_CLASS_ARCHIVE, is_access_time=False)] lifecycle = BucketLifecycle([rule1, rule2]) # ライフサイクルルールを設定します。 result = bucket.put_bucket_lifecycle(lifecycle) print('Lifecycle rule set successfully. Return status:' + str(result.status))Go
package main import ( "context" "flag" "log" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss" "github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" ) // グローバル変数を定義します。 var ( region string // バケットが配置されているリージョン。 bucketName string // バケット名。 ) // コマンドラインパラメーターを初期化するために使用される init 関数を指定します。 func init() { flag.StringVar(®ion, "region", "", "The region in which the bucket is located.") flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.") } func main() { // コマンドラインパラメーターを解析します。 flag.Parse() // バケット名が指定されているかどうかを確認します。 if len(bucketName) == 0 { flag.PrintDefaults() log.Fatalf("invalid parameters, bucket name required") } // リージョンが指定されているかどうかを確認します。 if len(region) == 0 { flag.PrintDefaults() log.Fatalf("invalid parameters, region required") } // デフォルト設定をロードし、認証情報プロバイダーとリージョンを指定します。 cfg := oss.LoadDefaultConfig(). WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()). WithRegion(region) // OSS クライアントを作成します。 client := oss.NewClient(cfg) // バケットのライフサイクルルールを設定するリクエストを作成します。 request := &oss.PutBucketLifecycleRequest{ Bucket: oss.Ptr(bucketName), // バケット名。 LifecycleConfiguration: &oss.LifecycleConfiguration{ Rules: []oss.LifecycleRule{ { // rule1 を設定して、名前に data/ プレフィックスを含むオブジェクトのストレージクラスを、最終アクセスから 200 日後に IA に変更します。オブジェクトが再度アクセスされた場合、IA ストレージクラスに保持されるように指定します。 ID: oss.Ptr("rule1"), Status: oss.Ptr("Enabled"), Prefix: oss.Ptr("data/"), Transitions: []oss.LifecycleRuleTransition{ { Days: oss.Ptr(int32(200)), StorageClass: oss.StorageClassIA, IsAccessTime: oss.Ptr(true), // このパラメーターを true に設定して、オブジェクトのストレージクラスが最終アクセス時刻に基づいて変換されるように指定します。 ReturnToStdWhenVisit: oss.Ptr(false), }, }, }, { // rule2 を設定して、名前に log/ プレフィックスを含むオブジェクトのストレージクラスを、最終アクセスから 120 日後に IA に変更します。オブジェクトが再度アクセスされた場合、IA ストレージクラスに保持されるように指定します。 // 名前に log/ プレフィックスを含むオブジェクトのストレージクラスを、最終アクセスから 250 日後にアーカイブに変更します。 ID: oss.Ptr("rule2"), Status: oss.Ptr("Enabled"), Prefix: oss.Ptr("log/"), Transitions: []oss.LifecycleRuleTransition{ { Days: oss.Ptr(int32(120)), StorageClass: oss.StorageClassIA, IsAccessTime: oss.Ptr(true), // このパラメーターを true に設定して、オブジェクトのストレージクラスが最終アクセス時刻に基づいて変換されるように指定します。 ReturnToStdWhenVisit: oss.Ptr(false), }, { Days: oss.Ptr(int32(250)), StorageClass: oss.StorageClassArchive, IsAccessTime: oss.Ptr(true), ReturnToStdWhenVisit: oss.Ptr(false), }, }, }, }, }, } // バケットのライフサイクルルールを設定します。 result, err := client.PutBucketLifecycle(context.TODO(), request) if err != nil { log.Fatalf("failed to put bucket lifecycle %v", err) } // 結果を表示します。 log.Printf("put bucket lifecycle result:%#v\n", result) }
ossutil コマンドラインインターフェイスを使用
ossutil 2.0
アクセス追跡の有効化
ローカルの `config1.xml` ファイルでアクセス追跡を設定します。
<?xml version="1.0" encoding="UTF-8"?> <AccessMonitorConfiguration> <Status>Enabled</Status> </AccessMonitorConfiguration>ターゲットバケットのアクセス追跡ステータスを設定します。
ossutil api put-bucket-access-monitor --bucket bucketname --access-monitor-configuration file://config1.xml
`data/` プレフィックスと `log/` プレフィックスに対して、最終アクセス時刻に基づくライフサイクルルールを設定します。
ローカルの `config2.xml` ファイルで以下のライフサイクルルールを設定します。
<?xml version="1.0" encoding="UTF-8"?> <LifecycleConfiguration> <Rule> <ID>rule1</ID> <Prefix>data/</Prefix> <Status>Enabled</Status> <Transition> <Days>200</Days> <StorageClass>IA</StorageClass> <IsAccessTime>true</IsAccessTime> <ReturnToStdWhenVisit>false</ReturnToStdWhenVisit> </Transition> </Rule> <Rule> <ID>rule2</ID> <Prefix>log/</Prefix> <Status>Enabled</Status> <Transition> <Days>120</Days> <StorageClass>IA</StorageClass> <IsAccessTime>true</IsAccessTime> <ReturnToStdWhenVisit>false</ReturnToStdWhenVisit> </Transition> <Transition> <Days>250</Days> <StorageClass>Archive</StorageClass> <IsAccessTime>true</IsAccessTime> <ReturnToStdWhenVisit>false</ReturnToStdWhenVisit> </Transition> </Rule> </LifecycleConfiguration>ターゲットバケットのライフサイクルルールを設定します。
ossutil api put-bucket-lifecycle --bucket bucketname --lifecycle-configuration file://config2.xml
ossutil 1.0
アクセス追跡の有効化
ローカルの `config1.xml` ファイルでアクセス追跡を設定します。
<?xml version="1.0" encoding="UTF-8"?> <AccessMonitorConfiguration> <Status>Enabled</Status> </AccessMonitorConfiguration>ターゲットバケットのアクセス追跡ステータスを設定します。
ossutil access-monitor --method put oss://examplebucket/ config1.xml
`data/` プレフィックスと `log/` プレフィックスに対して、最終アクセス時刻に基づくライフサイクルルールを設定します。
ローカルの `config2.xml` ファイルで以下のライフサイクルルールを設定します。
<?xml version="1.0" encoding="UTF-8"?> <LifecycleConfiguration> <Rule> <ID>rule1</ID> <Prefix>data/</Prefix> <Status>Enabled</Status> <Transition> <Days>200</Days> <StorageClass>IA</StorageClass> <IsAccessTime>true</IsAccessTime> <ReturnToStdWhenVisit>false</ReturnToStdWhenVisit> </Transition> </Rule> <Rule> <ID>rule2</ID> <Prefix>log/</Prefix> <Status>Enabled</Status> <Transition> <Days>120</Days> <StorageClass>IA</StorageClass> <IsAccessTime>true</IsAccessTime> <ReturnToStdWhenVisit>false</ReturnToStdWhenVisit> </Transition> <Transition> <Days>250</Days> <StorageClass>Archive</StorageClass> <IsAccessTime>true</IsAccessTime> <ReturnToStdWhenVisit>false</ReturnToStdWhenVisit> </Transition> </Rule> </LifecycleConfiguration>ターゲットバケットのライフサイクルルールを設定します。
ossutil lifecycle --method put oss://examplebucket config2.xml
REST API を使用
プログラムに高度なカスタマイズ要件がある場合は、直接 REST API リクエストを行うことができます。REST API リクエストを行うには、署名を計算するコードを手動で記述する必要があります。詳細については、「PutBucketAccessMonitor」および「PutBucketLifecycle」をご参照ください。