バケットライフサイクル

対象リージョン:東日本第3/西日本第3

バケット内のオブジェクトに対して有効期限を設定し、有効期限を過ぎたオブジェクトを自動的に削除することができます。

バージョン管理が有効なバケットでは以下の設定が利用できます。

  • Expiration設定

    設定された有効期限に達した場合、オブジェクトに対して削除マーカーが付与され、対象のオブジェクトは旧バージョンとして保持されます。

  • NoncurrentVersionExpiration設定

    旧バージョンとなった日からの保持期限を設定します。保持期限に達した場合は旧バージョンのオブジェクトは削除されます。

バージョン管理が無効なバケットでは、Expirationの期限に達した対象オブジェクトは削除されます。

注: バケットライフサイクルによる削除は、Expirationの期限に達したあとに対象オブジェクトが削除対象としてキューイングされ、非同期で処理されます。非同期での削除は基盤の負荷状況によっては数日かかることがあります。

オブジェクトに設定された有効期限を確認するには、HEAD Object または GET Object を使用します。

提供機能

機能 説明
ライフサイクルの設定

指定したバケットにライフサイクルを設定します。

ライフサイクルの設定取得

指定したバケットのライフサイクル設定を取得します。

ライフサイクルの設定削除

指定したバケットのライフサイクル設定を削除します

バケットライフサイクルの設定

記載項目

バケットライフサイクルはxml形式で以下の項目を利用して定義します。

項目 説明
LifecycleConfiguration

本項目の中にポリシー(Rule~Prefixの組合せ)を記載します。

Rule

本項目の中にポリシー(ID~Prefixの組合せ)を記載します。

ID

ルールの識別のために付ける任意の文字列を255文字以内で記載します。

Expiration

本項目の中にポリシー(DateまたはDays)を記載します。

Date

ルールが有効になる日時をタイムスタンプ形式で指定します。

Days

ルールの対象となるオブジェクトの有効期間を日数で指定します。

Filter

ルールを適用するオブジェクトを特定する場合に記載します。

AND

Filterの中で、prefixやtagの対象オブジェクトをAND条件で指定する場合に記載します。

Prefix

オブジェクトのプレフィックス名を記載します。

Tag

本項目の中にポリシー(Key~Valueの組合せ)を記載します。

Key

オブジェクトに設定されているキーを記載します。

Value

オブジェクトに設定されているキーに対する値を記載します。

NoncurrentVersionExpiration

本項目の中にポリシー(NoncurrentDays)を記載します。

NoncurrentDays

オブジェクトが最新バージョンでなくなってからの有効期限に指定する日数を数値で記載します。

Status

ルールの有効/無効(EnabledまたはDisabled)を記載します。

記載ルール

バケットライフサイクルの設定は、1 つ以上のライフサイクルルールで構成します。

<LifecycleConfiguration>
  <Rule>
     …
  </Rule>	
  <Rule>	
     …
  </Rule>	
</LifecycleConfiguration>
  • ルール(<Rule>)は最大1000 個記載できます。

  • <Rule>の中で<ID>、および<Status>の指定は必須です。

  • ルールが適用されるオブジェクトを特定するためには、<Filter>の中に、<Prefix>、および<Tag>を指定します。

  • オブジェクトの有効期限には、<Expiration>の中に<Date>、または<Days>を指定します。

    なお、1つの<Rule>の中に<Date>と<Days>は同時に指定できません。

  • オブジェクトが最新バージョンでなくなってからの有効期限には、<NoncurrentVersionExpiration>の中に<NoncurrentDays>を指定します。

全体の記述形式を以下に示します。

<LifecycleConfiguration >
  <Rule>
    <ID>string</ID>
    <Filter>
      <And>
        <Prefix>string</Prefix>
        <Tag>
          <Key>string</Key>
          <Value>string</Value>
        </Tag>
	   …
      </And>
      <Prefix>string</Prefix>
      <Tag>
        <Key>string</Key>
        <Value>string</Value>
      </Tag>
    </Filter>				
    <Expiration>
      <Date>timestamp</Date>
      <Days>integer</Days>
    </Expiration>		
    <NoncurrentVersionExpiration>
      <NoncurrentDays>integer</NoncurrentDays>
    </NoncurrentVersionExpiration>
        …
    <Status>string</Status>
        …
  </Rule>
      …
