ファイルの最終変更時刻または最終アクセス時刻に基づいてライフサイクルルールを作成し、バケット内の複数のファイルのストレージクラスを指定された値に定期的に変更したり、期限切れのオブジェクトやパーツを定期的に削除したりします。 これにより、ストレージコストが削減されます。 このトピックでは、PutBucketLifecycle操作を呼び出してバケットのライフサイクルルールを設定する方法について説明します。
使用上の注意
バケットのライフサイクルルールを設定するには、
oss:PutBucketLifecycle
権限が必要です。 詳細については、「RAMポリシーの一般的な例」トピックの「RAMユーザーにカスタムポリシーをアタッチする」を参照してください。PutBucketLifecycle操作は、バケットに設定されているライフサイクルルールの既存の設定を上書きします。 たとえば、Rule1という名前のライフサイクルルールがバケットに設定されていて、Rule1に基づいてバケットにRule2という名前のライフサイクルルールを設定する場合は、次の操作を実行します。
GetBucketLifecycle操作を呼び出して、Rule1の設定を照会します。
Rule1に基づいてバケットのRule2を設定します。
PutBucketLifecycle操作を呼び出して、バケットのライフサイクルルール設定を更新します。 Rule1とRule2はバケットに設定されています。
ライフサイクルルールを使用して、不完全なマルチパートアップロードタスクでアップロードされるオブジェクトとパーツの有効期限を指定できます。
オブジェクトのライフサイクルルールは、最終アクセス時刻または最終変更時刻に基づいて設定できます。
リクエスト構文
PUT /? ライフサイクルHTTP/1.1
日付: GMT日付
Content-Length: ContentLength
Content-Type: application/xml
権限付与: SignatureValue
ホスト: BucketName.oss.aliyuncs.com
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
<Rule>
<ID>RuleID</ID>
<Prefix>Prefix</Prefix>
<Status>Status</Status>
<Expiration>
<Days>Days</Days>
</Expiration>
<Transition>
<Days>Days</Days>
<StorageClass>StorageClass</StorageClass>
</Transition>
<AbortMultipartUpload>
<Days>Days</Days>
</AbortMultipartUpload>
</ルール>
</LifecycleConfiguration>
リクエストヘッダー
ヘッダー | データ型 | 必須 | 例 | 説明 |
x-oss-allow-same-action-overlap | String | 任意 | true | 重複プレフィックスを許可するかどうかを指定します。 有効な値:
|
このリクエストには、DateやAuthorizationなどの他の一般的なリクエストヘッダーが含まれます。 詳細については、「共通HTTPヘッダー」トピックの「共通リクエストヘッダー」セクションをご参照ください。
リクエスト要素
要素 | データ型 | 必須 | 例 | 説明 |
LifecycleConfiguration | Container | 必須 | N/A | ライフサイクル設定を格納するコンテナー。 コンテナーには、最大1,000のライフサイクルルールの設定を保存できます。 子ノード: ルール 親ノード: なし |
ルール | Container | 必須 | N/A | ライフサイクルルールを格納するコンテナー。 オブジェクトの有効期限から削除までの期間は、オブジェクトの有効期限からオブジェクトのストレージクラスが低頻度アクセス (IA) またはアーカイブに変更されるまでの期間よりも長くする必要があります。 子ノード: ID、プレフィックス、ステータス、および有効期限 親ノード: LifecycleConfiguration |
ID | String | 任意 | rule1 | ライフサイクルルールのID。 IDの長さは最大255文字です。 この要素を指定しない場合、またはこの要素を空のままにすると、ライフサイクルルールの一意のIDが自動的に生成されます。 子ノード: なし 親ノード: ルール |
接頭辞 | String | 任意 | tmp / | ルールが適用されるオブジェクトの名前のプレフィックス。 異なるルールで指定されたプレフィックスは重複できません。
子ノード: なし 親ノード: ルール |
Status | String | 必須 | Enabled | ルールを有効にするかどうかを指定します。 有効な値:
親ノード: ルール |
有効期限 | Container | 任意 | N/A | オブジェクトの有効期限が切れたときにライフサイクルルールに一致するオブジェクトに対してOSSで実行する削除操作。 バージョン管理されたバケット内のオブジェクトの場合、この要素で指定された削除操作は、現在のバージョンのオブジェクトに対してのみ実行されます。 オブジェクトが期限切れになってから削除されるまでの期間は、オブジェクトが期限切れになってからオブジェクトのストレージクラスがIAまたはArchiveに変更されるまでの期間よりも長くする必要があります。 子ノード: Days、CreatedBeforeDate、またはExpiredObjectDeleteMarker 親ノード: ルール |
日 | 正の整数 | DaysまたはCreatedBeforeDateのいずれかが必要です | 1 | オブジェクトが最後に変更されてからライフサイクルルールが有効になるまでの日数。 IsAccessTime要素がtrueに設定されている場合、Days要素の値は、オブジェクトが最後にアクセスされてから指定された日数に基づいてライフサイクルルールが有効になることを指定します。 親ノード: 有効期限またはAbortMultipartUpload |
CreatedBeforeDate | String | DaysまたはCreatedBeforeDateのいずれかが必要です | 2002-10-11T00:00:00.000Z | ライフサイクルルールが有効になる日付。 OSSは、最終変更日がこの日付より前のデータに対して指定された操作を実行します。 この要素の値は、yyyy-MM-ddT00:00:00.000Z形式です。 ISO 8601標準で時間を指定します。 時間はUTCで00:00:00である必要があります。 親ノード: 有効期限またはAbortMultipartUpload |
ExpiredObjectDeleteMarker | String | 任意 | true | 期限切れの削除マーカーを自動的に削除するかどうかを指定します。 有効な値:
親ノード: 有効期限 |
Transition | Container | 任意 | N/A | オブジェクトの有効期限が切れたときのライフサイクルルールに一致するオブジェクトのストレージクラスの変更。 Standardオブジェクトのストレージクラスは、IA、Archive、またはCold Archiveに変更できます。 オブジェクトが期限切れになってからオブジェクトのストレージクラスがアーカイブに変更されるまでの期間は、オブジェクトが期限切れになってからオブジェクトのストレージクラスがIAに変更されるまでの期間よりも長くなければなりません。 たとえば、ストレージクラスが有効期間後にIAに変更されたオブジェクトの有効期間が30に設定されている場合、ストレージクラスがアーカイブに変更されたオブジェクトの有効期間は30を超える値に設定する必要があります。 親ノード: ルール 子ノード: Days、CreatedBeforeDate、およびStorageClass 重要 重要 DaysまたはCreatedBeforeDateのいずれかが必要です。 |
StorageClass | String | TransitionまたはNoncurrentVersionTransitionが指定されている場合はYes | IA | オブジェクトが変更されるストレージクラス。 有効な値:
重要 IAバケット内のオブジェクトのストレージクラスをアーカイブのみまたはコールドアーカイブに変換できます。 親ノード: 移行 |
AbortMultipartUpload | Container | 任意 | N/A | パーツの有効期限が切れたときに、不完全なマルチパートアップロードタスクでアップロードされたパーツに対してOSSで実行する削除操作。 子ノード: DaysまたはCreatedBeforeDate 親ノード: ルール |
タグ | Container | 任意 | N/A | ライフサイクルルールが適用されるオブジェクトのタグ。 複数のタグを指定できます。 親ノード: ルール 子ノード: キーと値 |
Key | String | Tag要素が指定されている場合ははい | TagKey1 | オブジェクトに指定されたタグのキー。 親ノード: タグ |
値 | String | Tag要素が指定されている場合ははい | TagValue1 | オブジェクトに指定されたタグの値。 親ノード: タグ |
NoncurrentVersionExpiration | Container | 任意 | N/A | 以前のバージョンの有効期限が切れたときにライフサイクルルールに一致する以前のバージョンのオブジェクトに対してOSSで実行する削除操作。 子ノード: NoncurrentDays |
NoncurrentVersionTransition | Container | 任意 | N/A | 以前のバージョンの有効期限が切れたときにライフサイクルルールに一致するオブジェクトの以前のバージョンのストレージクラスが変更されたこと。 以前のバージョンのストレージクラスは、IAまたはアーカイブに変更できます。 以前のバージョンが期限切れになってから以前のバージョンのストレージクラスがアーカイブに変更されるまでの期間は、以前のバージョンが期限切れになってから以前のバージョンのストレージクラスがIAに変更されるまでの期間よりも長くなければなりません。 子ノード: NoncurrentDaysとStorageClass |
NoncurrentDays | String | NoncurrentVersionExpirationまたはNoncurrentVersionTransitionが指定されている場合ははい | 10 | オブジェクトが以前のバージョンになってからライフサイクルルールが有効になるまでの日数。 IsAccessTime要素がtrueに設定されている場合、NoncurrentDays要素は、オブジェクトが最後にアクセスされてから指定された日数に基づいて有効になります。 親ノード: NoncurrentVersionTransitionおよびNoncurrentVersionExpiration |
IsAccessTime | String | 任意 | true | ライフサイクルルールが最終アクセス時刻に基づいてオブジェクトに適用されるかどうかを指定します。 有効な値:
親ノード: TransitionまたはNoncurrentVersionTransition |
ReturnToStdWhenVisit | String | 任意 | false | オブジェクトにアクセスした後、非標準オブジェクトのストレージクラスを標準に戻すかどうかを指定します。 この要素は、IsAccessTime要素がtrueに設定されている場合にのみ有効です。 有効な値:
親ノード: TransitionまたはNoncurrentVersionTransition |
AllowSmallFile | String | 任意 | false | サイズが64 KB未満のオブジェクトのストレージクラスを、最終アクセス時刻に基づいてIA、アーカイブ、またはコールドアーカイブに変更するかどうかを指定します。 有効な値:
親ノード: TransitionまたはNoncurrentVersionTransition |
フィルター | Container | 任意 | N/A | オブジェクトのフィルタリングに使用されるNot要素を格納するコンテナー。 この要素は空のままにするか、1つのNotノードのみを指定できます。 親ノード: ルール 子ノード: |
ない | Container | 任意 | N/A | ライフサイクルルールが適用されないオブジェクトと一致する条件。 Filter要素の値を指定する場合は、Notノードを1つだけ指定する必要があります。 親ノード: フィルター 子ノード: プレフィックスとタグ |
接頭辞 | String | 必須 | tmp/not / | ライフサイクルルールが適用されないオブジェクトの名前のプレフィックス。 この要素を空のままにすることはできません。
親ノード: 子ノード: なし |
タグ | Container | 任意 | N/A | ライフサイクルルールが適用されないオブジェクトのタグ。 1つのタグのみを指定するか、この要素を空のままにします。 |
レスポンスヘッダー
このリクエストには、共通のレスポンスヘッダーのみが含まれます。 詳細については、「共通HTTPヘッダー」をご参照ください。
例
サンプルリクエスト
例1: 最終変更時刻に基づいてライフサイクルルールを設定し、オブジェクトのストレージクラスのみを変換します
例2: 最終変更時刻に基づいてライフサイクルルールを設定し、オブジェクトのみを削除する
例3: 最終変更時刻に基づいてライフサイクルルールを設定し、オブジェクトのストレージクラスを変換し、オブジェクトを削除します
例4: 前回変更した時刻に基づいてライフサイクルルールを設定し、以前のバージョンのオブジェクトを削除し、削除マーカーを削除します
例5: 最終変更時刻に基づいてライフサイクルルールを設定し、オブジェクトのストレージクラスを変換し、オブジェクトを削除します。名前が特定のプレフィックスを含むオブジェクトまたは特定のタグを持つオブジェクトを除外します
例6: 最終アクセス時間に基づいてライフサイクルルールを設定し、オブジェクトのストレージクラスを変換します
例7: 最後に変更された部品の削除時刻に基づいてライフサイクルルールを設定する
例8: 最後に変更された時刻に基づいてライフサイクルルールを設定し、名前にプレフィックスが重複しているオブジェクトを削除します
サンプル応答
HTTP/1.1 200 OK
x-oss-request-id: 7D3435J59A9812BAD56E
日付: 5月6日月曜日2019 15:23:20 GMT
コンテンツ長: 0
接続: キープアライブ
サーバー: AliyunOSS
SDK
次のプログラミング言語のOSS SDKを使用して、PutBucketLifecycle操作を呼び出すことができます。
参考資料
ライフサイクルルールの詳細については、「概要」をご参照ください。
エラーコード
エラーコード | HTTPステータスコード | 説明 |
InvalidArgument | 400 | 考えられる原因:
|
AccessDenied | 403 | PutBucketLifecycle操作を実行する権限がありません。 |
MalforedXML | 400 | MalformedXMLエラーコードは、ライフサイクルルールのXML検証時に返されます。 たとえば、バケット内のオブジェクトの最終アクセス時刻に基づいてバケットのライフサイクルルールを設定し、バケットのアクセス追跡を有効にしない場合、このエラーが発生します。 |