すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:PutBucketLifecycle

最終更新日:Feb 23, 2024

ファイルの最終変更時刻または最終アクセス時刻に基づいてライフサイクルルールを作成し、バケット内の複数のファイルのストレージクラスを指定された値に定期的に変更したり、期限切れのオブジェクトやパーツを定期的に削除したりします。 これにより、ストレージコストが削減されます。 このトピックでは、PutBucketLifecycle操作を呼び出してバケットのライフサイクルルールを設定する方法について説明します。

使用上の注意

  • バケットのライフサイクルルールを設定するには、oss:PutBucketLifecycle権限が必要です。 詳細については、「RAMポリシーの一般的な例」トピックの「RAMユーザーにカスタムポリシーをアタッチする」を参照してください。

  • PutBucketLifecycle操作は、バケットに設定されているライフサイクルルールの既存の設定を上書きします。 たとえば、Rule1という名前のライフサイクルルールがバケットに設定されていて、Rule1に基づいてバケットにRule2という名前のライフサイクルルールを設定する場合は、次の操作を実行します。

    1. GetBucketLifecycle操作を呼び出して、Rule1の設定を照会します。

    2. Rule1に基づいてバケットのRule2を設定します。

    3. 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

重複プレフィックスを許可するかどうかを指定します。 有効な値:

  • true: オーバーラップされたプレフィックスは許可されます。

  • false: 重複プレフィックスは使用できません。

このリクエストには、DateやAuthorizationなどの他の一般的なリクエストヘッダーが含まれます。 詳細については、「共通HTTPヘッダー」トピックの「共通リクエストヘッダー」セクションをご参照ください。

リクエスト要素

要素

データ型

必須

説明

LifecycleConfiguration

Container

必須

N/A

ライフサイクル設定を格納するコンテナー。 コンテナーには、最大1,000のライフサイクルルールの設定を保存できます。

子ノード: ルール

親ノード: なし

ルール

Container

必須

N/A

ライフサイクルルールを格納するコンテナー。 オブジェクトの有効期限から削除までの期間は、オブジェクトの有効期限からオブジェクトのストレージクラスが低頻度アクセス (IA) またはアーカイブに変更されるまでの期間よりも長くする必要があります。

子ノード: ID、プレフィックス、ステータス、および有効期限

親ノード: LifecycleConfiguration

ID

String

任意

rule1

ライフサイクルルールのID。 IDの長さは最大255文字です。 この要素を指定しない場合、またはこの要素を空のままにすると、ライフサイクルルールの一意のIDが自動的に生成されます。

子ノード: なし

親ノード: ルール

接頭辞

String

任意

tmp /

ルールが適用されるオブジェクトの名前のプレフィックス。 異なるルールで指定されたプレフィックスは重複できません。

  • Prefix要素を指定した場合、ルールはバケット内の指定されたプレフィックスを名前に含むオブジェクトにのみ適用されます。

  • Prefix要素を指定しない場合、このルールはバケット内のすべてのオブジェクトに適用されます。

子ノード: なし

親ノード: ルール

Status

String

必須

Enabled

ルールを有効にするかどうかを指定します。 有効な値:

  • Enabled: ルールを有効にします。 OSSは定期的にルールを実行します。

  • 無効: ルールを有効にしません。 OSSはルールを無視します。

親ノード: ルール

有効期限

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

期限切れの削除マーカーを自動的に削除するかどうかを指定します。 有効な値:

  • true: 期限切れの削除マーカーは自動的に削除されます。 この要素をtrueに設定した場合、DaysまたはCreatedBeforeDate要素は指定できません。

  • false: 期限切れの削除マーカーは自動的に削除されません。 この要素をfalseに設定する場合は、DaysまたはCreatedBeforeDate要素を指定する必要があります。

親ノード: 有効期限

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

  • アーカイブ

  • ColdArchive

  • DeepColdArchive

重要

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

ライフサイクルルールが最終アクセス時刻に基づいてオブジェクトに適用されるかどうかを指定します。 有効な値:

  • true: このルールは、最終アクセス時刻に基づいてオブジェクトに適用されます。

  • false (デフォルト): このルールは、最終変更時刻に基づいてオブジェクトに適用されます。

親ノード: TransitionまたはNoncurrentVersionTransition

ReturnToStdWhenVisit

String

任意

false

