Alibaba Cloud Object Storage Service (OSS) のライフサイクルルールでは、書き込み可能な状態にある追加可能オブジェクトを、コールドアーカイブまたはディープコールドアーカイブのストレージクラスに直接移行することはできません。これらのオブジェクトにデータを追加する必要がなくなった場合は、`SealAppendObject` 操作を使用して通常のオブジェクトに変換できます。変換後、ライフサイクルルールによってオブジェクトが自動的にコールドアーカイブまたはディープコールドアーカイブのストレージクラスに移行され、長期的なストレージコストを削減できます。
`SealAppendObject` 操作を使用するには、チケットを送信して承認を得る必要があります。
このトピックでは、追加可能オブジェクトを Cold Archive ストレージクラスに変換する方法について説明します。このトピックの例では、examplebucket バケット内にあり、プレフィックスが appendobjects/ で、最終更新日時が 30 日以上前の追加可能オブジェクトを使用します。
ステップ1:処理対象の追加可能オブジェクトのリスト化
一致するすべての追加可能オブジェクトをフィルターしてリスト化します。これらのオブジェクトが `SealAppendObject` 操作の対象となります。
バケットでバージョン管理が有効になっていない場合、追加操作を実行すると、追加可能オブジェクトの最終更新日時 (Last-Modified) は現在の時刻に更新されます。バケットでバージョン管理が有効または一時停止されている場合、追加可能オブジェクトの最終更新日時は、最初のアップロード時刻のままです。その後の追加操作では、このタイムスタンプは更新されません。したがって、バケットでバージョン管理が有効または一時停止されている場合、この操作では、最初にアップロードされてから 30 日以上経過したすべての追加可能オブジェクトがリスト化されます。
ossutil
次のコマンドを実行して、一致するすべての追加可能オブジェクトをフィルターしてリスト化します。この例では、最終更新日時が 30 日以上前で、ストレージクラスがコールドアーカイブまたはディープコールドアーカイブではない追加可能オブジェクトをリスト化します。フィルター条件の順序にご注意ください。
ossutil ls oss://examplebucket/appendobjects/ -r -q --short-format --min-age=30d --metadata-exclude="x-oss-storage-class=*ColdArchive" --metadata-exclude="x-oss-sealed-time=*" --metadata-include="x-oss-object-type=Appendable"レスポンスの例:
oss://examplebucket/appendobjects/unsealed_object1.txt
oss://examplebucket/appendobjects/unsealed_object2.txt
oss://examplebucket/appendobjects/unsealed_object3.txtAPI
GetBucket (ListObjects) または ListObjectsV2 (GetBucketV2) API 操作を呼び出して、指定されたプレフィックスを持つすべてのオブジェクトを走査します。次の条件に基づいて結果をフィルターし、対象のオブジェクトを見つけます。
<Type>フィールドの値はAppendableです。<StorageClass>フィールドの値は、ColdArchiveまたはDeepColdArchiveではありません。<LastModified>フィールドの値が 30 日以上前です。応答には
<SealedTime>フィールドは含まれていません。
ステップ2:SealAppendObject 操作の実行
`SealAppendObject` 操作を実行して、追加可能オブジェクトを通常のオブジェクトに変換します。変換後、ライフサイクルルールを適用できるようになります。
ossutil
オブジェクトサイズの取得:
statコマンドを実行して、オブジェクトのContent-Lengthを取得します。この値は、SealAppendObject 操作のpositionパラメーターとして使用されます。ossutil stat oss://examplebucket/appendobjects/unsealed_object1.txtSealAppendObject 操作の実行:
invoke-operationコマンドを使用してSealAppendObjectAPI 操作を呼び出します。 前のステップのContent-Length(例:65536) をpositionパラメーターとして渡します。ossutil api invoke-operation --op-name seal --method POST --bucket examplebucket --key appendobjects/unsealed_object1.txt --parameters seal --parameters position=65536
API
オブジェクトサイズの取得: GetBucket (ListObjects) または ListObjectsV2 (GetBucketV2) API 操作の応答から、ターゲットオブジェクトの
<Size>値を取得します。SealAppendObject 操作の実行: 各オブジェクトに対して、SealAppendObject API 操作を呼び出します。 前の手順の
<Size>値を、リクエストのpositionパラメーターとして使用します。 これにより、オブジェクトが追加不可能な状態に変換されます。
ステップ3:ライフサイクルルールの設定
ライフサイクルルールを設定して、指定した期間が経過した後にオブジェクトを自動的にコールドアーカイブまたはディープコールドアーカイブのストレージクラスに移行します。
注:このルールは通常のオブジェクトに適用されます。通常のオブジェクトには、`PutObject` またはマルチパートアップロードを使用してアップロードされたオブジェクト、および追加不可能な状態に変換された追加可能オブジェクトが含まれます。ルール内のプレフィックスが十分に具体的であることを確認し、他のオブジェクトが誤って移行されるのを防いでください。
コンソール
OSS コンソールにログインします。
[バケット] をクリックし、次に `examplebucket` をクリックします。
を選択します。
[ルールの作成] をクリックします。次の表に従ってライフサイクルルールを設定します。他のパラメーターはデフォルト設定のままにします。
エリア
設定項目
設定方法
[基本設定]
[ステータス]
[開始] を選択します。
[ポリシー]
[オブジェクトプレフィックス] を選択します
[プレフィックス]
appendobjects/を入力します[現在のバージョンのポリシー]
オブジェクトのライフサイクル
[日数を指定] を選択します
[ライフサイクルベースのルール]
最終 [変更時刻] から 30 日後に、データを自動的に **コールドアーカイブ** に移行します。
[OK] をクリックします。
ossutil
lifecycle.xmlという名前のファイルを作成し、次の内容を追加します。このルールは、最終更新日が 30 日以上前の appendobjects/ プレフィックスを持つオブジェクトを、ColdArchiveストレージクラスに移行させます。<LifecycleConfiguration> <Rule> <ID>rule1</ID> <Prefix>appendobjects/</Prefix> <Status>Enabled</Status> <Transition> <Days>30</Days> <StorageClass>ColdArchive</StorageClass> </Transition> </Rule> </LifecycleConfiguration>examplebucketバケットにライフサイクルルールを適用するには、次のコマンドを実行します。ossutil api put-bucket-lifecycle --bucket examplebucket --lifecycle-configuration file://lifecycle.xml
API
対象のバケット examplebucket にルールを適用するには、PutBucketLifecycle API 操作を呼び出し、リクエストボディに XML コンテンツを含めます。
PUT /?lifecycle HTTP/1.1
Host: oss-examplebucket.oss.aliyuncs.com
Content-Length: 336
Date: Mon, 6 May 2025 15:23:20 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250506/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
<Rule>
<ID>rule1</ID>
<Prefix>appendobjects/</Prefix>
<Status>Enabled</Status>
<Transition>
<Days>30</Days>
<StorageClass>ColdArchive</StorageClass>
</Transition>
</Rule>
</LifecycleConfiguration>結果の確認
ライフサイクルルールを設定した後、ルールは翌日の早朝に有効になり、初めて実行されます。
ルールが有効になった後、移行が成功したことを確認できます。これを行うには、OSS コンソールまたは `ossutil stat` コマンドを使用して、対象オブジェクトのストレージクラスを確認します。