</LifecycleConfiguration>

バケットライフサイクルの設定例

例1:連携しない複数のルールを記載する

rule#1:オブジェクト名が"logdata/"で始まるオブジェクトを、格納されてから100日後にバケットから削除するルール

rule#2:オブジェクト名が"auditlog/"で始まり、タグ(<Tag>)がkey="auditkey"、Value="audittag"であるオブジェクトを、2025年3月31日9:00に削除するルール

<LifecycleConfiguration>
  <Rule>				
    <ID>rule#1</ID>			
      <Filter>	
        <Prefix>logdata/</Prefix>	
      </Filter>			
      <Expiration>			
        <Days>100</Days>		
      </Expiration>			
      <Status>Enabled</Status>			
  </Rule>				
  <Rule>				
    <ID>rule#2</ID>			
      <Filter>			
        <And>		
          <Prefix>auditlog/</Prefix>	
          <Tag>	
            <Key>auditkey</Key>
            <Value>audittag</Value>
          </Tag>	
        </And>		
      </Filter>			
      <Expiration>	
        <Date>2025-03-31T09:00:00Z</Date>	
      </Expiration>
      <Status>Enabled</Status>
  </Rule>				
</LifecycleConfiguration>
例2:連携する項目を指定した1つのルールを記載する

バージョン管理が有効なバケットで、オブジェクト名が"logs/"で始まるオブジェクトが、

最新バージョンがオブジェクトの格納3日経過後に削除され、

最新のバージョンでなくなってから2日後にバケットから削除されるルール

<LifecycleConfiguration>
  <Rule>
    <ID>expiration_3day</ID>
    <Prefix>logs/</Prefix>
    <Status>Enabled</Status>
    <Expiration>
      <Days>3</Days>
    </Expiration>
    <NoncurrentVersionExpiration>
      <NoncurrentDays>2</NoncurrentDays>
    </NoncurrentVersionExpiration>
  </Rule>
</LifecycleConfiguration>
ヒント:

削除マーカーとはバージョン管理されたオブジェクトのプレースホルダーです。

バージョン管理されていないバケットの場合、<Expiration>で設定した日時に達するとオブジェクトは完全に削除されます。

図: Expirationで"Days=3"とNoncurrentVersionExpirationで"NoncurrentDays=2"を組み合わせて設定した場合の動作例
例3:有効条件が異なる複数のルールを記載する

rule#1:<Rule>の中で<Filter></Filter>と指定した全オブジェクトに適用されるルール

rule#2:<Rule>の中で<Status>に"Disabled"と指定した無視されるルール

<LifecycleConfiguration>	
  <Rule>
    <ID>rule#1</ID>
       <Filter></Filter>
        <Expiration>	
          <Days>100</Days>	
        </Expiration>
     <Status>Enabled</Status>
  </Rule>
  <Rule>	
    <ID>rule#2</ID>	
    <Filter>	
        <Prefix>logs/</Prefix>
      </Filter>	
      <Expiration>	
        <Days>100</Days>	
      </Expiration>	
        <NoncurrentVersionExpiration>	
          <NoncurrentDays>10</NoncurrentDays>	
        </NoncurrentVersionExpiration>	
      <Status>Disabled</Status>	
  </Rule>	
</LifecycleConfiguration>
ヒント:
  • <Filter></Filter>と指定すると、全オブジェクトがルールの対象になります。

  • <Rule>の中で<Status>に"Disabled"を指定すると、そのルールは無視されます。

    一時的にルールを無効にしたい場合に有効です。

APIリファレンス

対象リージョン:東日本第3西日本第3

API詳細(Object)