オブジェクトにアクセスした後、非標準オブジェクトのストレージクラスを標準に戻すかどうかを指定します。 この要素は、IsAccessTime要素がtrueに設定されている場合にのみ有効です。 有効な値:

  • true: オブジェクトのストレージクラスをStandardに変更します。

  • false: オブジェクトのストレージクラスをStandardに変更しません。

親ノード: TransitionまたはNoncurrentVersionTransition

AllowSmallFile

String

任意

false

サイズが64 KB未満のオブジェクトのストレージクラスを、最終アクセス時刻に基づいてIA、アーカイブ、またはコールドアーカイブに変更するかどうかを指定します。 有効な値:

  • true: 64 KB未満のオブジェクトのストレージクラスをIA、アーカイブ、またはコールドアーカイブに変更します。 オブジェクトの最小課金サイズは64 KBです。 64 KB 未満のオブジェクトは 64 KB として課金されます。 サイズが64 KB以上のオブジェクトは、実際のサイズに基づいて課金されます。 この要素をtrueに設定すると、ストレージ料金が増加する可能性があります。

  • false: 64 KB未満のオブジェクトのストレージクラスは変更されません。

親ノード: TransitionまたはNoncurrentVersionTransition

フィルター

Container

任意

N/A

オブジェクトのフィルタリングに使用されるNot要素を格納するコンテナー。 この要素は空のままにするか、1つのNotノードのみを指定できます。

親ノード: ルール

子ノード:

ない

Container

任意

N/A

ライフサイクルルールが適用されないオブジェクトと一致する条件。 Filter要素の値を指定する場合は、Notノードを1つだけ指定する必要があります。

親ノード: フィルター

子ノード: プレフィックスとタグ

接頭辞

String

必須

tmp/not /

ライフサイクルルールが適用されないオブジェクトの名前のプレフィックス。 この要素を空のままにすることはできません。

  • RuleノードでPrefix要素の値を指定する場合、Notノードで指定されているPrefix要素の値の前に、Ruleノードで指定されているPrefix要素の値を指定する必要があります。 たとえば、Ruleノードで指定されているPrefix要素の値がdirの場合、Notノードで指定されているPrefix要素の値にはdirのプレフィックスを付ける必要があります。 例: dir1およびdir2

  • Notノードでタグが指定されていない場合、Notノードで指定されているPrefix要素の値は、Ruleノードで指定されているPrefix要素の値と異なる必要があります。

親ノード:

子ノード: なし

タグ

Container

任意

N/A

ライフサイクルルールが適用されないオブジェクトのタグ。 1つのタグのみを指定するか、この要素を空のままにします。

レスポンスヘッダー

このリクエストには、共通のレスポンスヘッダーのみが含まれます。 詳細については、「共通HTTPヘッダー」をご参照ください。

サンプルリクエスト

例1: 最終変更時刻に基づいてライフサイクルルールを設定し、オブジェクトのストレージクラスのみを変換します

次のコードは、バケット内のログプレフィックスを名前に含むオブジェクトのストレージクラスのみを、オブジェクトが最後に変更されてから30日後にIAに変更するようにライフサイクルルールを設定する方法の例を示しています。

PUT /? ライフサイクルHTTP/1.1
ホスト: oss-example.oss.aliyuncs.com
コンテンツ-長さ: 336
日付: 5月6日月曜日2019 15:23:20 GMT
承認: OSSWnjl3fg9fdv8fg4b ****:Phuu8bBhS8dsff2a ****
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID> ルール </ID>
    <プレフィックス> ログ /</プレフィックス>
    <Status>Enabled</Status>
    <Transition>
      <Days>30</Days>
      <StorageClass>IA</StorageClass>
    </Transition>    
  </ルール>
</LifecycleConfiguration> 

例2: 最終変更時刻に基づいてライフサイクルルールを設定し、オブジェクトのみを削除する

次のコードは、オブジェクトが最後に変更されてから90日後にバケット内のログプレフィックスを名前に含むオブジェクトのみを削除するようにライフサイクルルールを設定する方法の例を示しています。

PUT /? ライフサイクルHTTP/1.1
ホスト: oss-example.oss.aliyuncs.com
コンテンツ-長さ: 336
日付: 5月6日月曜日2019 15:23:20 GMT
承認: OSSWnjl3fg9fdv8fg4b ****:Phuu8bBhS8dsff2a ****
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID> ルール </ID>
    <プレフィックス> ログ /</プレフィックス>
    <Status>Enabled</Status>
    <Expiration>
      <Days>90</Days>
    </Expiration>    
 </ルール>
