ファイルの最終変更時刻または最終アクセス時刻に基づいてライフサイクルルールを作成し、バケット内の複数のファイルのストレージタイプを定期的に指定された値に変更したり、期限切れのオブジェクトとパーツを定期的に削除したりします。 これにより、ストレージコストを削減できます。 このトピックでは、PutBucketLifecycle 操作を呼び出して、バケットのライフサイクルルールを設定する方法について説明します。
使用上の注意
PutBucketLifecycle 操作は、バケットに設定されているライフサイクルルールの既存の設定を上書きします。 たとえば、Rule1 という名前のライフサイクルルールがバケットに設定されていて、Rule1 に基づいて Rule2 という名前のライフサイクルルールをバケットに設定する場合、次の操作を実行します。
GetBucketLifecycle 操作を呼び出して、Rule1 の設定をクエリします。
Rule1 に基づいて、バケットの Rule2 を設定します。
PutBucketLifecycle 操作を呼び出して、バケットのライフサイクルルールの設定を更新します。 Rule1 と Rule2 がバケットに設定されます。
ライフサイクルルールを使用して、不完全なマルチパートアップロードタスクでアップロードされたオブジェクトとパーツの有効期限を指定できます。
最終アクセス時刻または最終変更時刻に基づいて、オブジェクトのライフサイクルルールを設定できます。
権限
デフォルトでは、Alibaba Cloud アカウントにはフル権限があります。 Alibaba Cloud アカウントの RAM ユーザーまたは RAM ロールには、デフォルトでは権限がありません。 Alibaba Cloud アカウントまたはアカウント管理者は、RAM ポリシーまたはバケットポリシーを通じて操作権限を付与する必要があります。
API | 操作 | 説明 |
PutBucketLifecycle | oss:PutBucketLifecycle | バケットのライフサイクルルールを設定します。 |
リクエスト構文
PUT /?lifecycle HTTP/1.1
Date: GMT Date
Content-Length: ContentLength
Content-Type: application/xml
Authorization: SignatureValue
Host: 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>
</Rule>
</LifecycleConfiguration>リクエストヘッダー
ヘッダー | タイプ | 必須 | 例 | 説明 |
x-oss-allow-same-action-overlap | String | いいえ | true | 重複するプレフィックスを許可するかどうかを指定します。有効な値:
|
このリクエストには、Date や Authorization など、他の一般的なリクエストヘッダーが含まれています。 詳細については、「共通の HTTP ヘッダー」トピックの「共通のリクエストヘッダー」セクションをご参照ください。
リクエスト要素
要素 | タイプ | 必須 | 例 | 説明 |
LifecycleConfiguration | コンテナー | はい | N/A | ライフサイクル設定を格納するコンテナー。 コンテナーには最大 1,000 件のライフサイクルルール設定を格納できます。 子ノード: Rule 親ノード: なし |
Rule | コンテナー | はい | N/A | ライフサイクルルールを格納するコンテナー。 オブジェクトの有効期限からオブジェクトが削除されるまでの期間は、オブジェクトの有効期限からオブジェクトのストレージクラスが低頻度アクセス (IA) またはアーカイブに変更されるまでの期間よりも長くする必要があります。 子ノード: ID、Prefix、Status、Expiration 親ノード: LifecycleConfiguration |
ID | String | いいえ | rule1 | ライフサイクルルールの ID。 ID は最大 255 文字まで使用できます。 この要素を指定しない場合、またはこの要素を空のままにした場合、OSS はライフサイクルルールに一意の ID を自動的に生成します。 子ノード: なし 親ノード: Rule |
Prefix | String | いいえ | tmp/ | ルールが適用されるオブジェクトの名前のプレフィックス。 異なるルールで指定されたプレフィックスは重複できません。
子ノード: なし 親ノード: Rule |
Status | String | はい | Enabled | ルールを有効にするかどうかを指定します。有効な値:
親ノード: Rule |
Expiration | コンテナー | いいえ | N/A | オブジェクトの有効期限が切れたときに、ライフサイクルルールに一致するオブジェクトに対して OSS に実行させる削除操作。 バージョン管理されたバケット内のオブジェクトの場合、この要素で指定された削除操作は、オブジェクトの現在のバージョンに対してのみ実行されます。 オブジェクトの有効期限からオブジェクトが削除されるまでの期間は、オブジェクトの有効期限からオブジェクトのストレージクラスが IA またはアーカイブに変更されるまでの期間よりも長くする必要があります。 子ノード: Days、CreatedBeforeDate、ExpiredObjectDeleteMarker 親ノード: Rule |
Days | 正の整数 | Days または CreatedBeforeDate のいずれかが必要です | 1 | オブジェクトが最後に変更されてからライフサイクルルールが有効になるまでの日数。 IsAccessTime 要素が true に設定されている場合、Days 要素の値は、オブジェクトに最後にアクセスされてから指定された日数に基づいてライフサイクルルールが有効になることを指定します。 親ノード: Expiration または AbortMultipartUpload |
CreatedBeforeDate | String | Days または CreatedBeforeDate のいずれかが必要です | 2002-10-11T00:00:00.000Z | ライフサイクルルールが有効になる基準となる日付。 OSS は、最終変更日がこの日付より前のデータに対して指定された操作を実行します。 この要素の値は yyyy-MM-ddT00:00:00.000Z 形式です。 ISO 8601 規格で時間を指定します。 時刻は UTC で 00:00:00 である必要があります。 親ノード: Expiration または AbortMultipartUpload |
ExpiredObjectDeleteMarker | String | いいえ | true | 期限切れの削除マーカーを自動的に削除するかどうかを指定します。有効な値:
親ノード: Expiration |
Transition | コンテナー | いいえ | N/A | オブジェクトの有効期限が切れたときに、ライフサイクルルールに一致するオブジェクトのストレージクラスの変更。 標準オブジェクトのストレージクラスは、IA、アーカイブ、またはコールドアーカイブに変更できます。 オブジェクトの有効期限からオブジェクトのストレージクラスがアーカイブに変更されるまでの期間は、オブジェクトの有効期限からオブジェクトのストレージクラスが IA に変更されるまでの期間よりも長くする必要があります。 たとえば、有効期限後にストレージクラスが IA に変更されるオブジェクトの有効期間が 30 に設定されている場合、ストレージクラスがアーカイブに変更されるオブジェクトの有効期間は 30 より大きい値に設定する必要があります。 親ノード: Rule 子ノード: Days、CreatedBeforeDate、StorageClass 重要 重要 Days または CreatedBeforeDate のいずれかが必要です。 |
StorageClass | String | Transition または NoncurrentVersionTransition が指定されている場合は必須 | IA | オブジェクトが変更されるストレージタイプ。有効な値:
重要 IA バケット内のオブジェクトのストレージクラスは、アーカイブまたはコールドアーカイブにのみ変換できます。 親ノード: Transition |
AbortMultipartUpload | コンテナー | いいえ | N/A | パーツの有効期限が切れたときに、不完全なマルチパートアップロードタスクでアップロードされたパーツに対して OSS に実行させる削除操作。 子ノード: Days または CreatedBeforeDate 親ノード: Rule |
Tag | コンテナー | いいえ | N/A | ライフサイクルルールが適用されるオブジェクトのタグ。 複数のタグを指定できます。 親ノード: Rule 子ノード: Key と Value |
Key | String | Tag 要素が指定されている場合は必須 | TagKey1 | オブジェクトに指定されているタグのキー。 親ノード: Tag |
Value | String | Tag 要素が指定されている場合は必須 | TagValue1 | オブジェクトに指定されているタグの値。 親ノード: Tag |
NoncurrentVersionExpiration | コンテナー | いいえ | N/A | 以前のバージョンの有効期限が切れたときに、ライフサイクルルールに一致するオブジェクトの以前のバージョンに対して OSS に実行させる削除操作。 子ノード: NoncurrentDays |
NoncurrentVersionTransition | コンテナー | いいえ | 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 |
Filter | コンテナー | いいえ | N/A | オブジェクトのフィルタリングに使用する Not 要素を格納するコンテナー。 この要素は空のままにするか、単一の Not ノードのみを指定できます。 親ノード: Rule 子ノード: Not |
Not | コンテナー | いいえ | N/A | ライフサイクルルールが適用されないオブジェクトと一致する条件。 Filter 要素に値を指定する場合は、単一の Not ノードのみを指定する必要があります。 親ノード: Filter 子ノード: Prefix と Tag |
Prefix | String | はい | tmp/not/ | ライフサイクルルールが適用されないオブジェクトの名前のプレフィックス。 この要素は空のままにすることはできません。
親ノード: Not 子ノード: なし |
Tag | コンテナー | いいえ | N/A | ライフサイクルルールが適用されないオブジェクトのタグ。 単一のタグのみを指定するか、この要素を空のままにすることができます。 |
ObjectSizeGreaterThan | 正の整数 | いいえ | 500 | このルールが適用される最小オブジェクトサイズ。 1 つの値のみを指定するか、この要素を空のままにすることができます。 このパラメーターと ObjectSizeLessThan パラメーターの両方が設定されている場合、システムはオブジェクトサイズが指定された範囲内 (最小サイズより大きく、最大サイズより小さい) にあることを確認します。 このパラメーターと AllowSmallFile パラメーターは相互に排他的です。 親ノード: Filter 子ノード: なし |
ObjectSizeLessThan | 正の整数 | いいえ | 64000 | このルールが適用される最大オブジェクトサイズ。 1 つの値のみを指定するか、この要素を空のままにすることができます。 このパラメーターと ObjectSizeGreaterThan パラメーターの両方が設定されている場合、システムはオブジェクトサイズが指定された範囲内 (最小サイズより大きく、最大サイズより小さい) にあることを確認します。 このパラメーターと AllowSmallFile パラメーターは相互に排他的です。 親ノード: Filter 子ノード: なし |
レスポンスヘッダー
DescribeRegions リクエストへのレスポンスのすべてのヘッダーは、共通のレスポンスヘッダーです。 詳細については、「共通レスポンスヘッダー」をご参照ください。
例
リクエストの例
例 1: 最終変更時刻に基づいてライフサイクルルールを設定して、オブジェクトのストレージクラスのみを変換する
例 2: 最終変更時刻に基づいてライフサイクルルールを設定して、オブジェクトのみを削除する
例 3: 最終変更時刻に基づいてライフサイクルルールを設定して、オブジェクトのストレージクラスを変換し、オブジェクトを削除する
例 4: 最終変更時刻に基づいてライフサイクルルールを設定して、オブジェクトの以前のバージョンを削除し、削除マーカーを削除する
例 5: 最終変更時刻に基づいてライフサイクルルールを設定して、オブジェクトのストレージクラスを変換し、オブジェクトを削除する (特定のプレフィックスを含む名前のオブジェクトまたは特定のタグを持つオブジェクトを除く)
例 6: 最終アクセス時刻に基づいてライフサイクルルールを設定して、オブジェクトのストレージクラスを変換する
例 7: 最終変更時刻に基づいてライフサイクルルールを設定して、パーツを削除する
例 8: 最終変更時刻に基づいてライフサイクルルールを設定して、重複するプレフィックスを含む名前のオブジェクトを削除する
レスポンスの例
HTTP/1.1 200 OK
x-oss-request-id: 7D3435J59A9812BAD56E
Date: Mon, 6 May 2019 15:23:20 GMT
Content-Length: 0
Connection: keep-alive
Server: AliyunOSSOSS SDK
次のプログラミング言語の OSS SDK を使用して、PutBucketLifecycle 操作を呼び出すことができます。
ossutil
PutBucketLifecycle 操作に対応する ossutil コマンドについては、「put-bucket-lifecycle」をご参照ください。
リファレンス
ライフサイクルルールの詳細については、「ライフサイクル」をご参照ください。
エラーコード
エラーコード | HTTP ステータスコード | 説明 |
InvalidArgument | 400 | 考えられる原因:
|
AccessDenied | 403 | PutBucketLifecycle 操作を実行する権限がありません。 |
MalforedXML | 400 | ライフサイクルルールの XML 検証で MalformedXML エラーコードが返されます。 たとえば、バケット内のオブジェクトの最終アクセス時刻に基づいてバケットのライフサイクルルールを設定し、バケットのアクセストラッキングを有効にしていない場合、このエラーが発生します。 |