</LifecycleConfiguration> 

例3: 最終変更時刻に基づいてライフサイクルルールを設定し、オブジェクトのストレージクラスを変換し、オブジェクトを削除します

次のコードでは、バケット内のログプレフィックスを名前に含むオブジェクトのストレージクラスを、オブジェクトが最後に変更されてから30日後にIAに変更し、IAオブジェクトのストレージクラスを60日後にアーカイブに変更し、3,600日後にアーカイブオブジェクトを削除するようにライフサイクルルールを設定する方法の例を示します。

PUT /? ライフサイクルHTTP/1.1
ホスト: oss-example.oss.aliyuncs.com
コンテンツ-長さ: 336
日付: 5月6日月曜日2019 15:23:20 GMT
承認: OSSWnjl3fg9fdv8fg4b ****:Phuu8bBhS8dsff2a ****
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID> ルール </ID>
    <プレフィックス> ログ /</プレフィックス>
    <Status>Enabled</Status>
    <Transition>
      <Days>30</Days>
      <StorageClass>IA</StorageClass>
    </Transition>
    <Transition>
      <Days>60</Days>
      <StorageClass>Archive</StorageClass>
    </Transition>
    <Expiration>
      <Days>3600</Days>
    </Expiration>
  </ルール>
</LifecycleConfiguration> 

例4: 前回変更した時刻に基づいてライフサイクルルールを設定し、以前のバージョンのオブジェクトを削除し、削除マーカーを削除します

次のコードでは、以前のバージョンになってから5日後に以前のバージョンのオブジェクトを削除し、削除マーカーを削除するようにライフサイクルルールを設定する方法の例を示します。

PUT /? ライフサイクルHTTP/1.1
ホスト: oss-example.oss.aliyuncs.com
コンテンツ-長さ: 336
日付: 5月6日月曜日2019 15:23:20 GMT
承認: OSSWnjl3fg9fdv8fg4b ****:Phuu8bBhS8dsff2a ****
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID> ルール </ID>
    <Prefix></Prefix>
    <Status>Enabled</Status>
    <Expiration>
      <ExpiredObjectDeleteMarker>true</ExpiredObjectDeleteMarker>
    </Expiration>
    <NoncurrentVersionExpiration>
      <NoncurrentDays>5</NoncurrentDays>
    </NoncurrentVersionExpiration>    
  </ルール>
</LifecycleConfiguration> 

例5: 最終変更時刻に基づいてライフサイクルルールを設定し、オブジェクトのストレージクラスを変換し、オブジェクトを削除します。名前が特定のプレフィックスを含むオブジェクトまたは特定のタグを持つオブジェクトを除外します

次のコードは、最終変更時刻に基づいてライフサイクルルールを設定する方法の例を示しています。 ライフサイクルルールは、バケット内の次の条件を満たすオブジェクトのストレージクラスを、オブジェクトが最後に変更されてから30日後にアーカイブに変更し、100日後にオブジェクトを削除するために使用されます。 フィルターノードのNot要素は、ログプレフィックス、key1キー、およびvalue1値を指定するために使用されます。

PUT /? ライフサイクルHTTP/1.1
ホスト: oss-example.oss.aliyuncs.com
コンテンツ-長さ: 336
日付: 5月6日月曜日2019 15:23:20 GMT
承認: OSSWnjl3fg9fdv8fg4b ****:Phuu8bBhS8dsff2a ****
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID> ルール </ID>
    <Prefix></Prefix>
    <Status>Enabled</Status>
    <フィルター>
      <しない>
        <Prefix> ログ </Prefix>
        <Tag><Key>key1</Key><Value>value1</Value></Tag>
      </Not>
    </フィルター>    
    <Transition>
      <Days>30</Days>
      <StorageClass>Archive</StorageClass>
    </Transition>
    <Expiration>
      <日> 100</日>
    </Expiration>
  </ルール>
</LifecycleConfiguration> 

例6: 最終アクセス時間に基づいてライフサイクルルールを設定し、オブジェクトのストレージクラスを変換します

次のコードは、オブジェクトが最後にアクセスされてから30日後に、ログプレフィックスを含む名前のオブジェクトをIAに変更するライフサイクルルールを設定する方法の例を示しています。 次のコードでは、オブジェクトに再度アクセスしたときに、オブジェクトのストレージクラスをStandardに変更する方法の例も示しています。

PUT /? ライフサイクルHTTP/1.1
ホスト: oss-example.oss.aliyuncs.com
コンテンツ-長さ: 336
日付: 5月6日月曜日2019 15:23:20 GMT
承認: OSSWnjl3fg9fdv8fg4b ****:Phuu8bBhS8dsff2a ****
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID> ルール </ID>
    <プレフィックス> ログ /</プレフィックス>
    <Status>Enabled</Status>
    <Transition>
      <Days>30</Days>
      <StorageClass>IA</StorageClass>
      <IsAccessTime>true</IsAccessTime>
      <ReturnToStdWhenVisit>true</ReturnToStdWhenVisit>
    </Transition>
  </ルール>
</LifecycleConfiguration> 

例7: 最後に変更された部品の削除時刻に基づいてライフサイクルルールを設定する

次のコードは、30日より前のバケットで生成されたパーツを削除するための最終変更時刻に基づいてライフサイクルルールを設定する方法の例を示しています。

PUT /? ライフサイクルHTTP/1.1
ホスト: oss-example.oss.aliyuncs.com
コンテンツ-長さ: 336
日付: 5月6日月曜日2019 15:23:20 GMT
承認: OSSWnjl3fg9fdv8fg4b ****:Phuu8bBhS8dsff2a ****
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID> ルール </ID>
    <プレフィックス>/</プレフィックス>
    <Status>Enabled</Status>    
    <AbortMultipartUpload>
      <Days>30</Days>
    </AbortMultipartUpload>
 </ルール>
</LifecycleConfiguration> 

例8: 最後に変更された時刻に基づいてライフサイクルルールを設定し、名前にプレフィックスが重複しているオブジェクトを削除します

次のコードでは、最後に変更されてから180日後にdir1/ ディレクトリ内のオブジェクトを削除し、最後に変更されてから30日後にdir1/dir2/ サブディレクトリ内のオブジェクトを削除するようにライフサイクルルールを設定する例を示します。

PUT /? ライフサイクルHTTP/1.1
ホスト: oss-example.oss.aliyuncs.com
コンテンツ-長さ: 336
日付: 5月6日月曜日2019 15:23:20 GMT
承認: OSSWnjl3fg9fdv8fg4b ****:Phuu8bBhS8dsff2a ****
x-oss-allow-same-action-overlap: true
<?xml version="1.0" encoding="UTF-8"?>
<LifecycleConfiguration>
  <Rule>
    <ID>Rule1</ID>
    <プレフィックス> dir1/</プレフィックス>
    <Status>Status</Status>
    <Expiration>
      <日> 180</日>
    </Expiration>
  </Rule>
  <Rule>
    <ID>Rule2</ID>
    <プレフィックス> dir1/dir2/</プレフィックス>
    <Status>Status</Status>
    <Expiration>
      <Days>30</Days>
    </Expiration>
  </ルール>
</LifecycleConfiguration> 
説明

x-oss-allow-same-action-overlapヘッダーがfalseに設定されている場合、dir1/dir2/ サブディレクトリ内のオブジェクトが2つの削除ルールと同時に一致することが検出されます。 この場合、OSSは2つの削除ルールを拒否し、[同じアクションタイプの有効期限] エラーが報告されます。

サンプル応答

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

考えられる原因:

  • Standardバケット内のオブジェクトのストレージクラスは、StandardからIAまたはArchiveに変更できます。 標準バケットのライフサイクルルールを設定して、バケット内のオブジェクトのストレージクラスをさまざまな時点でIAおよびアーカイブに変更できます。 オブジェクトのストレージクラスがアーカイブに変更される指定された時点は、オブジェクトのストレージクラスがIAに変更される指定された時点よりも後でなければなりません。

  • オブジェクトが期限切れになってから削除されるまでの期間は、オブジェクトが期限切れになってからオブジェクトのストレージクラスがIAまたはArchiveに変更されるまでの期間よりも長くする必要があります。

AccessDenied

403

PutBucketLifecycle操作を実行する権限がありません。 oss:PutBucketLifecycle権限を持つユーザーのみがライフサイクルルールを設定できます。

MalforedXML

400

MalformedXMLエラーコードは、ライフサイクルルールのXML検証時に返されます。 たとえば、バケット内のオブジェクトの最終アクセス時刻に基づいてバケットのライフサイクルルールを設定し、バケットのアクセス追跡を有効にしない場合、このエラーが発生します。