

# オブジェクトのライフサイクルの管理
<a name="object-lifecycle-mgmt"></a>

S3 ライフサイクルは、オブジェクトを低コストのストレージクラスに移行するか、ユーザーに代わって期限切れのオブジェクトを削除することで、ライフサイクル全体でコスト効率の高い方法でオブジェクトを保存するのに役立ちます。オブジェクトのライフサイクルを管理するには、バケットの S3 ライフサイクル設定を作成します。**S3 ライフサイクル設定は、Amazon S3 がオブジェクトのグループに適用するアクションを定義するルールのセットです。次の 2 種類のアクションがあります。
+ **Transition actions** — 別のストレージクラスにオブジェクトを移行するタイミングを定義します。例えば、作成から 30 日後に S3 標準 – IA ストレージクラスにオブジェクトを移行するか、作成から 1 年後に S3 Glacier Flexible Retrieval ストレージクラスにオブジェクトをアーカイブするよう選択することができます。詳細については、[[Amazon S3 ストレージクラスの理解と管理](storage-class-intro.md)] を参照してください。

  ライフサイクル移行リクエストにはコストが発生します。料金については、[[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)] を参照してください。
+ [**有効期限切れアクション**] — このアクションではオブジェクトの有効期限を定義します。Amazon S3 はユーザーに代わって有効期限切れのオブジェクトを削除します。例えば、オブジェクトが規制コンプライアンス期間にわたって保存された後に、オブジェクトの有効期限が切れるように選択できます。詳細については、「[オブジェクトの有効期限](lifecycle-expire-general-considerations.md)」を参照してください。

  最小ストレージ期間でストレージクラスのオブジェクトを期限切れにする場合にのみ、ライフサイクルの有効期限切れに関連する潜在的なコストが発生します。詳細については、「[最小ストレージ期間料金](lifecycle-expire-general-considerations.md#lifecycle-expire-minimum-storage)」を参照してください。

**重要**  
**汎用バケット** – バケットポリシーを使用して、S3 ライフサイクルルールによる削除や移行を防ぐことはできません。例えば、バケットポリシーがすべてのプリンシパルのすべてのアクションを拒否する場合でも、S3 ライフサイクル設定は通常どおり機能します。

**既存のオブジェクトと新しいオブジェクト**  
ライフサイクル設定をバケットに追加すると、設定ルールは既存のオブジェクトとそれ以降に追加されるオブジェクトの両方に適用されます。例えば、オブジェクトが作成から 30 日後に有効期限を迎えるようにする失効アクションを備えたライフサイクル設定ルールを本日追加すると、Amazon S3 により作成から 30 日以上が経過している既存のオブジェクトがすべて削除キューに追加されます。

**請求の変更**  
オブジェクトがライフサイクルアクションの対象になるときと、Amazon S3 がオブジェクトを転送または期限切れにするまでの間に遅延がある場合は、オブジェクトがライフサイクルアクションの対象となり次第すぐに請求の変更が適用されます。例えば、オブジェクトの有効期限がスケジュール済みであり、Amazon S3 がそのオブジェクトを直ちに有効期限切れにしない場合、有効期限が過ぎてもストレージに対する料金は発生しません。

この動作の例外として、S3 Intelligent-Tiering ストレージクラスに移行するライフサイクルルールがある場合があります。オブジェクトが S3 Intelligent-Tiering に移行するまで、請求の変更は行われません。S3 ライフサイクルルールの詳細については、[[ライフサイクル設定の要素](intro-lifecycle-rules.md)] を参照してください。

**注記**  
ライフサイクル移行にはデータ取り出し料金はかかりません。ただし、`PUT`、`COPY`、またはライフサイクルルールを使用してデータを任意の S3 ストレージクラスに移動する場合、リクエストごとに取り込み料金が発生します。オブジェクトをいずれかのストレージクラスに移動する前に、取り込みコストや移行コストについて検討してください。コストに関する考慮事項の詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」を参照してください。

**ライフサイクルルールの影響のモニタリング**  
アクティブなライフサイクルルールによって行われた更新の影響をモニタリングするには、「[ライフサイクルルールによって実行されたアクションをモニタリングするにはどうすればよいですか？](troubleshoot-lifecycle.md#troubleshoot-lifecycle-2)」を参照してください。

## オブジェクトの完全なライフサイクルの管理
<a name="lifecycle-config-overview-what"></a>

S3 ライフサイクル設定ルールを使用すると、より安価なストレージクラスへのオブジェクトの移行、またはアーカイブや削除を Amazon S3 に指定できます。例えば、次のようになります。
+ 定期的なログをバケットにアップロードする場合、アプリケーションは 1 週間または 1 か月間、それを必要とする可能性があります。その後は、削除することができます。
+ ドキュメントには、一定の期間中に頻繁にアクセスされるものがあります。その後は、頻繁にアクセスされません。ある時点で、リアルタイムでアクセスする必要はないものの、所属している組織や規則によって、特定の期間アーカイブしておくよう要求される場合があります。その期間が過ぎれば、削除してかまいません。
+ 主にアーカイブ目的のため、ある種類のデータを Amazon S3 にアップロードする場合があります。例えば、デジタルメディア、財務や医療の記録、生のゲノムシーケンスデータ、データベースの長期バックアップ、法規制準拠のために保管が必要なデータをアーカイブできます。

これらの S3 ライフサイクルアクションを組み合わせることにより、オブジェクトの完全なライフサイクルを管理できます。たとえば、作成するオブジェクトに、よく定義されたライフサイクルがあるとします。最初に、オブジェクトは 30 日の期間にわたり頻繁にアクセスされます。次に、オブジェクトは最大 90 日間まで、頻繁にアクセスされません。その後は、オブジェクトは不要になるため、アーカイブまたは削除することができます。

このシナリオでは、S3 Intelligent-Tiering、S3 Standard – IA、または S3 1 ゾーン – IA のストレージへの最初の移行アクション、アーカイブのための S3 Glacier ストレージへの別の移行アクション、および失効アクションを指定する S3 ライフサイクルのルールを作成できます。あるストレージクラスから別のストレージクラスにオブジェクトを移動すると、ストレージコストを節約できます。コストに関する考慮事項の詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」を参照してください。

**Topics**
+ [オブジェクトの完全なライフサイクルの管理](#lifecycle-config-overview-what)
+ [Amazon S3 ライフサイクルを使用したオブジェクトの移行](lifecycle-transition-general-considerations.md)
+ [オブジェクトの有効期限](lifecycle-expire-general-considerations.md)
+ [バケットに S3 ライフサイクル設定を設定する](how-to-set-lifecycle-configuration-intro.md)
+ [S3 ライフサイクルは他のバケット設定とどのように相互作用するか](lifecycle-and-other-bucket-config.md)
+ [S3 ライフサイクルイベント通知の設定](lifecycle-configure-notification.md)
+ [ライフサイクル設定の要素](intro-lifecycle-rules.md)
+ [Amazon S3 がライフサイクル設定の競合を処理する方法](lifecycle-conflicts.md)
+ [S3 ライフサイクル設定の例](lifecycle-configuration-examples.md)
+ [Amazon S3 ライフサイクル問題のトラブルシューティング](troubleshoot-lifecycle.md)

# Amazon S3 ライフサイクルを使用したオブジェクトの移行
<a name="lifecycle-transition-general-considerations"></a>

S3 ライフサイクルの設定に移行アクションを追加して、別の Amazon S3 ストレージクラスにオブジェクトを移行するように Amazon S3 に指定できます。ストレージクラスの詳細については、「[Amazon S3 ストレージクラスの理解と管理](storage-class-intro.md)」を参照してください。この方法で S3 ライフサイクル設定を使用する場合の例を次に示します。
+ これらのオブジェクトのアクセス頻度が低いことがわかった場合は、オブジェクトを S3 Standard – IA ストレージクラスに移行できます。
+ リアルタイムでアクセスする必要のないオブジェクトは、S3 Glacier Flexible Retrieval ストレージクラスまたは S3 Glacier Deep Archive ストレージクラスへのアーカイブを推奨します。

**注記**  
暗号化済みオブジェクトは、ストレージクラスの移行プロセス全体を通して暗号化されたままになります。

## サポートされている移行
<a name="lifecycle-general-considerations-transition-sc"></a>

S3 ライフサイクル設定では、1 つのストレージクラスから別のストレージクラスにオブジェクトを移行し、ストレージのコストを節約できるルールを定義できます。オブジェクトのアクセスパターンが不明、またはアクセスパターンが時間の経過とともに変化している場合、コストを自動的に削減するためにオブジェクトを S3 Intelligent-Tiering ストレージクラスに移行できます。ストレージクラスについては、[[Amazon S3 ストレージクラスの理解と管理](storage-class-intro.md)] を参照してください。

Amazon S3 は、以下の図のようにストレージクラス間の移行のためのウォーターフォールモデルをサポートします。

![\[Amazon S3 ストレージクラスウォーターフォールグラフィック。\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/lifecycle-transitions-v4.png)


### サポートされているライフサイクル移行
<a name="supported-lifecycle-transitions"></a>

Amazon S3 では、S3 ライフサイクル設定を使用したストレージクラス間の以下のライフサイクル移行をサポートします。
+ S3 標準ストレージクラスを S3 Standard–IA、S3 Intelligent-Tiering、S3 One Zone-IA、S3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval、または S3 Glacier Deep Archive ストレージクラスに移行する。
+ S3 標準 – IA ストレージクラスを S3 Intelligent-Tiering、S3 1 ゾーン – IA、S3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval、または S3 Glacier Deep Archive ストレージクラスに移行する。
+ S3 Intelligent-Tiering ストレージクラスは、S3 Intelligent-Tiering アクセス層に応じて異なるストレージクラスに移行できます。アクセス層ごとに次の移行が可能です。
  + 高頻度アクセス層または低頻度アクセス層から S3 One Zone-IA、S3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval、または S3 Glacier Deep Archive ストレージクラスへ。
  + アーカイブインスタントアクセス層から、S3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval、または S3 Glacier Deep Archive ストレージクラスへ。
  + アーカイブアクセス層から S3 Glacier Flexible Retrieval、または S3 Glacier Deep Archive ストレージクラスへ。
  + Deep Archive アクセス層から S3 Glacier Deep Archive ストレージクラスへ。
+ S3 One Zone-IA ストレージクラスを S3 Glacier Flexible Retrieval または S3 Glacier Deep Archive ストレージクラスに移行する。
+ S3 Glacier Instant Retrieval ストレージクラスを S3 Glacier Flexible Retrieval または S3 Glacier Deep Archive ストレージクラスに移行する。
+ S3 Glacier Flexible Retrieval から S3 Glacier Deep Archive ストレージクラスに移行する。

**注記**  
バージョニングが有効なバケットまたはバージョニングが停止されたバケットの場合、レプリケーションステータスが `Pending` のオブジェクトを移行することはできません。

## 移行に関する制約と考慮事項
<a name="lifecycle-configuration-constraints"></a>

ライフサイクルストレージクラス移行には、次の制約があります。

**128 KB 未満のオブジェクトは、デフォルトではどのストレージクラスにも移行されません。**  
Amazon S3 は S3 ライフサイクル設定にデフォルトの動作を適用し、128 KB 未満のオブジェクトが任意のストレージクラスに移行されないようにします。128 KB 未満のオブジェクトの移行はお勧めしません。オブジェクトごとに移行リクエストが課金されるためです。つまり、オブジェクトが小さいほど、移行コストがストレージの節約額を上回る可能性があります。移行リクエストのコストの詳細については、[Amazon S3 料金](https://aws.amazon.com/s3/pricing/)ページの**ストレージとリクエスト**タブの「**リクエストとデータの取得**」を参照してください。

 小さいオブジェクトを移行できるようにするには、カスタム最小サイズ (`ObjectSizeGreaterThan`) または最大サイズ (`ObjectSizeLessThan`) を指定する[オブジェクトサイズフィルター](intro-lifecycle-rules.md#intro-lifecycle-rules-filter)をライフサイクル移行ルールに追加できます。詳細については、「[例: 128 KB 未満のオブジェクトの移行を許可する](lifecycle-configuration-examples.md#lc-small-objects)」を参照してください。

**注記**  
2024 年 9 月、Amazon S3 は小さなオブジェクトのデフォルトの移行動作を次のように更新しました。  
**デフォルトの移行動作の更新** — 2024 年 9 月以降、デフォルトの動作により、128 KB 未満のオブジェクトが任意のストレージクラスに移行されることを回避します。
**以前のデフォルトの移行動作** — 2024 年 9 月以前は、デフォルトの動作により、128 KB 未満のオブジェクトは S3 Glacier Flexible Retrieval および S3 Glacier Deep Archive ストレージクラスにのみ移行できました。
2024 年 9 月より前に作成された設定は、変更しない限り、以前の移行動作を保持します。つまり、ルールを作成、編集、または削除すると、設定のデフォルトの移行動作が更新された動作に変わります。ユースケースで必要な場合は、128KB 未満のオブジェクトが S3 Glacier Flexible Retrieval および S3 Glacier Deep Archive に移行するように、デフォルトの移行動作を変更できます。これを行うには、[PutBucketLifecycleConfiguration](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html) リクエストでオプションの `x-amz-transition-default-minimum-object-size` ヘッダーを使用します。

**オブジェクトは、S3 Standard–IA または S3 One Zone-IA に移行する前に、30 日間保存する必要があります。**  
S3 標準 - IA または S3 1 ゾーン - IA にオブジェクトを移行する前に、これらのオブジェクトを少なくとも 30 日間 Amazon S3 に保存する必要があります。例えば、作成から 1 日後にオブジェクトを S3 標準 – IA ストレージクラスに移行するライフサイクルルールを作成することはできません。Amazon S3 は最初の 30 日間はこの移行をサポートしません。新しいオブジェクトはアクセス頻度が高く、S3 標準 – IA または S3 1 ゾーン – IA ストレージに適した期間よりも早く削除されることが多いためです。

同様に、(バージョニング対応のバケットで) 以前のオブジェクトを移行する場合、少なくとも 30 日は最新でないオブジェクトのみを S3 Standard – IA または S3 1 ゾーン – IA ストレージに移行できます。すべてのストレージクラスの最小ストレージ期間のリストについては、「[Amazon S3 ストレージクラスの比較](storage-class-intro.md#sc-compare)」を参照してください。

**最小ストレージ期間より前にオブジェクトを移行すると料金が発生します。**  
特定のストレージクラスには、オブジェクトストレージの最小期間があります。最小期間より前にこれらのストレージクラスからオブジェクトを移行すると、その期間の残りの期間に対して課金されます。どのストレージクラスに最小ストレージ期間があるかの詳細については、「[Amazon S3 ストレージクラスの比較](storage-class-intro.md#sc-compare)」を参照してください。

最小ストレージ期間が経過する前に、オブジェクトをあるストレージクラスから別のストレージクラスに移行する単一のライフサイクルルールを作成することはできません。

 例えば、S3 Glacier Instant Retrieval の最小ストレージ期間は 90 日間です。4 日後にオブジェクトを S3 Glacier Instant Retrieval に移行し、20 日後にオブジェクトを S3 Glacier Deep Archive に移行するライフサイクルルールを指定することはできません。この場合、S3 Glacier Deep Archive の移行は、少なくとも 94 日後に行う必要があります。

2 つのルールを指定してこれを達成できますが、最小ストレージ期間の料金が発生します。コストに関する考慮事項の詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」を参照してください。

S3 ライフサイクルの作成に関する詳細については、「[バケットに S3 ライフサイクル設定を設定する](how-to-set-lifecycle-configuration-intro.md)」を参照してください。

## S3 Glacier Flexible Retrieval と S3 Glacier Deep Archive ストレージクラスへの移行 (オブジェクトのアーカイブ)
<a name="before-deciding-to-archive-objects"></a>

S3 ライフサイクル設定を使用すると、オブジェクトをアーカイブ用に S3 Glacier または S3 Glacier Deep Archive のストレージクラスに移行できます。

オブジェクトをアーカイブする前に、以下の関連する考慮事項のセクションを確認してください。

### 一般的な考慮事項
<a name="transition-glacier-general-considerations"></a>

オブジェクトをアーカイブする前に検討する必要のある一般的な考慮事項を以下に示します。
+ 暗号化済みオブジェクトは、ストレージクラスの移行プロセス全体を通して暗号化されたままになります。
+ S3 Glacier または S3 Glacier Deep Archive ストレージクラスに保存されているオブジェクトはリアルタイムでは利用できません。

  アーカイブされたオブジェクトは Amazon S3 オブジェクトですが、アーカイブされたオブジェクトにアクセスする前に、まずその一時コピーを復元する必要があります。復元されたオブジェクトのコピーは、復元リクエストで指定した期間内のみ利用できます。その後、Amazon S3 によって一時コピーが削除され、オブジェクトは Amazon S3 Glacier Flexible Retrieval にアーカイブされたまま残ります。

  Amazon S3 コンソールを使用して、またはプログラムのコード内で AWS SDK ラッパーライブラリや Amazon S3 REST API を使用して、オブジェクトを復元することができます。詳細については、「[アーカイブされたオブジェクトの復元](restoring-objects.md)」を参照してください。
+ S3 Glacier Flexible Retrieval ストレージクラスに格納されているオブジェクトは、S3 Glacier Deep Archive ストレージクラスにのみ移行できます。

  S3 ライフサイクル設定ルールを使用した場合、S3 Glacier から S3 Glacier Deep Archive ストレージクラスにのみオブジェクトのストレージクラスを変換できます。S3 Glacier に格納されているオブジェクトのストレージクラスを S3 Glacier Deep Archive 以外のストレージクラスに変更する場合は、まず復元オペレーションを使用してオブジェクトの一時的なコピーを作成する必要があります。その後、コピーオペレーションを使用して、ストレージクラスとして S3 Standard、S3 Intelligent-Tiering、S3 Standard – IA、S3 1 ゾーン – IA、または低冗長化を指定しているオブジェクトを上書きします。
+ S3 Glacier Deep Archive ストレージクラスへのオブジェクトの移行は一方向のみです。

  S3 ライフサイクル設定ルールを使用して、オブジェクトのストレージクラスを S3 Glacier Deep Archive からその他のストレージクラスに変換することはできません。アーカイブされたオブジェクトのストレージクラスをその他のストレージクラスに変更する場合、まず復元オペレーションを使用してオブジェクトの一時コピーを作成する必要があります。その後、コピーオペレーションを使用して、ストレージクラスとして S3 Standard、S3 Intelligent-Tiering、S3 標準 – IA、S3 1 ゾーン – IA、 S3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval、または Reduced Redundancy Storage を指定しているオブジェクトを上書きします。
**注記**  
Amazon S3 コンソールでは、S3 Glacier Flexible Retrieval ストレージクラスまたは S3 Glacier Deep Archive ストレージクラス内のオブジェクトに対する、復元したオブジェクトのコピー操作はサポートしていません。このタイプのコピー操作には、AWS Command Line Interface (AWS CLI)、AWS SDK、または REST API を使用します。

  S3 Glacier および S3 Glacier Deep Archive ストレージクラスに保存されているオブジェクトは、Amazon S3 でのみ表示され、使用できます。個々の Amazon Glacier サービスから使用することはできません。

  これらは Amazon S3 オブジェクトであるため、Amazon S3 コンソールまたは Amazon S3 API を使用することによってのみアクセスできます。アーカイブされたオブジェクトに、個々の Amazon Glacier コンソールまたは Amazon Glacier API 経由でアクセスすることはできません。

### コストに関する考慮事項
<a name="glacier-pricing-considerations"></a>

アクセス頻度の高いデータを数か月あるいは数年間アーカイブする場合、S3 Glacier および S3 Glacier Deep Archive ストレージクラスを使用する事でストレージコストを削減できます。ただし、S3 Glacier Flexible Retrieval または S3 Glacier Deep Archive ストレージクラスが適切であることを確認するために、以下の点を考慮してください。
+ [**ストレージオーバーヘッド料金**] － オブジェクトを S3 Glacier または S3 Glacier Deep Archive ストレージクラスに移行すると、そのオブジェクトを管理するメタデータを収容するために、各オブジェクトに対して一定量のストレージが追加されます。
  + S3 Glacier または S3 Glacier Deep Archive にアーカイブされたオブジェクトごとに、Amazon S3 ではオブジェクトの名前とその他のメタデータに 8 KB のストレージを使用します。Amazon S3 でこのメタデータを保存する目的は、ユーザーが Amazon S3 API を使用して、アーカイブされたオブジェクトのリアルタイムのリストを取得できるようにすることです。詳細については、[[GET Bucket (List Objects)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html)] を参照してください。この追加のストレージに対しては、S3 Standard 料金が発生します。
  +  S3 Glacier または S3 Glacier Deep Archive にアーカイブされるオブジェクトごとに、Amazon S3 はインデックスおよび関連するメタデータ用に 32 KB のストレージを追加します。この追加データは、オブジェクトを特定して復元するのに必要です。この追加ストレージに対しては、S3 Glacier Flexible Retrieval または S3 Glacier Deep Archive のレートが課金されます。

  小さいオブジェクトをアーカイブする場合は、これらのストレージ料金を考慮する必要があります。オーバーヘッドコストを削減するには、多数の小さいオブジェクトを少数の大きいオブジェクトに集約する方法があります。
+ [**オブジェクトをアーカイブしておく日数**] — S3 Glacier Flexible Retrieval および S3 Glacier Deep Archive は長期間のアーカイブを行うソリューションです。最小ストレージ期間は、S3 Glacier ストレージクラスの場合は 90 日、S3 Glacier Deep Archive の場合は 180 日です。Amazon Glacier にアーカイブされているデータの削除は、削除するオブジェクトが最小ストレージ期間より長い期間アーカイブされている場合は無料です。アーカイブされたオブジェクトを最小ストレージ期間以内に削除または上書きする場合は、Amazon S3 によって比例配分された早期削除料金が課金されます。早期削除料金の詳細については、「Amazon Glacier から格納後 90 日未満のオブジェクトを削除するにはいくらかかりますか?」を参照してください。質問については、[[Amazon S3 のよくある質問](https://aws.amazon.com/s3/faqs/#Amazon_S3_Glacier)] を参照してください。
+ [**S3 Glacier Flexible Retrieval および S3 Glacier Deep Archive 移行リクエスト料金**] — S3 Glacier Flexible Retrieval または S3 Glacier Deep Archive ストレージクラスに移行するオブジェクトごとに 1 つの移行リクエストが作成されます。アーカイブリクエストごとにコストが発生します。多数のオブジェクトを移行する場合は、リクエストのコストを考慮する必要があります。小さなオブジェクト、特に 128KB 未満のオブジェクトを含むオブジェクトを混在させてアーカイブする場合は、ライフサイクルオブジェクトサイズフィルタを使用して移行から小さなオブジェクトを除外し、リクエストコストを削減することをお勧めします。
+ [**S3 Glacier Flexible Retrieval および S3 Glacier Deep Archive データ復元料金**] — S3 Glacier Flexible Retrieval および S3 Glacier Deep Archive は、頻繁にアクセスしないデータの長期アーカイブ用に設計されています。データ復元料金の詳細については、「Amazon Glacier からのデータの復元には、どれだけコストがかかりますか?」を参照してください。質問については、[[Amazon S3 のよくある質問](https://aws.amazon.com/s3/faqs/#Amazon_S3_Glacier)] を参照してください。Amazon Glacier からデータを復元する方法については、[[アーカイブされたオブジェクトの復元](restoring-objects.md)] を参照してください。

**注記**  
S3 ライフサイクルは、オブジェクトを S3 Glacier Flexible Retrieval および S3 Glacier Deep Archive に非同期的に移行します。S3 ライフサイクル設定ルールによる移行の日付と、物理的な移行の日付の間には、遅延が発生する場合があります。この場合、ルールで指定された移行日に基づいて、移行元のストレージクラスのデフォルトレートが課金されます。

Amazon S3 製品詳細ページに、Amazon S3 オブジェクトをアーカイブする場合の料金表情報と計算例が掲載されています。詳細については、以下の各トピックを参照してください。
+  Amazon Glacier にアーカイブされた Amazon S3 オブジェクトのストレージ料金はどのように計算されますか? 質問については、[[Amazon S3 のよくある質問](https://aws.amazon.com/s3/faqs/#Amazon_S3_Glacier)] を参照してください。
+  Amazon Glacier から格納後 90 日未満のオブジェクトを削除するにはいくらかかりますか? 質問については、[[Amazon S3 のよくある質問](https://aws.amazon.com/s3/faqs/#Amazon_S3_Glacier)] を参照してください。
+  Amazon Glacier からデータを取り出すのにどれだけのコストがかかりますか? 質問については、[[Amazon S3 のよくある質問](https://aws.amazon.com/s3/faqs/#Amazon_S3_Glacier)] を参照してください。
+  標準ストレージクラスと別のストレージクラスのストレージコストを示す [Amazon S3 の料金](https://aws.amazon.com/s3/pricing/) 

### アーカイブされたオブジェクトの復元
<a name="restore-glacier-objects-concepts"></a>

アーカイブされたオブジェクトにはリアルタイムでアクセスできません。まず復元リクエストを開始してから、リクエストで指定した期間中にオブジェクトの一時コピーが利用できるようになるまで待ちます。復元されたオブジェクトの一時コピーの取得後も、オブジェクトのストレージクラスは S3 Glacier または S3 Glacier Deep Archive が保持されます。([https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html) または [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html) API オペレーションリクエストは、S3 Glacier Flexible Retrieval または S3 Glacier Deep Archive をストレージクラスとして返します)。

**注記**  
アーカイブを復元する場合、アーカイブの費用 (S3 Glacier Flexible Retrieval または S3 Glacier Deep Archive 料金) の他に、一時的に復元されたコピーの費用 (S3 標準ストレージ料金) も発生します。料金については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」を参照してください。

オブジェクトのコピーは、プログラムによって、あるいは Amazon S3 コンソールを使用して復元できます。Amazon S3 は、各オブジェクトに対して一度に 1 つの復元リクエストのみを処理します。詳細については、[[アーカイブされたオブジェクトの復元](restoring-objects.md)] を参照してください。

# オブジェクトの有効期限
<a name="lifecycle-expire-general-considerations"></a>

移行アクションを S3 ライフサイクル設定に追加して、有効期間終了時にオブジェクトを削除するように Amazon S3 に指示できます。ライフサイクル設定に基づいて、オブジェクトの存続期間が終了すると、Amazon S3 はバケットの [S3 バージョニング](Versioning.md)状態に応じて `Expiration` アクションを実行します。
+ **バージョニングされていないバケット** – Amazon S3 はオブジェクトを削除キューに追加して非同期的に削除し、オブジェクトを完全に削除します。
+ **バージョニングが有効なバケット** – 現在のオブジェクトバージョンが削除マーカーではない場合、Amazon S3 は固有のバージョン ID を持つ削除マーカーを追加します。これにより、最新のバージョンが最新以外のバージョンとなり、削除マーカーが最新バージョンになります。
+ **バージョニングが停止されたバケット** — Amazon S3 はバージョン ID として null を使用する削除マーカーを作成します。この削除マーカーは、バージョン階層においてあらゆるオブジェクトバージョンをバージョン ID null に置き換えるため、オブジェクトが効率的に削除されます。

バージョニング対応のバケット (つまり、バージョニングが有効であるかバージョニングが停止されている) の場合、Amazon S3 による `Expiration` アクションの処理方法を決める考慮事項がいくつかあります。バージョニングが有効なバケットまたはバージョニングが停止されたバケットには、以下が適用されます。
+ オブジェクトの有効期限は、オブジェクトの最新のバージョンにのみ適用されます(最新以外のバージョンには影響しません)。
+ 1 つ以上のオブジェクトバージョンがあり、削除マーカーが最新バージョンである場合、Amazon S3 はアクションを実行しません。
+ 現在のオブジェクトバージョンが唯一のオブジェクトバージョンであり、削除マーカーでもある場合 (「*期限切れオブジェクト削除マーカー*」とも呼ばれます。すべてのオブジェクトバージョンが削除され、削除マーカーのみ残ります)、Amazon S3 は期限切れのオブジェクト削除マーカーを削除します。また、`Expiration` アクションを使用して、期限切れオブジェクト削除マーカーをすべて削除するよう Amazon S3 に指示することもできます。例については、「[バージョニングが有効なバケットで期限切れのオブジェクト削除マーカーを削除する](lifecycle-configuration-examples.md#lifecycle-config-conceptual-ex7)」を参照してください。
+ アクション要素 `NoncurrentVersionExpiration` を使用すると、Amazon S3 が最新以外のオブジェクトのバージョンを永続的に削除するように指示できます。このように削除されたオブジェクトは復元することはできません。この有効期限切れは、オブジェクトが最新でなくなった以降の特定の日数に基づいて設定できます。日数以外にも、保持する最新以外のバージョンの最大数 (1～100 の間) を指定することもできます。この値は、Amazon S3 で関連付けられたアクションが実行できるまでに、最新でないバージョンがいくつ必要かを指定します。最新以外のバージョンの最大数を指定するには、`Filter` 要素も指定する必要があります。`Filter` 要素を指定しないで最新以外のバージョンの最大数を指定すると、Amazon S3 で `InvalidRequest` エラーが発生します。アクション要素 `NoncurrentVersionExpiration` の使用方法の詳細については、「[ライフサイクルアクションを記述する要素](intro-lifecycle-rules.md#intro-lifecycle-rules-actions)」を参照してください。
+ Amazon S3 は、S3 オブジェクトロック設定が適用されており、最新でないバージョンのオブジェクトに対しては、アクションを実行しません。
+ `Pending` レプリケーションステータスのオブジェクトの場合、オブジェクトの現在のバージョンまたは以前のバージョンに対して Amazon S3 はアクションを実行しません。

詳細については、「[S3 バージョニングによる複数のバージョンのオブジェクトの保持](Versioning.md)」を参照してください。

**重要**  
S3 ライフサイクル設定に複数のルールがある場合、1 つのオブジェクトが同じ日に複数の S3 ライフサイクルアクションの対象になることがあります。このような場合、Amazon S3 は以下の一般的なルールに従います。  
完全な削除は、移行より優先されます。
移行は、[削除マーカー](DeleteMarker.md)の作成より優先されます。
オブジェクトが S3 Glacier Flexible Retrieval と S3 Standard-IA (または S3 One Zone-IA) 移行の両方の対象になる場合、Amazon S3 は S3 Glacier Flexible Retrieval 移行を選択します。
 例については「[重複するフィルタ、競合するライフサイクルアクションの例](lifecycle-conflicts.md#lifecycle-config-conceptual-ex5)」を参照してください。

**既存のオブジェクトと新しいオブジェクト**  
ライフサイクル設定をバケットに追加すると、設定ルールは既存のオブジェクトとそれ以降に追加されるオブジェクトの両方に適用されます。例えば、特定のプレフィックスが付いたオブジェクトが作成から 30 日後に有効期限を迎えるようにする失効アクションを備えたライフサイクル設定ルールを本日追加すると、Amazon S3 により作成から 30 日以上が経過し、指定されたプレフィックスを持つ既存のオブジェクトがすべて削除キューに追加されます。

**重要**  
バケットポリシーを使用して、S3 ライフサイクルルールによる削除や移行を防ぐことはできません。例えば、バケットポリシーがすべてのプリンシパルのすべてのアクションを拒否する場合でも、S3 ライフサイクル設定は通常どおり機能します。

## オブジェクトの有効期限を確認する方法
<a name="lifecycle-expire-when"></a>

オブジェクトの現在のバージョンに設定されている有効期限を確認するには、[https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html) または [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html) の API オペレーションを使用します。これらの API オペレーションでは、オブジェクトの現在のバージョンがキャッシュ可能でなくなる日時が指定されたレスポンスヘッダーが返されます。

**注記**  
有効期限が切れる日と Amazon S3 がオブジェクトを削除する日との間に遅延が生じることがあります。期限切れのオブジェクトに関連付けられている有効期限切れ、またはストレージ期間に対する料金は請求されません。
ライフサイクルルールを更新、無効化、または削除する前に、`LIST` API オペレーション ([https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html) など) または [S3 インベントリを使用したデータのカタログ化と分析](storage-inventory.md) を使用して、ユースケースに基づき、Amazon S3 が移行済みで対象となるオブジェクトの有効期限が切れていることを確認します。

## 最小ストレージ期間料金
<a name="lifecycle-expire-minimum-storage"></a>

S3 Standard – IA、または S3 1 ゾーン – IA のストレージにあった期間が 30 日未満のオブジェクトを失効させる S3 ライフサイクル失効ルールを作成すると、30 日間の料金が発生します。S3 Glacier ストレージにあった期間が 90 日未満のオブジェクトを失効させるライフサイクル有効期限ルールを作成すると、90 日間の料金が発生します。S3 Glacier Deep Archive ストレージにあった期間が 180 日未満のオブジェクトを失効させるライフサイクル失効ルールを作成すると、180 日間の料金が発生します。

詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」を参照してください。

# バケットに S3 ライフサイクル設定を設定する
<a name="how-to-set-lifecycle-configuration-intro"></a>

Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、AWS SDK、または Amazon S3 REST API を使用して、バケットに Amazon S3 ライフサイクル設定を指定できます。S3 ライフサイクル設定については、「[オブジェクトのライフサイクルの管理](object-lifecycle-mgmt.md)」を参照してください。

**注記**  
ディレクトリバケットのライフサイクル設定を表示または編集するには、AWS CLI、AWS SDK、または Amazon S3 REST API を使用します。詳細については、「[ディレクトリバケットの S3 ライフサイクルの使用](directory-buckets-objects-lifecycle.md)」を参照してください。

S3 ライフサイクル設定では、ライフサイクルルールを使用して、オブジェクトの存続期間中に Amazon S3 が実行するアクションを定義します。**例えば、オブジェクトを別のストレージクラスに移行したり、オブジェクトをアーカイブしたり、指定した期間後にオブジェクトを期限切れ (削除) したりするルールを定義できます。

## S3 ライフサイクルに関する考慮事項
<a name="lifecycle-considerations"></a>

ライフサイクル設定を設定する前に、次の点に注意してください。

**ライフサイクル設定の伝播の遅延**  
バケットに対してライフサイクル設定を追加する場合、新しい、あるいは更新された S3 ライフサイクル設定がすべての Amazon S3 システムに完全に伝達されるまでには、通常、多少のタイムラグがあります。ライフサイクル設定が完全に有効になるまで、数分間程度の遅延を想定してください。この遅延は、S3 ライフサイクル設定を削除するときにも発生することがあります。

**移行または有効期限の遅延**  
ライフサイクルルールが満たされてから、ルールのアクションが完了するまでに遅延が生じる場合があります。例えば、ライフサイクルルールによって一連のオブジェクトの有効期限が 1 月 1 日に切れるとします。有効期限ルールは 1 月 1 日に満たされますが、Amazon S3 は数日後または数週間後までこれらのオブジェクトを実際に削除しない場合があります。この遅延は、S3 ライフサイクルがオブジェクトを移行または有効期限のためのキューに非同期的に入れるために発生します。請求の変更は、通常、アクションが完了していなくても、ライフサイクルルールが満たされた際に適用されます。詳細については、「[請求の変更](#lifecycle-billing)」を参照してください。アクティブなライフサイクルルールによって行われた更新の影響をモニタリングするには、「[ライフサイクルルールによって実行されたアクションをモニタリングするにはどうすればよいですか？](troubleshoot-lifecycle.md#troubleshoot-lifecycle-2)」を参照してください。

**ライフサイクルルールの更新、無効化、または削除**  
ライフサイクルルールを無効にする、あるいは削除すると、わずかなタイムラグの後に、Amazon S3 は新しいオブジェクトの削除や移行のスケジューリングを停止します。スケジュール済みのオブジェクトはスケジュール解除され、削除または移行されません。

**注記**  
ライフサイクルルールを更新、無効化、または削除する前に、`LIST` API オペレーション ([https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectVersions.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html) など) または [S3 インベントリを使用したデータのカタログ化と分析](storage-inventory.md) を使用して、ユースケースに基づき、Amazon S3 が移行済みで対象となるオブジェクトの有効期限が切れていることを確認します。ライフサイクルルールの更新、無効化、削除に問題がある場合は、「[Amazon S3 ライフサイクル問題のトラブルシューティング](troubleshoot-lifecycle.md)」を参照してください。

**既存のオブジェクトと新しいオブジェクト**  
ライフサイクル設定をバケットに追加すると、設定ルールは既存のオブジェクトとそれ以降に追加されるオブジェクトの両方に適用されます。例えば、特定のプレフィックスが付いたオブジェクトが作成から 30 日後に有効期限を迎えるようにする失効アクションを備えたライフサイクル設定ルールを本日追加すると、Amazon S3 により作成から 30 日以上が経過し、指定されたプレフィックスを持つ既存のオブジェクトがすべて削除キューに追加されます。

**ライフサイクルルールの影響のモニタリング**  
アクティブなライフサイクルルールによって行われた更新の影響をモニタリングするには、「[ライフサイクルルールによって実行されたアクションをモニタリングするにはどうすればよいですか？](troubleshoot-lifecycle.md#troubleshoot-lifecycle-2)」を参照してください。

**請求の変更**  
ライフサイクル設定のルールが満たされてから、実際にアクションが実行されるまでの間には、遅延が発生する場合があります。ただし、アクションが実行されていなくても、ライフサイクル設定のルールが満たされた段階で、請求にはすぐに変更が反映されます。

たとえば、オブジェクトの有効期限が切れると、オブジェクトがすぐに削除されなくても、そのストレージは課金対象から外されます。同様に、オブジェクトの移行期間を過ぎると、オブジェクトがすぐに S3 Glacier Flexible Retrieval ストレージクラスに移行されていなくても、S3 Glacier Flexible Retrieval ストレージ料金が請求されます。

ただし、S3 Intelligent-Tiering ストレージクラスへのライフサイクルの移行については例外です。オブジェクトが S3 Intelligent-Tiering ストレージクラスに移行するまで、請求の変更は行われません。

**複数のルールまたは競合するルール**  
S3 ライフサイクル設定に複数のルールがある場合、1 つのオブジェクトが同じ日に複数の S3 ライフサイクルアクションの対象になることがあります。このような場合、Amazon S3 は以下の一般的なルールに従います。
+ 完全な削除は、移行より優先されます。
+ 移行は、[削除マーカー](DeleteMarker.md)の作成より優先されます。
+ オブジェクトが S3 Glacier Flexible Retrieval と S3 Standard-IA (または S3 One Zone-IA) 移行の両方の対象になる場合、Amazon S3 は S3 Glacier Flexible Retrieval 移行を選択します。

 例については「[重複するフィルタ、競合するライフサイクルアクションの例](lifecycle-conflicts.md#lifecycle-config-conceptual-ex5)」を参照してください。

## S3 ライフサイクル設定を設定する方法
<a name="how-to-set-lifecycle-configuration"></a>

Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、AWS SDK、または Amazon S3 REST API を使用して、汎用バケットに Amazon S3 ライフサイクル設定を指定できます。

AWS CloudFormation テンプレートと例の詳細については、「**CloudFormation ユーザーガイド」の「[AWS CloudFormation テンプレートの使用](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html)」および「[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-bucket.html#aws-resource-s3-bucket--examples](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-bucket.html#aws-resource-s3-bucket--examples)」を参照してください。

### S3 コンソールの使用
<a name="create-lifecycle"></a>

共有プレフィックス (共通の文字列から始まるオブジェクト名) またはタグを使用して、バケット内のすべてのオブジェクトまたはオブジェクトのサブセットに対してライフサイクルルールを定義できます。ライフサイクルルールでは、現在のバージョンまたは以前のバージョンのオブジェクトに対して独自のアクションを定義できます。詳細については次を参照してください:
+ [オブジェクトのライフサイクルの管理](object-lifecycle-mgmt.md)
+ [S3 バージョニングによる複数のバージョンのオブジェクトの保持](Versioning.md)

**ライフサイクルルールを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左のナビゲーションペインで、**[汎用バケット]** を選択します。

1. バケットリストで、ライフサイクルルールを作成するバケットの名前を選択します。

1. [**Management (管理)**] タブを選択して、[**Create lifecycle rule (ライフサイクルルールを作成する)**] を選択します。

1. [**Lifecycle rule name (ライフサイクルルール名)**] に、ルールの名前を入力します。

   その名前はバケット内で一意である必要があります。

1. ライフサイクルルールのスコープを選択します。
   + *特定のプレフィックスまたはタグを持つすべてのオブジェクト*にこのライフサイクルルールを適用するには、[**スコープを特定のプレフィックスまたはタグに制限**] を選択します。
     + スコープをプレフィックスで制限するには、[**Prefix (プレフィックス)**] にプレフィックスを入力します。
     + スコープをタグで制限するには、[**Add tag (タグの追加)**] を選択してタグのキーと値を入力します。

     オブジェクト名のプレフィックスの詳細については、「[Amazon S3 オブジェクトに命名する](object-keys.md)」を参照してください。オブジェクトロックの詳細については、[タグを使用したオブジェクトの分類](object-tagging.md)をご参照ください。
   + このライフサイクルルールを**バケット内のすべてのオブジェクトに適用するには、**[このルールは、**バケット内のすべてのオブジェクトに適用されます]** を選択して、**[このライフサイクルルールがバケット内のすべてのオブジェクトに適用されることを了承します]** を選択します。

1. オブジェクトサイズでルールをフィルタリングするには、**[最小オブジェクトサイズを指定]**、**[最大オブジェクトサイズを指定]**、または両方のオプションを選択します。
   + **[最小オブジェクトサイズ]** または **[最大オブジェクトサイズ]** の値を指定する際は、0 バイトより大きく、50 TB 未満の範囲の値を指定する必要があります。この値はバイト、KB、MB、または GB で指定できます。
   + 両方の値を指定する際は、最大オブジェクトサイズを最小オブジェクトサイズよりも大きい値に設定する必要があります。
**注記**  
**[最小オブジェクトサイズ]** フィルターおよび **[最大オブジェクトサイズ]** フィルターは、指定された値を除外します。例えば、**[最小オブジェクトサイズ]** で 128 KB のオブジェクトを期限切れにするようにフィルターを設定した場合、128 KB ちょうどのオブジェクトは期限切れになりません。代わりに、このルールは 128 KB より大きいサイズのオブジェクトにのみ適用されます。

1. [**Lifecycle rule actions (ライフサイクルルールのアクション)**] で、ライフサイクルルールで実行するアクションを以下から選択します。
   + オブジェクトの*現在の*バージョンをストレージクラス間で移行する
   + オブジェクトの*以前の*バージョンをストレージクラス間で移動する
   + オブジェクトの*現在の*バージョンを期限切れにする
**注記**  
[S3 バージョニング](Versioning.md)が有効化されていないバケットの場合、現在のバージョンの有効期限が切れると、Amazon S3 はオブジェクトを完全に削除します。詳細については、「[ライフサイクルのアクションとバケットのバージョニング状態](intro-lifecycle-rules.md#lifecycle-actions-bucket-versioning-state)」を参照してください。
   + オブジェクトの*以前の*バージョンを完全に削除する
   + 期限切れの削除マーカーまたは未完了のマルチパートアップロードを削除する 

   選択したアクションに応じて、異なるオプションが表示されます。

1. オブジェクトの現在のバージョンをストレージクラス間で移行するには、**[オブジェクトの現在のバージョンをストレージクラス間で移行する]** で以下を行います。**

   1. **[ストレージクラスへの移行]** で、移行するストレージクラスを選択します。利用できる移行のリストについては、「[サポートされているライフサイクル移行](lifecycle-transition-general-considerations.md#supported-lifecycle-transitions)」を参照してください。以下のストレージクラスから選択できます。
      + S3 Standard – IA
      + S3 Intelligent-Tiering
      + S3 1 ゾーン - IA
      + S3 Glacier インスタント取得
      + S3 Glacier Flexible Retrieval
      + S3 Glacier Deep Archive

   1. [**Days after object creation (オブジェクトが作成されてからの日数)**] に、オブジェクトの作成から移行までの日数を入力します。

   ストレージクラスの詳細については、「[Amazon S3 ストレージクラスの理解と管理](storage-class-intro.md)」を参照してください。オブジェクトの現在のバージョンだけ、以前のバージョンだけ、または現在と以前の両方のバージョンについて、移行を定義できます。バージョニングを使用すると、1 つのバケットで複数バージョンのオブジェクトを維持できます。バージョニングの詳細については、「[S3 コンソールの使用](manage-versioning-examples.md#enable-versioning)」を参照してください。
**重要**  
S3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval あるいは Glacier Deep Archive ストレージクラスを選択した場合は、オブジェクトは Amazon S3 に保持されます。Amazon Glacier サービスを別途使用して直接アクセスすることはできません。詳細については、「[Amazon S3 ライフサイクルを使用したオブジェクトの移行](lifecycle-transition-general-considerations.md)」を参照してください。

1. ストレージクラス間で最新以外のオブジェクトを移行するには、**[オブジェクトの非現行バージョンをストレージクラス間で移行する]** で以下を行います。**

   1. **[ストレージクラスへの移行]** で、移行するストレージクラスを選択します。利用できる移行のリストについては、「[サポートされているライフサイクル移行](lifecycle-transition-general-considerations.md#supported-lifecycle-transitions)」を参照してください。以下のストレージクラスから選択できます。
      + S3 Standard – IA
      + S3 Intelligent-Tiering
      + S3 1 ゾーン - IA
      + S3 Glacier インスタント取得
      + S3 Glacier Flexible Retrieval
      + S3 Glacier Deep Archive

   1. **[Days after object becomes noncurrent]** に、オブジェクトの作成日から移行日までの日数を入力します。

1. オブジェクトの*現行*バージョンを期限切れにするには、**[Expire current versions of objects]** (オブジェクトの現行バージョンを期限切れにする) で、**[Number of days after object creation]** (オブジェクトの作成後の日数) に日数を入力します。
**重要**  
バージョニング非対応のバケットの場合、アクションを実行すると、Amazon S3 はオブジェクトを完全に削除します。ライフサイクルアクションの詳細については、「[ライフサイクルアクションを記述する要素](intro-lifecycle-rules.md#intro-lifecycle-rules-actions)」を参照してください。

1. オブジェクトの以前のバージョンを完全に削除するには、**[Permanently delete noncurrent versions of objects]** (現在のバージョンではないオブジェクトを完全に削除する) で、**[Days after objects become noncurrent]** (オブジェクトが最新バージョンでなくなってからの日数) に日数を入力します。オプションで、**[Number of newer versions to retain]** (保持する新しいバージョンの数) に値を入力して、保持する新しいバージョンの数を指定できます。

1. [**Delete expired delete markers or incomplete multipart uploads (期限切れの削除マーカーまたは未完了のマルチパートアップロードを削除する)**] で、[**Delete expired object delete markers (期限切れのオブジェクト削除マーカーを削除する)**] と [**Delete incomplete multipart uploads (不完全なマルチパートアップロードを削除)**] を選択します。次に、マルチパートアップロードの開始から未完了のマルチパートアップロードを終了してクリーンアップするまでの日数を入力します。

   マルチパートアップロードの詳細については、「[Amazon S3 でのマルチパートアップロードを使用したオブジェクトのアップロードとコピー](mpuoverview.md)」を参照してください。

1. [**Create rule**] を選択します。

   ルールにエラーがない場合は、Amazon S3 によって有効にされ、[**Management (管理)**] タブの [**Lifecycle rules (ライフサイクルルール)**] に表示されます。

### AWS CLI の使用
<a name="set-lifecycle-cli"></a>

次の AWS CLI コマンドを使用して、S3 ライフサイクル設定を管理できます。
+ `put-bucket-lifecycle-configuration`
+ `get-bucket-lifecycle-configuration`
+ `delete-bucket-lifecycle`

AWS CLI の設定の手順については、「Amazon S3 API リファレンス」の「[AWS CLI を使用した Amazon S3 での開発](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html)」を参照してください。**

Amazon S3 ライフサイクル設定は XML ファイルである点に注意してください。ただし、AWS CLI を使用する場合、XML 形式を指定することはできません。代わりに JSON 形式を指定する必要があります。XML ライフサイクル設定の例と、AWS CLI コマンドで指定できる同等の JSON の設定は、次のとおりです。

次のサンプル S3 ライフサイクル設定を検討してください。

**Example 例 1**  

**Example**  

```
<LifecycleConfiguration>
    <Rule>
        <ID>ExampleRule</ID>
        <Filter>
           <Prefix>documents/</Prefix>
        </Filter>
        <Status>Enabled</Status>
        <Transition>        
           <Days>365</Days>        
           <StorageClass>GLACIER</StorageClass>
        </Transition>    
        <Expiration>
             <Days>3650</Days>
        </Expiration>
    </Rule>
</LifecycleConfiguration>
```

```
{
    "Rules": [
        {
            "Filter": {
                "Prefix": "documents/"
            },
            "Status": "Enabled",
            "Transitions": [
                {
                    "Days": 365,
                    "StorageClass": "GLACIER"
                }
            ],
            "Expiration": {
                "Days": 3650
            },
            "ID": "ExampleRule"
        }
    ]
}
```

**Example 例 2**  

**Example**  

```
<LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Rule>
        <ID>id-1</ID>
        <Expiration>
            <Days>1</Days>
        </Expiration>
        <Filter>
            <And>
                <Prefix>myprefix</Prefix>
                <Tag>
                    <Key>mytagkey1</Key>
                    <Value>mytagvalue1</Value>
                </Tag>
                <Tag>
                    <Key>mytagkey2</Key>
                    <Value>mytagvalue2</Value>
                </Tag>
            </And>
        </Filter>
        <Status>Enabled</Status>    
    </Rule>
</LifecycleConfiguration>
```

```
{
    "Rules": [
        {
            "ID": "id-1",
            "Filter": {
                "And": {
                    "Prefix": "myprefix", 
                    "Tags": [
                        {
                            "Value": "mytagvalue1", 
                            "Key": "mytagkey1"
                        }, 
                        {
                            "Value": "mytagvalue2", 
                            "Key": "mytagkey2"
                        }
                    ]
                }
            }, 
            "Status": "Enabled", 
            "Expiration": {
                "Days": 1
            }
        }
    ]
}
```

以下のように `put-bucket-lifecycle-configuration` をテストできます。

**設定をテストする**

1. JSON のライフサイクル設定をファイル (*`lifecycle.json`* など) に保存します。

1. 以下の AWS CLI コマンドを実行して、バケットにライフサイクル設定を指定します。`user input placeholders` を、ユーザー自身の情報に置き換えます。

   ```
   $ aws s3api put-bucket-lifecycle-configuration  \
   --bucket amzn-s3-demo-bucket  \
   --lifecycle-configuration file://lifecycle.json
   ```

1. 検証するには、次のとおり `get-bucket-lifecycle-configuration` AWS CLI コマンドを使用して S3 ライフサイクル設定を取得します。

   ```
   $ aws s3api get-bucket-lifecycle-configuration  \
   --bucket amzn-s3-demo-bucket
   ```

1. S3 ライフサイクル設定を削除するには、次のとおり `delete-bucket-lifecycle` AWS CLI コマンドを使用します。

   ```
   aws s3api delete-bucket-lifecycle \
   --bucket amzn-s3-demo-bucket
   ```

### AWS SDK の使用
<a name="manage-lifecycle-using-sdk"></a>

------
#### [ Java ]

AWS SDK for Java を使用して、バケットの S3 ライフサイクル設定を管理できます。S3 ライフサイクル設定の管理の詳細については、「[オブジェクトのライフサイクルの管理](object-lifecycle-mgmt.md)」を参照してください。

**注記**  
バケットに S3 ライフサイクル設定を追加すると、Amazon S3 でバケットの現在のライフサイクル設定 (ある場合) が置き換えられます。設定を更新するには、設定を取得して必要な変更を加え、変更済みの設定をバケットに追加します。

AWS SDK for Java を使用してライフサイクル設定を管理するには、以下を実行します。
+ ライフサイクル設定をバケットに追加します。
+ ライフサイクル設定を取得し、別のルールを追加して設定を更新します。
+ バケットに変更済みのライフサイクル設定を追加します。Amazon S3 によって既存の設定が置き換えられます。
+ 設定をもう一度取得し、ルールの数を出力して、適切な数のルールがあることを確認します。
+ ライフサイクル設定を削除し、削除済みであることを確認するために、設定の取得を再度試行します。

AWS SDK for Java を使用してバケットにライフサイクル設定を行う方法の例については、「*Amazon S3 API リファレンス*」の「[Set lifecycle configuration on a bucket](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_PutBucketLifecycleConfiguration_section.html)」を参照してください。

------
#### [ .NET ]

AWS SDK for .NET を使用して、バケットの S3 ライフサイクル設定を管理できます。ライフサイクル設定の管理の詳細については、「[オブジェクトのライフサイクルの管理](object-lifecycle-mgmt.md)」を参照してください。

**注記**  
ライフサイクル設定を追加すると、Amazon S3 で、指定したバケットの既存のライフサイクル設定が置き換えられます。設定を更新するには、まずライフサイクル設定を取得して変更を加え、次に変更済みのライフサイクル設定をバケットに追加する必要があります。

以下の例では、AWS SDK for .NET を使用してバケットのライフサイクル設定を追加、更新、削除する方法を示します。このコード例では、以下を行います。
+ ライフサイクル設定をバケットに追加します。
+ ライフサイクル設定を取得し、別のルールを追加して設定を更新します。
+ バケットに変更済みのライフサイクル設定を追加します。Amazon S3 によって既存のライフサイクル設定が置き換えられます。
+ 再び設定を取得し、設定のルール数を出力して適切な数であることを確認します。
+ ライフサイクル設定を削除し、削除を確認します。

コード例を設定および実行する方法の詳細については、「AWS SDK for .NET デベロッパーガイド」の「[AWS SDK for .NET の開始方法](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config.html)」を参照してください。**

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class LifecycleTest
    {
        private const string bucketName = "*** bucket name ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;
        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            AddUpdateDeleteLifecycleConfigAsync().Wait();
        }

        private static async Task AddUpdateDeleteLifecycleConfigAsync()
        {
            try
            {
                var lifeCycleConfiguration = new LifecycleConfiguration()
                {
                    Rules = new List<LifecycleRule>
                        {
                            new LifecycleRule
                            {
                                 Id = "Archive immediately rule",
                                 Filter = new LifecycleFilter()
                                 {
                                     LifecycleFilterPredicate = new LifecyclePrefixPredicate()
                                     {
                                         Prefix = "glacierobjects/"
                                     }
                                 },
                                 Status = LifecycleRuleStatus.Enabled,
                                 Transitions = new List<LifecycleTransition>
                                 {
                                      new LifecycleTransition
                                      {
                                           Days = 0,
                                           StorageClass = S3StorageClass.Glacier
                                      }
                                  },
                            },
                            new LifecycleRule
                            {
                                 Id = "Archive and then delete rule",
                                  Filter = new LifecycleFilter()
                                 {
                                     LifecycleFilterPredicate = new LifecyclePrefixPredicate()
                                     {
                                         Prefix = "projectdocs/"
                                     }
                                 },
                                 Status = LifecycleRuleStatus.Enabled,
                                 Transitions = new List<LifecycleTransition>
                                 {
                                      new LifecycleTransition
                                      {
                                           Days = 30,
                                           StorageClass = S3StorageClass.StandardInfrequentAccess
                                      },
                                      new LifecycleTransition
                                      {
                                        Days = 365,
                                        StorageClass = S3StorageClass.Glacier
                                      }
                                 },
                                 Expiration = new LifecycleRuleExpiration()
                                 {
                                       Days = 3650
                                 }
                            }
                        }
                };

                // Add the configuration to the bucket. 
                await AddExampleLifecycleConfigAsync(client, lifeCycleConfiguration);

                // Retrieve an existing configuration. 
                lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client);

                // Add a new rule.
                lifeCycleConfiguration.Rules.Add(new LifecycleRule
                {
                    Id = "NewRule",
                    Filter = new LifecycleFilter()
                    {
                        LifecycleFilterPredicate = new LifecyclePrefixPredicate()
                        {
                            Prefix = "YearlyDocuments/"
                        }
                    },
                    Expiration = new LifecycleRuleExpiration()
                    {
                        Days = 3650
                    }
                });

                // Add the configuration to the bucket. 
                await AddExampleLifecycleConfigAsync(client, lifeCycleConfiguration);

                // Verify that there are now three rules.
                lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client);
                Console.WriteLine("Expected # of rulest=3; found:{0}", lifeCycleConfiguration.Rules.Count);

                // Delete the configuration.
                await RemoveLifecycleConfigAsync(client);

                // Retrieve a nonexistent configuration.
                lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client);

            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }

        static async Task AddExampleLifecycleConfigAsync(IAmazonS3 client, LifecycleConfiguration configuration)
        {

            PutLifecycleConfigurationRequest request = new PutLifecycleConfigurationRequest
            {
                BucketName = bucketName,
                Configuration = configuration
            };
            var response = await client.PutLifecycleConfigurationAsync(request);
        }

        static async Task<LifecycleConfiguration> RetrieveLifecycleConfigAsync(IAmazonS3 client)
        {
            GetLifecycleConfigurationRequest request = new GetLifecycleConfigurationRequest
            {
                BucketName = bucketName
            };
            var response = await client.GetLifecycleConfigurationAsync(request);
            var configuration = response.Configuration;
            return configuration;
        }

        static async Task RemoveLifecycleConfigAsync(IAmazonS3 client)
        {
            DeleteLifecycleConfigurationRequest request = new DeleteLifecycleConfigurationRequest
            {
                BucketName = bucketName
            };
            await client.DeleteLifecycleConfigurationAsync(request);
        }
    }
}
```

------
#### [ Ruby ]

AWS SDK for Ruby を使用すると、[https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/S3/BucketLifecycle.html](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/S3/BucketLifecycle.html) クラスを使用してバケットの S3 ライフサイクル設定を管理できます。S3 ライフサイクル設定の管理の詳細については、「[オブジェクトのライフサイクルの管理](object-lifecycle-mgmt.md)」を参照してください。

------

### REST API の使用
<a name="manage-lifecycle-using-rest"></a>

「Amazon Simple Storage Service API リファレンス」の以下のトピックでは、S3 ライフサイクル設定に関連する REST API オペレーションについて説明しています。**
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html)

## S3 ライフサイクルのトラブルシューティング
<a name="lifecycle-troubleshoot"></a>

S3 ライフサイクルの使用時に発生する可能性がある一般的な問題については、「[Amazon S3 ライフサイクル問題のトラブルシューティング](troubleshoot-lifecycle.md)」を参照してください。

# S3 ライフサイクルは他のバケット設定とどのように相互作用するか
<a name="lifecycle-and-other-bucket-config"></a>

S3 ライフサイクル設定に加えて、バケットに他の設定を関連付けることができます。このセクションでは、S3 ライフサイクル設定と他のバケット設定の関連について説明します。

## S3 ライフサイクルと S3 バージョニング
<a name="lifecycle-versioning-support-intro"></a>

S3 ライフサイクル設定は、バージョニング対応および非対応のどちらのバケットにも追加できます。詳細については、[[S3 バージョニングによる複数のバージョンのオブジェクトの保持](Versioning.md)] を参照してください。

バケットのバージョニングが有効になっている場合は、最新のオブジェクトバージョン 1 個と、0 個以上の以前のバージョンが維持されます。現在のオブジェクトバージョンと以前のオブジェクトバージョン用に異なるライフサイクルルールを定義できます。

詳細については、「[ライフサイクル設定の要素](intro-lifecycle-rules.md)」を参照してください。

**重要**  
S3 ライフサイクル設定に複数のルールがある場合、1 つのオブジェクトが同じ日に複数の S3 ライフサイクルアクションの対象になることがあります。このような場合、Amazon S3 は以下の一般的なルールに従います。  
完全な削除は、移行より優先されます。
移行は、[削除マーカー](DeleteMarker.md)の作成より優先されます。
オブジェクトが S3 Glacier Flexible Retrieval 移行と S3 標準 – IA 移行 (または S3 1 ゾーン – IA 移行) の両方の対象になる場合、Amazon S3 は S3 Glacier Flexible Retrieval の移行を選択します。
 例については「[重複するフィルタ、競合するライフサイクルアクションの例](lifecycle-conflicts.md#lifecycle-config-conceptual-ex5)」を参照してください。

## MFA が有効なバケットでの S3 ライフサイクル設定
<a name="lifecycle-general-considerations-mfa-enabled-bucket"></a>

多要素認証のバケットで S3 ライフサイクル設定を MFA 削除に設定することはサポートされていません。詳細については、「[MFA 削除の設定](MultiFactorAuthenticationDelete.md)」を参照してください。

## S3 ライフサイクルとログ記録
<a name="lifecycle-general-considerations-logging"></a>

Amazon S3 ライフサイクルアクションは、AWS CloudTrail オブジェクトレベルのログ記録ではキャプチャされません。CloudTrail は外部の Amazon S3 エンドポイントに対して行われた API リクエストをキャプチャしますが、S3 ライフサイクルアクションは内部の Amazon S3 エンドポイントを使用して実行されます。

S3 バケットで Amazon S3 サーバーアクセスログを有効にして、別のストレージクラスへのオブジェクトの移行やオブジェクトの失効など、S3 ライフサイクル関連のアクションをキャプチャして、完全な削除または論理的な削除を行うことができます。詳細については、「[サーバーアクセスログによるリクエストのログ記録](ServerLogs.md)」を参照してください。

バケットでログ記録を有効にしている場合、Amazon S3 サーバーアクセスログで以下のオペレーションの結果がレポートされます。


| オペレーションログ | 説明 | 
| --- | --- | 
|  `S3.EXPIRE.OBJECT`  |  Amazon S3 は、ライフサイクルの `Expiration` アクションに沿って、オブジェクトを完全に削除します。  | 
|  `S3.CREATE.DELETEMARKER`  |  Amazon S3 はバージョニングが有効なバケットに削除マーカーを追加することにより、現在のバージョンを論理的に削除します。  | 
|  `S3.TRANSITION_SIA.OBJECT`  |  Amazon S3 はオブジェクトを S3 Standard – IA ストレージクラスに移行しました。  | 
|  `S3.TRANSITION_ZIA.OBJECT`  |  Amazon S3 はオブジェクトを S3 1 ゾーン – IA ストレージクラスに移行しました。  | 
|  `S3.TRANSITION_INT.OBJECT`  |  Amazon S3 はオブジェクトを S3 Intelligent-Tiering ストレージクラスに移行します。  | 
|  `S3.TRANSITION_GIR.OBJECT`  |  Amazon S3 は、オブジェクトの S3 Glacier Instant Retrieval ストレージクラスへの移行を開始します。  | 
|  `S3.TRANSITION.OBJECT`  |  Amazon S3 は、オブジェクトの S3 Glacier Flexible Retrieval ストレージクラスへの移行を開始します。  | 
|  `S3.TRANSITION_GDA.OBJECT`  |  Amazon S3 は、オブジェクトの S3 Glacier Deep Archive ストレージクラスへの移行を開始します。  | 
|  `S3.DELETE.UPLOAD`  |  Amazon S3 は不完全なマルチパートアップロードを中止しす。  | 

**注記**  
Amazon S3 サーバーアクセスログレコードは、ベストエフォートベースで配信され、すべての Amazon S3 リクエストの完全なアカウンティングには使用できません。

# S3 ライフサイクルイベント通知の設定
<a name="lifecycle-configure-notification"></a>

S3 ライフサイクルルールに従った結果、Amazon S3 がオブジェクトを削除したり、別の Amazon S3 ストレージクラスに移行したりした場合に通知を受け取るには、Amazon S3 イベント通知を設定することができます。

次の S3 ライフサイクルイベントの通知を受信できます。
+ **移行イベント** – `s3:LifecycleTransition` イベントタイプを使用すると、S3 ライフサイクル設定により、ある Amazon S3 ストレージクラスから別のストレージクラスにオブジェクトが移行された場合に通知を受け取ることができます。
+ **有効期限切れ (削除) イベント** – `LifecycleExpiration` イベントタイプを使用すると、Amazon S3 が S3 ライフサイクル設定に基づいてオブジェクトを削除する都度、通知を受け取ることができます。

  有効期限切れイベントには 2 つのタイプがあります。
  + `s3:LifecycleExpiration:Delete` イベントタイプは、バージョン設定されていないバケット内のオブジェクトが削除されたときに通知します。`s3:LifecycleExpiration:Delete` は、S3 ライフサイクル設定によってオブジェクトバージョンが完全に削除されたときにも通知します。
  +  この `s3:LifecycleExpiration:DeleteMarkerCreated` は、バージョニングされているバケット内のオブジェクトの最新バージョンが削除され、S3 ライフサイクルが削除マーカーを作成した場合に通知します。S3 ライフサイクルは、削除マーカーの作成時間を現在の日の 00:00 UTC (午前 0 時) に設定します。この作成時間は、S3 が送信する `s3:LifecycleExpiration:DeleteMarkerCreated` 通知のイベント時間とは異なる場合があります。詳細については、「[バージョニングが有効なバケットからのオブジェクトバージョンの削除](DeletingObjectVersions.md)」を参照してください。

Amazon S3 は、Amazon Simple Notification Service (Amazon SNS) トピック、Amazon Simple Queue Service (Amazon SQS) キュー、または AWS Lambda 関数にイベント通知を発行できます。詳細については、「[Amazon S3 イベント通知](EventNotifications.md)」を参照してください。

Amazon S3 イベント通知を設定する手順については、「[Amazon SQS、Amazon SNS、および AWS Lambda を使用した通知の有効化](how-to-enable-disable-notification-intro.md)」を参照してください。

次は Amazon S3 が `s3:LifecycleExpiration:Delete` イベントを発行するために送信するメッセージの例です。詳細については、「[イベントメッセージの構造](notification-content-structure.md)」を参照してください。

```
 1. {  
 2.    "Records":[  
 3.       {  
 4.          "eventVersion":"2.3",
 5.          "eventSource":"aws:s3",
 6.          "awsRegion":"us-west-2",
 7.          "eventTime":"1970-01-01T00:00:00.000Z",
 8.          "eventName":"LifecycleExpiration:Delete",
 9.          "userIdentity":{  
10.             "principalId":"s3.amazonaws.com"
11.          },
12.          "requestParameters":{  
13.             "sourceIPAddress":"s3.amazonaws.com"
14.          },
15.          "responseElements":{  
16.             "x-amz-request-id":"C3D13FE58DE4C810",
17.             "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD"
18.          },
19.          "s3":{  
20.             "s3SchemaVersion":"1.0",
21.             "configurationId":"testConfigRule",
22.             "bucket":{  
23.                "name":"amzn-s3-demo-bucket",
24.                "ownerIdentity":{  
25.                   "principalId":"A3NL1KOZZKExample"
26.                },
27.                "arn":"arn:aws:s3:::amzn-s3-demo-bucket"
28.             },
29.             "object":{  
30.                "key":"expiration/delete",
31.                "sequencer":"0055AED6DCD90281E5",              
32.             }
33.          }
34.       }
35.    ]
36. }
```

`s3:LifecycleTransition` イベントを公開するために Amazon S3 が送信するメッセージには、次の情報も含まれます。

```
1. "lifecycleEventData":{
2.     "transitionEventData": {
3.         "destinationStorageClass": the destination storage class for the object
4.     }
5. }
```

# ライフサイクル設定の要素
<a name="intro-lifecycle-rules"></a>

S3 ライフサイクル設定は、Amazon S3 がオブジェクトの有効期間中に実行するアクションを記述するさまざまな要素を含むライフサイクルルールで構成されます。各 S3 バケットには、最大 1,000 個のルールを含む 1 つのライフサイクル設定を割り当てることができます。Amazon S3 ライフサイクル設定を XML として指定します。これは 1 つ以上のライフサイクルルールで構成され、各ルールは 1 つ以上の要素で構成されます。

```
<LifecycleConfiguration>
    <Rule>
         <Element>
    </Rule>
    <Rule>
         <Element>
         <Element>
    </Rule>
</LifecycleConfiguration>
```

各ルールには次が含まれます。
+ ルール ID とルールが有効か無効かを示すステータスを含むルールメタデータ。ルールが無効な場合、Amazon S3 はルールで指定されているアクションを実行しません。
+ ルールが適用されるオブジェクトを特定するフィルター。フィルターを指定するには、オブジェクトサイズ、オブジェクトキープレフィックス、単一または複数のオブジェクトタグ、またはフィルターの組み合わせを使用できます。
+ 指定されたアクションを Amazon S3 に実行させる場合、オブジェクトの有効期間内の日付または期間が指定された 1 つ以上の移行または失効アクション。

**Topics**
+ [ID 要素](#intro-lifecycle-rule-id)
+ [Status 要素](#intro-lifecycle-rule-status)
+ [Filter 要素](#intro-lifecycle-rules-filter)
+ [ライフサイクルアクションを記述する要素](#intro-lifecycle-rules-actions)
+ [ライフサイクルルールへのフィルタの追加](intro-lifecycle-filters.md)

以下のセクションでは、S3 ライフサイクル設定における XML 要素について説明します。設定例については、「[S3 ライフサイクル設定の例](lifecycle-configuration-examples.md)」を参照してください。

## ID 要素
<a name="intro-lifecycle-rule-id"></a>

ライフサイクル設定はバケットレベルで設定され、各バケットには独自のライフサイクル設定があります。S3 ライフサイクル設定には、バケットあたり最大 1,000 個のルールを記述できます。この制限は調整できません。`<ID>` 要素は、バケットのライフサイクル設定内のルールを一意に識別します。ID の長さは、255 文字に制限されています。

## Status 要素
<a name="intro-lifecycle-rule-status"></a>

`<Status>` 要素の値は、`Enabled` または `Disabled` のいずれかです。ルールが無効な場合、Amazon S3 はルールで定義されたアクションを実行しません。

## Filter 要素
<a name="intro-lifecycle-rules-filter"></a>

S3 ライフサイクルルールは、ルールで指定した `<Filter>` 要素に基づいて、バケット内のすべてのオブジェクトまたはオブジェクトのサブセットに適用できます。

オブジェクトは、キープレフィックス、オブジェクトタグ、またはそれらの組み合わせ (この場合、Amazon S3 は論理 `AND` を使用してフィルタを組み合わせます）により、オブジェクトをフィルタできます。フィルターの例と詳細については、「[ライフサイクルルールへのフィルタの追加](intro-lifecycle-filters.md)」を参照してください。
+ **キープレフィックスを使用したフィルターの指定** – この例は、キー名のプレフィックス (`logs/`) に基づいてオブジェクトのサブセットに適用される S3 ライフサイクルルールを示しています。例えば、ライフサイクルルールはオブジェクト `logs/mylog.txt`、`logs/temp1.txt`、`logs/test.txt` に適用されます。このルールは、オブジェクト `example.jpg` には適用されません。

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
             <Prefix>logs/</Prefix>
          </Filter>
          transition/expiration actions
           ...
      </Rule>
      ...
  </LifecycleConfiguration>
  ```

  異なるキー名のプレフィックスに基づいてオブジェクトのサブセットにライフサイクルアクションを適用する場合は、別のルールを指定します。各ルールでは、プレフィックスベースのフィルタを指定します。例えば、キープレフィックスが `projectA/` と `projectB/` のオブジェクトのライフサイクルアクションを作成するには、次のとおり 2 つのルールを指定します。

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
             <Prefix>projectA/</Prefix>
          </Filter>
          transition/expiration actions
           ...
      </Rule>
  
      <Rule>
          <Filter>
             <Prefix>projectB/</Prefix>
          </Filter>
          transition/expiration actions
           ...
      </Rule>
  </LifecycleConfiguration>
  ```

  オブジェクトキーの詳細については、「[Amazon S3 オブジェクトに命名する](object-keys.md)」を参照してください。
+ **オブジェクトタグに基づくフィルターの指定** – 次の例では、ライフサイクルルールはタグ (`key`) と値 (`value`) に基づいてフィルターを指定します。この場合、ルールは特定のタグを持つオブジェクトのサブセットにのみ適用されます。

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
             <Tag>
                <Key>key</Key>
                <Value>value</Value>
             </Tag>
          </Filter>
          transition/expiration actions
          ...
      </Rule>
  </LifecycleConfiguration>
  ```

  複数のタグに基づいてフィルタを指定できます。次の例で示されるとおり、`<And>` 要素でタグを囲む必要があります。ルールは、2 つのタグ (特定のタグキーと値を持つ) が付与されたオブジェクトでライフサイクルアクションを実行するように Amazon S3 に指示します。

  ```
  <LifecycleConfiguration>
      <Rule>
        <Filter>
           <And>
              <Tag>
                 <Key>key1</Key>
                 <Value>value1</Value>
              </Tag>
              <Tag>
                 <Key>key2</Key>
                 <Value>value2</Value>
              </Tag>
               ...
            </And>
        </Filter>
        transition/expiration actions
      </Rule>
  </Lifecycle>
  ```

  ライフサイクルルールは、指定された両方のタグが付与されたオブジェクトに適用されます。Amazon S3 は論理 `AND` を実行します。次の点に注意してください。
  + 各タグは、キーと値の両方で**正確に一致する必要があります。`<Key>` 要素のみを指定し、`<Value>` 要素を指定しない場合、ルールはタグキーと一致し、**値が指定されていないオブジェクトにのみ適用されます。
  + ルールは、ルールで指定されたすべてのタグが付与されたオブジェクトのサブセットに適用されます。オブジェクトに追加のタグが指定されていても、ルールは引き続き適用されます。
**注記**  
フィルタで複数のタグを指定する場合、各タグキーは一意である必要があります。
+ **プレフィックスと単一または複数のタグの両方に基づくフィルターの指定** – ライフサイクルルールでは、キープレフィックスと単一または複数のタグの両方に基づいてフィルターを指定できます。繰り返しになりますが、次に示すとおり、これらすべてを `<And>` 要素で囲む必要があります。

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
            <And>
               <Prefix>key-prefix</Prefix>
               <Tag>
                  <Key>key1</Key>
                  <Value>value1</Value>
               </Tag>
               <Tag>
                  <Key>key2</Key>
                  <Value>value2</Value>
               </Tag>
                ...
            </And>
          </Filter>
          <Status>Enabled</Status>
          transition/expiration actions
      </Rule>
  </LifecycleConfiguration>
  ```

  Amazon S3 は、論理 `AND` を使用してこのようなフィルターを組み合わせます。つまり、ルールは指定したキープレフィックスと特定のタグを持つオブジェクトのサブセットに適用されます。フィルタのプレフィックスは最大 1 個、タグは 0 個以上にします。
+ **空のフィルタ** を指定できます。その場合、ルールはオブジェクト内のすべてのバケットに適用されます。

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
          </Filter>
          <Status>Enabled</Status>
          transition/expiration actions
      </Rule>
  </LifecycleConfiguration>
  ```
+ [**object size**] によりルールをフィルタリングするには、最小サイズ、(`ObjectSizeGreaterThan`) または最大サイズ (`ObjectSizeLessThan`) を指定するか、またはオブジェクトのサイズの範囲を指定できます。

  オブジェクトサイズの値はバイト単位です。デフォルトでは、128 KB 未満のオブジェクトは、最小サイズ (`ObjectSizeGreaterThan`) または最大サイズ (`ObjectSizeLessThan`) を指定しない限り、どのストレージクラスにも移行されません。詳細については、「[例: 128 KB 未満のオブジェクトの移行を許可する](lifecycle-configuration-examples.md#lc-small-objects)」を参照してください。

  ```
                      <LifecycleConfiguration>
      <Rule>
          <Filter>
              <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan>   
          </Filter>
          <Status>Enabled</Status>
          transition/expiration actions
      </Rule>
  </LifecycleConfiguration>
  ```
**注記**  
`ObjectSizeGreaterThan` フィルターおよび `ObjectSizeLessThan` フィルターは、指定された値を除外します。例えば、S3 Standard ストレージクラスから S3 Standard-IA ストレージクラスに移動するためにオブジェクトのサイズを 128 KB から 1024 KB に設定した場合、1024 KB ちょうどのオブジェクトと 128 KB ちょうどのオブジェクトは S3 Standard-IA に移動されません。代わりに、このルールは 128 KB より大きく 1024 KB よりも小さいサイズのオブジェクトにのみ適用されます。

  オブジェクトサイズの範囲を指定する場合は、`ObjectSizeGreaterThan` 整数は `ObjectSizeLessThan` 値未満にする必要があります。複数のフィルタを使用する場合は、`<And>` エレメントのフィルタを包む必要があります。次の例は、500 バイトから 64,000 バイトの範囲でオブジェクトを指定する方法を示しています。

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
              <And>
                  <Prefix>key-prefix</Prefix>
                  <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan>
                  <ObjectSizeLessThan>64000</ObjectSizeLessThan>
              </And>    
          </Filter>
          <Status>Enabled</Status>
          transition/expiration actions
      </Rule>
  </LifecycleConfiguration>
  ```

## ライフサイクルアクションを記述する要素
<a name="intro-lifecycle-rules-actions"></a>

次の定義済みのアクションのうち 1 つ以上を S3 ライフサイクルルールに指定することで、オブジェクトの有効期間中に特定のアクションを実行するように Amazon S3 に指示することができます。これらのアクションの効果は、バケットのバージョニング状態によって異なります。
+ **`Transition` アクション要素** – オブジェクトを別のストレージクラスに移行するには、`Transition` アクションを指定します。オブジェクトの移行の詳細については、「[サポートされている移行](lifecycle-transition-general-considerations.md#lifecycle-general-considerations-transition-sc)」を参照してください。オブジェクトの有効期間内の指定の日付または期間に到達すると、Amazon S3 は移行を実行します。

  バージョニング対応のバケット (バージョニングが有効なバケットまたはバージョニングが停止されたバケット) の場合、`Transition` アクションは最新のオブジェクトバージョンに適用されます。以前のバージョンを管理する場合、Amazon S3 は `NoncurrentVersionTransition` アクション (以下で説明されます) を定義します。
+ **`Expiration` アクション要素** – `Expiration` アクションは、ルールで特定されたオブジェクトを期限切れにします。これは、Amazon S3 のいずれかのストレージクラスの該当するオブジェクトに適用されます。ストレージクラスの詳細については、「[Amazon S3 ストレージクラスの理解と管理](storage-class-intro.md)」を参照してください。Amazon S3 により有効期限切れになったオブジェクトはいずれも使用できなくなります。オブジェクトが完全に削除されるかどうかは、バケットのバージョニング状態によって異なります。
  + **バージョニング非対応のバケット** – `Expiration` アクションを実行すると、Amazon S3 はオブジェクトを完全に削除します。
  + **バージョニング対応バケット** – バージョニング対応バケット (つまり、バージョニングが有効であるかバージョニングが停止されている) の場合、Amazon S3 による `Expiration` アクションの処理方法を決める考慮事項がいくつかあります。バージョニングが有効なバケットまたはバージョニングが停止されたバケットには、以下が適用されます。
    + `Expiration` アクションは、最新のバージョンにのみ適用されます (最新以外のバージョンには影響しません)。
    + 1 つ以上のオブジェクトバージョンがあり、削除マーカーが最新バージョンである場合、Amazon S3 はアクションを実行しません。
    + 現在のオブジェクトバージョンが唯一のオブジェクトバージョンであり、削除マーカーでもある場合 (「*期限切れオブジェクト削除マーカー*」とも呼ばれます。すべてのオブジェクトバージョンが削除され、削除マーカーのみ残ります)、Amazon S3 は期限切れのオブジェクト削除マーカーを削除します。また、expiration アクションを使用して、期限切れオブジェクト削除マーカーをすべて削除するよう Amazon S3 に指示することもできます。例については、「[バージョニングが有効なバケットで期限切れのオブジェクト削除マーカーを削除する](lifecycle-configuration-examples.md#lifecycle-config-conceptual-ex7)」を参照してください。

    詳細については、「[S3 バージョニングによる複数のバージョンのオブジェクトの保持](Versioning.md)」を参照してください。

    有効期限を管理するために Amazon S3 をセットアップする場合は、次の点も考慮します。
    + **バージョニングが有効なバケット** 

      現在のオブジェクトバージョンが削除マーカーではない場合、Amazon S3 は固有のバージョン ID を持つ削除マーカーを追加します。これにより、最新のバージョンが最新以外のバージョンとなり、削除マーカーが最新バージョンになります。
    + **バージョニングが停止されたバケット** 

      バージョニングを停止したバケットでは、有効期限切れアクションにより Amazon S3 がバージョン ID として `null` を使用する削除マーカーを作成します。この削除マーカーは、バージョン階層においてあらゆるオブジェクトバージョンをバージョン ID null に置き換えるため、オブジェクトが効率的に削除されます。

さらに、Amazon S3 はバージョン対応のバケット (つまり、バージョニングが有効なバケットとバージョニングが停止されているバケット) で以前のオブジェクトバージョンを管理するために使用できる次のアクションを提供します。
+ **`NoncurrentVersionTransition` アクション要素** – このアクションを使用して、Amazon S3 がオブジェクトを指定したストレージクラスに移行するタイミングを指定します。この有効期限切れは、オブジェクトが最新でなくなった以降の特定の日数 (`<NoncurrentDays>`) に基づいて設定できます。日数以外にも、保持する最新以外のバージョンの最大数 (`<NewerNoncurrentVersions>`) (1～100 の間) を指定することもできます。この値は、Amazon S3 が特定のバージョンに移行する前に、最新でないバージョンがいくつ必要かを決定します。Amazon S3 は、保持すると指定された数を超える最新でないバージョンをすべて移行します。移行を実行するには、`<NoncurrentDays>` **および** `<NewerNoncurrentVersions>` の両方の値を超える必要があります。

  保持する最新以外のバージョンの数を指定するには、`<Filter>` 要素も指定する必要があります。`<Filter>` 要素を指定しないで保持する最新以外のバージョンの数を指定すると、Amazon S3 で `InvalidRequest` エラーが発生します。

  オブジェクトの移行の詳細については、「[サポートされている移行](lifecycle-transition-general-considerations.md#lifecycle-general-considerations-transition-sc)」を参照してください。`NoncurrentVersionTransition` アクション中の日数を指定した日付を Amazon S3 が計算する方法の詳細については、[ライフサイクルルール: オブジェクトの存在時間に基づく](#intro-lifecycle-rules-number-of-days) を参照してください。
+ **`NoncurrentVersionExpiration` アクション要素** – Amazon S3 に最新以外のオブジェクトのバージョンを完全に削除することを指示するには、このアクションを使用します。このように削除されたオブジェクトは復元することはできません。この有効期限切れは、オブジェクトが最新でなくなった以降の特定の日数 (`<NoncurrentDays>`) に基づいて設定できます。日数以外にも、保持する最新以外のバージョンの最大数 (`<NewerNoncurrentVersions>`) (1～100 の間) を指定することもできます。この値は、Amazon S3 が特定のバージョンを期限切れにする前に、最新でないバージョンがいくつ必要かを指定します。Amazon S3 は、保存すると指定された数を超える最新でないバージョンをすべて完全に削除します。削除が行われるには、`<NoncurrentDays>` **および** `<NewerNoncurrentVersions>` の両方の値を超える必要があります。

  保持する最新以外のバージョンの数を指定するには、`<Filter>` 要素も指定する必要があります。`<Filter>` 要素を指定しないで保持する最新以外のバージョンの数を指定すると、Amazon S3 で `InvalidRequest` エラーが発生します。

  以前のオブジェクトをこのように遅れて削除すると、誤って削除または上書きを修正する必要がある場合に役立ちます。たとえば、最新以外のバージョンになってから 5 日後に削除する有効期間ルールを設定できます。例えば、2014 年 1 月 1 日 10:30 AM (UTC) に、`photo.gif` (バージョン ID 111111) というオブジェクトを作成したとします。2014 年 1 月 2 日 11:30 AM (UTC) に、`photo.gif` (バージョン ID 111111) を誤って削除したとします。これにより、新しいバージョン ID (バージョン ID 4857693 など) の削除マーカーが作成されます。この場合、完全な削除が行われるまでの 5 日間は、元のバージョンの `photo.gif` (バージョン ID 111111) を復元することができます。2014 年 1 月 8 日 00:00 (UTC) に、有効期限切れのライフサイクルルールが実行され、`photo.gif` (バージョン ID 111111) は完全に削除されます。これは、このバージョンが最新バージョンでなくなってから 5 日後です。

  `NoncurrentVersionExpiration` アクションの日数を指定した日付を Amazon S3 が計算する方法の詳細については、[ライフサイクルルール: オブジェクトの存在時間に基づく](#intro-lifecycle-rules-number-of-days) を参照してください。
**注記**  
オブジェクトの有効期限切れを決定するライフサイクル設定では、不完全なマルチパートアップロードは削除されません。不完全なマルチパートアップロードを削除するには、`AbortIncompleteMultipartUpload` というライフサイクル設定アクションを使用する必要があります。このアクションについては、このセクションの後半で説明します。

この移行アクションと有効期限切れアクション以外にも、次のライフサイクル設定アクションを使用して、不完全なマルチパートアップロードを停止するか、有効期限切れのオブジェクト削除マーカーを削除するように Amazon S3 に指示できます。
+ **`AbortIncompleteMultipartUpload` アクション要素** – この要素を使用すると、マルチパートアップロードの進行を許可する最大時間 (日数) を指定できます。対象となるマルチパートアップロード (ライフサイクルルールで指定されているキー名の `prefix` で特定) が所定の期間内に正常に完了していない場合、Amazon S3 は不完全なマルチパートアップロードを中止します。詳細については、「[マルチパートアップロードの中止](abort-mpu.md)」を参照してください。
**注記**  
このライフサイクルアクションは、オブジェクトタグを使用するフィルターが含まれるルールでは指定できません。
+ **`ExpiredObjectDeleteMarker` アクション要素** – バージョニングが有効になっているバケットでは、最新以外のバージョンが 0 の削除マーカーは、**期限切れオブジェクト削除マーカーと呼ばれます。このライフサイクルアクションを使用して、期限切れオブジェクト削除マーカーを削除するように S3 に指示できます。例については、[バージョニングが有効なバケットで期限切れのオブジェクト削除マーカーを削除する](lifecycle-configuration-examples.md#lifecycle-config-conceptual-ex7)を参照してください。
**注記**  
このライフサイクルアクションは、オブジェクトタグを使用するフィルターが含まれるルールでは指定できません。

### オブジェクトが最新でなくなってからの期間を Amazon S3 が計算する方法
<a name="non-current-days-calculations"></a>

バージョニングが有効なバケットで、オブジェクトの複数のバージョンを所持することができます。最新バージョンが常に 1 個、最新以外のバージョンが 0 個以上存在します。オブジェクトをアップロードするたびに、最新バージョンは以前のバージョンとして保持され、新しく追加されたバージョンがその代わりに最新バージョンになります。オブジェクトが最新でなくなってからの日数を知るために、Amazon S3 はその次の最新バージョンがいつ作成されたかを調べます。Amazon S3 は、オブジェクトの次の最新バージョンが作成されてからの日数を、オブジェクトが最新でなくなってからの日数として使用します。

**S3 ライフサイクル設定を使用する場合のオブジェクトの以前のバージョンの復元**  
「[以前のバージョンの復元](RestoringPreviousVersions.md)」で説明したとおり、次の 3 つの方法のいずれかを使用して、オブジェクトの以前のバージョンを取得できます。  
**方法 1 – オブジェクトの最新以外のバージョンを同じバケットにコピーします。**コピーされたオブジェクトはそのオブジェクトの最新バージョンになり、すべてのオブジェクトバージョンが維持されます。
**方法 2 – オブジェクトの現在のバージョンを完全に削除します。**最新のオブジェクトバージョンを削除すると、結果として、以前のバージョンがそのオブジェクトの最新バージョンになります。
バージョニングが有効になっているバケットで S3 ライフサイクル設定ルールを使用している場合は、ベストプラクティスとして、方法 1 を使用することをお勧めします。  
S3 ライフサイクルは、結果整合性モデル下で動作します。最新バージョンが完全に削除されても、変更がすべての Amazon S3 システムに反映されるまで消えない場合があります。(このため、Amazon S3 はこのような削除を一時的に認識しない場合があります)。一方で、以前のオブジェクトを有効期限切れにするように設定したライフサイクルルールは、復元したいオブジェクトを含む以前のオブジェクトを完全に削除する可能性があります。つまり、方法 1 でお勧めしたとおり、代替方法として古いバージョンをコピーする方が安全です。

### ライフサイクルのアクションとバケットのバージョニング状態
<a name="lifecycle-actions-bucket-versioning-state"></a>

次の表では、オブジェクトを含むバケットのバージョニングの状態に関連した、オブジェクトに対する S3 ライフサイクル設定ルールアクションの動作をまとめています。


| Action | バージョニング非対応の (バージョニングが有効でない) バケット | バージョニングが有効なバケット | バージョニングが停止されたバケット | 
| --- | --- | --- | --- | 
|  `Transition` 指定した日付またはオブジェクトの有効期間内の期間に達した場合。  | Amazon S3 は、オブジェクトを指定されたストレージクラスに移行します。 | Amazon S3 は、オブジェクトの最新バージョンを、指定されたストレージクラスに移行します。 | バージョニングが有効なバケットと同じ動作。 | 
|  `Expiration` 指定した日付またはオブジェクトの有効期間内の期間に達した場合。  | Expiration アクションは、オブジェクトを削除します。削除されたオブジェクトは復元できません。 | S3 は削除マーカーを作成します。これが最新バージョンとなり、既存の最新バージョンは最新以外のバージョンとして保持されます。 | このライフサイクルアクションは、バージョン ID null を持つ削除マーカーを作成し、これが最新バージョンになります。オブジェクトの最新バージョンのバージョン ID が null の場合、Expiration アクションはこのバージョンを完全に削除します。それ以外の場合、最新バージョンは以前のバージョンとして保持されます。 | 
|  `NoncurrentVersionTransition` バージョニングが有効になっているかバージョニングが一時停止されているバケット内の最新以外のバージョンの場合、S3 ライフサイクルは、オブジェクトが最新でなくなってからの日数が、ルールで **[オブジェクトが現行バージョンでなくなってからの日数]** (`<NoncurrentDays>`) で指定された値を超え、**さらに**バージョン数がルールで **[保持する新しいバージョンの数]** (`<NewerNoncurrentVersions>`) で指定された値を超えた場合にオブジェクトを移行します。  | NoncurrentVersionTransition は何も実行しません。 |  Amazon S3 は、オブジェクトの以前のバージョンを、指定されたストレージクラスに移行します。  | バージョニングが有効なバケットと同じ動作。 | 
|  `NoncurrentVersionExpiration` バージョニングが有効になっているかバージョニングが一時停止されているバケット内の最新以外のバージョンの場合、S3 ライフサイクルは、オブジェクトが最新でなくなってからの日数が、ルールで **[オブジェクトが現行バージョンでなくなってからの日数]** (`<NoncurrentDays>`) で指定された値を超え、**さらに**バージョン数がルールで **[保持する新しいバージョンの数]** (`<NewerNoncurrentVersions>`) で指定された値を超えた場合にオブジェクトを期限切れにします。  | NoncurrentVersionExpiration は何も実行しません。 | NoncurrentVersionExpiration アクションは、オブジェクトの最新でないバージョンを完全に削除します。削除されたオブジェクトは復元できません。 | バージョニングが有効なバケットと同じ動作。 | 

### ライフサイクルルール: オブジェクトの存在時間に基づく
<a name="intro-lifecycle-rules-number-of-days"></a>

Amazon S3 が指定したアクションを実行できる期間は、オブジェクトの作成 (または変更) からの日数で指定できます。

日数を S3 ライフサイクル設定の `Transition` アクションおよび `Expiration` アクションで指定する場合は、以下の点に注意してください。
+ 指定する値は、オブジェクトの作成からアクションが発生するまでの日数です。
+ Amazon S3 は、ルールで指定された日数をオブジェクト作成時刻に加え、その結果の時刻を翌日の UTC 午前 0 時に切り上げて時刻を算出します。例えば、あるオブジェクトが 2014 年 1 月 15 日 10:30 AM (UTC) に作成され、移行ルールで 3 日と指定した場合、オブジェクトの移行日は 2014 年 1 月 19 日 00:00 (UTC) となります。

**注記**  
Amazon S3 は、各オブジェクトの最終更新日のみを維持します。例えば、Amazon S3 コンソールでは、オブジェクトの **[プロパティ]** ペインに **[最終更新日時]** が表示されています。新しいオブジェクトを最初に作成する際は、この日付はオブジェクトの作成日を表示します。オブジェクトを置き換えた場合、日付はそれに応じて変わります。つまり、オブジェクトの作成日と **[最終更新日時]** は同期しています。

日数をライフサイクル設定の `NoncurrentVersionTransition` アクションおよび `NoncurrentVersionExpiration` アクションで指定する場合は、以下の点に注意してください。
+ 指定する値は、オブジェクトのバージョンが最新ではなくなった日時 (つまり、オブジェクトが上書きまたは削除された日時) から、Amazon S3 が指定したオブジェクトに対してアクションを実行するまでの日数です。
+ Amazon S3 は、オブジェクトの次の最新バージョンが作成された時刻にルールで指定された日数を加算して、その結果の時刻を翌日の UTC 午前 0 時に切り上げて時刻を算出します。例えば、バケット内に 2014 年 1 月 1 日の 10:30 AM (UTC) に作成されたオブジェクトの最新バージョンがあるとします。この最新バージョンを置き換えるオブジェクトの新しいバージョンが 2014 年 1 月 15 日の 10:30 AM (UTC) に作成され、移行ルールで 3 日を指定した場合、オブジェクトの移行日は 2014 年 1 月 19 日 00:00 (UTC) と算出されます。

### ライフサイクルルール: 特定の日付に基づく
<a name="intro-lifecycle-rules-date"></a>

S3 ライフサイクルルールでアクションを指定する際に、Amazon S3 がアクションを実行する日付を指定できます。特定の日付になると、Amazon S3 は (フィルタ条件に基づいて) すべての対象オブジェクトにアクションに適用します。

過去の日付を使用して S3 ライフサイクルアクションを指定すると、すべての対象オブジェクトは、直ちにそのライフサイクルアクションの対象となります。

**重要**  
日付ベースのアクションは、1 回限りのアクションではありません。Amazon S3 は、日付が過ぎた後も、ルールのステータスが `Enabled` である限り、継続して日付ベースのアクションを適用します。  
例えば、すべてのオブジェクトを削除する日付ベースの `Expiration` アクションを指定するとします (このルールにはフィルターが指定されていないと仮定します)。Amazon S3 は特定の日付に、バケットのすべてのオブジェクトを期限切れにします。Amazon S3 は、バケット内に作成した新しいオブジェクトも続けて有効期限切れにします。ライフサイクルアクションを停止するには、ライフサイクルルールからアクションを削除するか、ルールを無効にするか、ライフサイクル設定からルールを削除する必要があります。

日付の値は、ISO 8601 形式に従う必要があります。この時刻は常に午前 0 時 (UTC) となります。

**注記**  
Amazon S3 コンソールを使用して日付ベースのライフサイクルルールを作成することはできません。ただし、このようなルールを表示、無効化、または削除することはできます。

# ライフサイクルルールへのフィルタの追加
<a name="intro-lifecycle-filters"></a>

フィルタはオプションのライフサイクルルール要素であり、ルールが適用されるオブジェクトを指定するために使用できます。

オブジェクトをフィルタリングするには、次の要素を使用できます。

**キープレフィックス**  
プレフィックスに基づいてオブジェクトをフィルタリングできます。異なるプレフィックスを持つオブジェクトのサブセットにライフサイクルアクションを適用する場合は、アクションごとに個別のルールを作成します。

**オブジェクトタグ**  
1 つ以上のタグに基づいてオブジェクトをフィルタリングできます。各タグはキーと値の両方に正確に一致する必要があります。複数のタグを指定する場合、各タグキーは一意である必要があります。複数のオブジェクトタグを持つフィルタは、すべてのタグが指定されているオブジェクトのサブセットに適用されます。オブジェクトに追加のタグが指定されていても、フィルタは引き続き適用されます。  
`Key` 要素のみを指定し、`Value` 要素を指定しない場合、ルールはタグキーと一致し、値が指定されていないオブジェクトにのみ適用されます。

**最小または最大オブジェクトサイズ**  
サイズに基づいてオブジェクトをフィルタリングできます。最小サイズ (`ObjectSizeGreaterThan`)、または最大サイズ (`ObjectSizeLessThan`) を指定するか、同じでフィルタでオブジェクトサイズの範囲を指定することができます。オブジェクトサイズの値はバイト単位です。フィルターの最大サイズは 50 TB です。Amazon S3 は、ライフサイクル設定にデフォルトの最小オブジェクトサイズを適用します。詳細については、「[例: 128 KB 未満のオブジェクトの移行を許可する](lifecycle-configuration-examples.md#lc-small-objects)」を参照してください。

さまざまなフィルタ要素を組み合わせることができます。その場合、Amazon S3 は論理 `AND` を使用します。

## フィルタ例
<a name="filter-examples"></a>

次の例は、さまざまなフィルタ要素を使用する方法を示しています。
+ **キープレフィックスを使用したフィルターの指定** – この例は、キー名のプレフィックス (`logs/`) に基づいてオブジェクトのサブセットに適用される S3 ライフサイクルルールを示しています。例えば、ライフサイクルルールはオブジェクト `logs/mylog.txt`、`logs/temp1.txt`、`logs/test.txt` に適用されます。このルールは、オブジェクト `example.jpg` には適用されません。

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
             <Prefix>logs/</Prefix>
          </Filter>
          transition/expiration actions
           ...
      </Rule>
      ...
  </LifecycleConfiguration>
  ```
**注記**  
 同じ文字で始まるプレフィックスが 1 つ以上ある場合は、末尾のスラッシュ (`/`) を除外した部分的なプレフィックスをフィルターで指定することで、これらのプレフィックスをすべてルールに含めることができます。例えば、次のようなプレフィックスがあるとします。  

  ```
  sales1999/
                  sales2000/
                  sales2001/
  ```
ルールに 3 つのプレフィックスをすべて含めるには、ライフサイクルルールで `sales` をプレフィックスとして指定します。

  異なるキー名のプレフィックスに基づいてオブジェクトのサブセットにライフサイクルアクションを適用する場合は、別のルールを指定します。各ルールでは、プレフィックスベースのフィルタを指定します。例えば、キープレフィックスが `projectA/` と `projectB/` のオブジェクトのライフサイクルアクションを作成するには、次のとおり 2 つのルールを指定します。

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
             <Prefix>projectA/</Prefix>
          </Filter>
          transition/expiration actions
           ...
      </Rule>
  
      <Rule>
          <Filter>
             <Prefix>projectB/</Prefix>
          </Filter>
          transition/expiration actions
           ...
      </Rule>
  </LifecycleConfiguration>
  ```

  オブジェクトキーの詳細については、「[Amazon S3 オブジェクトに命名する](object-keys.md)」を参照してください。
+ **オブジェクトタグに基づくフィルターの指定** – 次の例では、ライフサイクルルールはタグ (`key`) と値 (`value`) に基づいてフィルターを指定します。この場合、ルールは特定のタグを持つオブジェクトのサブセットにのみ適用されます。

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
             <Tag>
                <Key>key</Key>
                <Value>value</Value>
             </Tag>
          </Filter>
          transition/expiration actions
          ...
      </Rule>
  </LifecycleConfiguration>
  ```

  複数のタグに基づいてフィルタを指定できます。次の例で示されるとおり、`<And>` 要素でタグを囲む必要があります。ルールは、2 つのタグ (特定のタグキーと値を持つ) が付与されたオブジェクトでライフサイクルアクションを実行するように Amazon S3 に指示します。

  ```
  <LifecycleConfiguration>
      <Rule>
        <Filter>
           <And>
              <Tag>
                 <Key>key1</Key>
                 <Value>value1</Value>
              </Tag>
              <Tag>
                 <Key>key2</Key>
                 <Value>value2</Value>
              </Tag>
               ...
            </And>
        </Filter>
        transition/expiration actions
      </Rule>
  </Lifecycle>
  ```

  ライフサイクルルールは、指定された両方のタグが付与されたオブジェクトに適用されます。Amazon S3 は論理 `AND` を実行します。次の点に注意してください。
  + 各タグは、キーと値の両方で**正確に一致する必要があります。`<Key>` 要素のみを指定し、`<Value>` 要素を指定しない場合、ルールはタグキーと一致し、**値が指定されていないオブジェクトにのみ適用されます。
  + ルールは、ルールで指定されたすべてのタグが付与されたオブジェクトのサブセットに適用されます。オブジェクトに追加のタグが指定されていても、ルールは引き続き適用されます。
**注記**  
フィルタで複数のタグを指定する場合、各タグキーは一意である必要があります。
+ **プレフィックスと単一または複数のタグの両方に基づくフィルターの指定** – ライフサイクルルールでは、キープレフィックスと単一または複数のタグの両方に基づいてフィルターを指定できます。繰り返しになりますが、次に示すとおり、これらすべてを `<And>` 要素で囲む必要があります。

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
            <And>
               <Prefix>key-prefix</Prefix>
               <Tag>
                  <Key>key1</Key>
                  <Value>value1</Value>
               </Tag>
               <Tag>
                  <Key>key2</Key>
                  <Value>value2</Value>
               </Tag>
                ...
            </And>
          </Filter>
          <Status>Enabled</Status>
          transition/expiration actions
      </Rule>
  </LifecycleConfiguration>
  ```

  Amazon S3 は、論理 `AND` を使用してこのようなフィルターを組み合わせます。つまり、ルールは指定したキープレフィックスと特定のタグを持つオブジェクトのサブセットに適用されます。フィルタのプレフィックスは最大 1 個、タグは 0 個以上にします。
+ **空のフィルタを指定** – 空のフィルタを指定できます。その場合、ルールはオブジェクト内のすべてのバケットに適用されます。

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
          </Filter>
          <Status>Enabled</Status>
          transition/expiration actions
      </Rule>
  </LifecycleConfiguration>
  ```
+ **オブジェクトサイズフィルタを指定** – オブジェクトサイズでルールをフィルタリングするには、最小サイズ (`ObjectSizeGreaterThan`) または最大サイズ (`ObjectSizeLessThan`) を指定するか、またはオブジェクトのサイズの範囲を指定できます。

  オブジェクトサイズの値はバイト単位です。フィルターの最大サイズは 50 TB です。ストレージクラスによっては、オブジェクトサイズに最小制限があります。詳細については、「[Amazon S3 ストレージクラスの比較](storage-class-intro.md#sc-compare)」を参照してください。

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
              <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan>   
          </Filter>
          <Status>Enabled</Status>
          transition/expiration actions
      </Rule>
  </LifecycleConfiguration>
  ```
**注記**  
`ObjectSizeGreaterThan` フィルターおよび `ObjectSizeLessThan` フィルターは、指定された値を除外します。例えば、S3 Standard ストレージクラスから S3 Standard-IA ストレージクラスに移動するためにオブジェクトのサイズを 128 KB から 1024 KB に設定した場合、1024 KB ちょうどのオブジェクトと 128 KB ちょうどのオブジェクトは S3 Standard-IA に移動されません。代わりに、このルールは 128 KB より大きく 1024 KB よりも小さいサイズのオブジェクトにのみ適用されます。

  オブジェクトサイズの範囲を指定する場合は、`ObjectSizeGreaterThan` 整数は `ObjectSizeLessThan` 値未満にする必要があります。複数のフィルタを使用する場合は、`<And>` エレメントのフィルタを包む必要があります。次の例は、500 バイトから 64,000 バイトの範囲でオブジェクトを指定する方法を示しています。

  ```
  <LifecycleConfiguration>
      <Rule>
          <Filter>
              <And>
                  <Prefix>key-prefix</Prefix>
                  <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan>
                  <ObjectSizeLessThan>64000</ObjectSizeLessThan>
              </And>    
          </Filter>
          <Status>Enabled</Status>
          transition/expiration actions
      </Rule>
  </LifecycleConfiguration>
  ```

# Amazon S3 がライフサイクル設定の競合を処理する方法
<a name="lifecycle-conflicts"></a>

一般的に、Amazon S3 ライフサイクルはコストに合わせて最適化されます。たとえば、2 つの有効期限ポリシーが重複している場合は、短い有効期限ポリシーが適用されるため、データが予想よりも長く保存されることはありません。同様に、2 つの移行ポリシーが重複している場合は、S3 ライフサイクルによってオブジェクトが低コストのストレージクラスに移行されます。

いずれの場合でも、S3 ライフサイクルによって、最も安価なパスが選択されます。この一般的なルールの例外として、S3 Intelligent-Tiering ストレージクラスの場合があります。S3 Intelligent-Tiering は、S3 Glacier Flexible Retrieval および S3 Glacier Deep Archive ストレージクラスを除くどのストレージクラスよりも S3 ライフサイクルで優先されます。

S3 ライフサイクル設定に複数のルールがある場合、1 つのオブジェクトが同じ日に複数の S3 ライフサイクルアクションの対象になることがあります。このような場合、Amazon S3 は以下の一般的なルールに従います。
+ 完全な削除は、移行より優先されます。
+ 移行は、[削除マーカー](DeleteMarker.md)の作成より優先されます。
+ オブジェクトが S3 Glacier Flexible Retrieval と S3 Standard-IA (または S3 One Zone-IA) 移行の両方の対象になる場合、Amazon S3 は S3 Glacier Flexible Retrieval 移行を選択します。

## 重複するフィルタ、競合するライフサイクルアクションの例
<a name="lifecycle-config-conceptual-ex5"></a>

重複するプレフィックスまたはアクションを指定する S3 ライフサイクル設定を指定する場合があります。次の例では、競合の可能性を Amazon S3 でどのように解決するかを示します。

**Example 1: 重複したプレフィックス (競合なし)**  
以下の設定例には、次のように重複するプレフィックスを指定する 2 つのルールがあります。  
+ 1 番目のルールは、空のフィルターを指定することで、バケット内のすべてのオブジェクトを示しています。
+ 2 番目のルールは、キー名プレフィックス (`logs/`) を指定することで、オブジェクトのサブセットのみを示しています。
ルール 1 では、すべてのオブジェクトを作成後 1 年で削除するように Amazon S3 にリクエストします。ルール 2 では、オブジェクトのサブセットを作成後 30 日で S3 Standard – IA ストレージクラスに移行するように Amazon S3 にリクエストします。  

```
 1. <LifecycleConfiguration>
 2.   <Rule>
 3.     <ID>Rule 1</ID>
 4.     <Filter>
 5.     </Filter>
 6.     <Status>Enabled</Status>
 7.     <Expiration>
 8.       <Days>365</Days>
 9.     </Expiration>
10.   </Rule>
11.   <Rule>
12.     <ID>Rule 2</ID>
13.     <Filter>
14.       <Prefix>logs/</Prefix>
15.     </Filter>
16.     <Status>Enabled</Status>
17.     <Transition>
18.       <StorageClass>STANDARD_IA</StorageClass>
19.       <Days>30</Days>
20.     </Transition>
21.    </Rule>
22. </LifecycleConfiguration>
```
この場合、競合は発生しないため、Amazon S3 は作成から 30 日後に `logs/` プレフィックスを持つオブジェクトを S3 標準 – IA ストレージクラスへ移行させます。オブジェクトの作成後 1 年に達すると、そのオブジェクトは削除されます。

**Example 2: 競合するライフサイクルアクション**  
この設定例には、オブジェクトの有効期間内の同じ時点で同じオブジェクトセットに対して 2 つの異なるアクションを実行するよう Amazon S3 に指示する 2 つのルールがあります。  
+ 両方のルールで同じキー名プレフィックスが指定されているので、どちらのルールも同じオブジェクトのセットに適用されます。
+ どちらのルールでも、オブジェクトが作成されてから同じ 365 日後にルールを適用するように指定されています。
+ 1 つのルールは、オブジェクトを S3 Standard – IA ストレージクラスに移行するように Amazon S3 に指示しています。もう 1 つのルールは、同じタイミングでオブジェクトを有効期限切れにするよう Amazon S3 に指示しています。

```
<LifecycleConfiguration>
  <Rule>
    <ID>Rule 1</ID>
    <Filter>
      <Prefix>logs/</Prefix>
    </Filter>
    <Status>Enabled</Status>
    <Expiration>
      <Days>365</Days>
    </Expiration>        
  </Rule>
  <Rule>
    <ID>Rule 2</ID>
    <Filter>
      <Prefix>logs/</Prefix>
    </Filter>
    <Status>Enabled</Status>
    <Transition>
      <StorageClass>STANDARD_IA</StorageClass>
      <Days>365</Days>
    </Transition>
   </Rule>
</LifecycleConfiguration>
```
この場合、ユーザーはオブジェクトを有効期限切れに (削除予定) するよう望んでおり、ストレージクラスを変更しても意味がないため、Amazon S3 はこれらのオブジェクトに対して失効アクションを選択します。

**Example 3: ライフサイクルアクションが競合する重複したプレフィックス**  
この例の設定には、次のように重複するプレフィックスを指定する 2 つのルールがあります。  
+ ルール 1 では、空のプレフィックス (すべてのオブジェクトを示します) が指定されています。
+ ルール 2 では、すべてのオブジェクトのサブセットを識別するキー名プレフィックス (`logs/`) が指定されています。
キー名プレフィックスが `logs/` のオブジェクトのサブセットには、両方のルールの S3 ライフサイクルアクションが適用されます。片方のルールは作成されてから 10 日後にオブジェクトを移行するよう Amazon S3 に指示しており、もう一方のルールは作成されてから 365 日後にオブジェクトを移行するよう Amazon S3 に指示しています。  

```
<LifecycleConfiguration>
  <Rule>
    <ID>Rule 1</ID>
    <Filter>
      <Prefix></Prefix>
    </Filter>
    <Status>Enabled</Status>
    <Transition>
      <StorageClass>STANDARD_IA</StorageClass>
      <Days>10</Days> 
    </Transition>
  </Rule>
  <Rule>
    <ID>Rule 2</ID>
    <Filter>
      <Prefix>logs/</Prefix>
    </Filter>
    <Status>Enabled</Status>
    <Transition>
      <StorageClass>STANDARD_IA</StorageClass>
      <Days>365</Days> 
    </Transition>
   </Rule>
</LifecycleConfiguration>
```
この場合、Amazon S3 は作成後 10 日での移行を選択します。

**Example 4: タグベースのフィルタ処理の結果によるライフサイクルアクションの競合**  
それぞれがタグフィルターを指定する 2 つのルールを含む次のような S3 ライフサイクル設定があるものとします。  
+ ルール 1 では、タグベースのフィルタ (`tag1/value1`) が指定されています。このルールは、作成されてから 365 日後にオブジェクトを S3 Glacier Flexible Retrieval ストレージクラスに移行するよう Amazon S3 に指示します。
+ ルール 2 では、タグベースのフィルタ (`tag2/value2`) が指定されています。このルールは、作成されてから 14 日後にオブジェクトを期限切れにするよう Amazon S3 に指示します。
S3 ライフサイクル設定は以下のようになります。  

```
<LifecycleConfiguration>
  <Rule>
    <ID>Rule 1</ID>
    <Filter>
      <Tag>
         <Key>tag1</Key>
         <Value>value1</Value>
      </Tag>
    </Filter>
    <Status>Enabled</Status>
    <Transition>
      <StorageClass>GLACIER</StorageClass>
      <Days>365</Days> 
    </Transition>
  </Rule>
  <Rule>
    <ID>Rule 2</ID>
    <Filter>
      <Tag>
         <Key>tag2</Key>
         <Value>value2</Value>
      </Tag>
    </Filter>
    <Status>Enabled</Status>
    <Expiration>
      <Days>14</Days> 
    </Expiration>
   </Rule>
</LifecycleConfiguration>
```
オブジェクトに両方のタグがある場合、Amazon S3 はどのルールに従うかを決定する必要があります。この場合、Amazon S3 は作成されてから 14 日後にオブジェクトを期限切れにします。オブジェクトは削除されるため、移行アクションは行われません。





# S3 ライフサイクル設定の例
<a name="lifecycle-configuration-examples"></a>

このセクションでは、S3 ライフサイクル設定の例を示します。それぞれの例では、各サンプルシナリオで XML をどのように指定するかを示します。

**Topics**
+ [作成後 1 日以内にすべてのオブジェクトをアーカイブする](#lifecycle-config-ex1)
+ [ライフサイクルルールの一時的な無効化](#lifecycle-config-conceptual-ex2)
+ [オブジェクトの有効期間全体にわたってストレージクラスの層を下げる](#lifecycle-config-conceptual-ex3)
+ [複数のリソースの指定](#lifecycle-config-conceptual-ex4)
+ [バージョニングが有効なバケットへのライフサイクルルールを指定する](#lifecycle-config-conceptual-ex6)
+ [バージョニングが有効なバケットで期限切れのオブジェクト削除マーカーを削除する](#lifecycle-config-conceptual-ex7)
+ [マルチパートアップロードを中止するライフサイクル設定](#lc-expire-mpu)
+ [データがない旧オブジェクトの有効期限](#lc-size-rules)
+ [例: 128 KB 未満のオブジェクトの移行を許可する](#lc-small-objects)

## 作成後 1 日以内にすべてのオブジェクトをアーカイブする
<a name="lifecycle-config-ex1"></a>

各 S3 ライフサイクルルールには、S3 ライフサイクルルール適用先バケット内のオブジェクトのサブセットを識別するのに使用できるフィルターが含まれます。以下の S3 ライフサイクル設定は、フィルタを指定する方法の例です。
+ この S3 ライフサイクル設定ルールでは、フィルターはキープレフィックス (`tax/`) を指定しています。したがって、ルールは、キー名プレフィックスが `tax/` のオブジェクト (`tax/doc1.txt`、`tax/doc2.txt` など) に適用されます。

  このルールは、Amazon S3 に以下のことを命じる 2 つのアクションを指定します。
  + 作成されてから 365 日後にオブジェクトを S3 Glacier Flexible Retrieval ストレージクラスに移行します。
  + 作成から 3,650 日 (10 年) 後にオブジェクトを削除する (`Expiration` アクション)。

  ```
  <LifecycleConfiguration>
    <Rule>
      <ID>Transition and Expiration Rule</ID>
      <Filter>
         <Prefix>tax/</Prefix>
      </Filter>
      <Status>Enabled</Status>
      <Transition>
        <Days>365</Days>
        <StorageClass>GLACIER</StorageClass>
      </Transition>
      <Expiration>
        <Days>3650</Days>
      </Expiration>
    </Rule>
  </LifecycleConfiguration>
  ```

  オブジェクトの経過日数を作成後の日数で指定する代わりに、各アクションの日付を指定できます。ただし、`Date` と `Days` の両方を同じルールで使用することはできません。
+ バケット内のすべてのオブジェクトに S3 ライフサイクルルールを適用する場合は、空のプレフィックスを指定します。以下の設定では、作成から 0 日後にオブジェクトを S3 Glacier Flexible Retrieval ストレージクラスに移行するよう Amazon S3 に指示する `Transition` アクションをルールとして指定しています。このルールは、オブジェクトが作成後の 午前 0 時 (UTC) に S3 Glacier Flexible Retrieval へのアーカイブ対象となることを意味します。ライフサイクルの制約の詳細については、「[移行に関する制約と考慮事項](lifecycle-transition-general-considerations.md#lifecycle-configuration-constraints)」を参照してください。

  ```
  <LifecycleConfiguration>
    <Rule>
      <ID>Archive all object same-day upon creation</ID>
      <Filter>
        <Prefix></Prefix>
      </Filter>
      <Status>Enabled</Status>
      <Transition>
        <Days>0</Days>
        <StorageClass>GLACIER</StorageClass>
      </Transition>
    </Rule>
  </LifecycleConfiguration>
  ```
+ フィルタ内にゼロまたは 1 個のキー名のプレフィックスと 0 個以上のオブジェクトタグを指定できます。以下のコード例では、キープレフィックスが `tax/` のオブジェクトのサブセットと、指定したキーと値の 2 つのタグを含むオブジェクトに、S3 ライフサイクルルールを適用しています。複数のフィルターを指定するときは、次に示すように `<And>` 要素を含める必要があることに注意してください (Amazon S3 では論理 `AND` を適用して、指定されたフィルター条件を結合します)。

  ```
  ...
  <Filter>
     <And>
        <Prefix>tax/</Prefix>
        <Tag>
           <Key>key1</Key>
           <Value>value1</Value>
        </Tag>
        <Tag>
           <Key>key2</Key>
           <Value>value2</Value>
        </Tag>
      </And>
  </Filter>
  ...
  ```

  
+ オブジェクトのフィルタはタグに基づいてのみ行うことができます。たとえば、以下の S3 ライフサイクルルールは、2 つのタグが指定されている (プレフィックスは指定されていない) オブジェクトに適用されます。

  ```
  ...
  <Filter>
     <And>
        <Tag>
           <Key>key1</Key>
           <Value>value1</Value>
        </Tag>
        <Tag>
           <Key>key2</Key>
           <Value>value2</Value>
        </Tag>
      </And>
  </Filter>
  ...
  ```

  

**重要**  
S3 ライフサイクル設定に複数のルールがある場合、1 つのオブジェクトが同じ日に複数の S3 ライフサイクルアクションの対象になることがあります。このような場合、Amazon S3 は以下の一般的なルールに従います。  
完全な削除は、移行より優先されます。
移行は、[削除マーカー](DeleteMarker.md)の作成より優先されます。
オブジェクトが S3 Glacier Flexible Retrieval と S3 Standard-IA (または S3 One Zone-IA) 移行の両方の対象になる場合、Amazon S3 は S3 Glacier Flexible Retrieval 移行を選択します。
 例については「[重複するフィルタ、競合するライフサイクルアクションの例](lifecycle-conflicts.md#lifecycle-config-conceptual-ex5)」を参照してください。



## ライフサイクルルールの一時的な無効化
<a name="lifecycle-config-conceptual-ex2"></a>

`status` 要素を使用して、S3 ライフサイクルルールを一時的に無効にできます。これは、既存のルールを上書きすることなく、新しいルールをテストしたり、設定に関する問題をトラブルシューティングしたりする場合に役立ちます。以下の S3 ライフサイクル設定では、2 つのルールを指定しています。
+ ルール 1 は、`logs/` プレフィックスを持つオブジェクトを作成直後に S3 Glacier Flexible Retrieval ストレージクラスに移行するよう、Amazon S3 に指示します。
+ ルール 2 は、`documents/` プレフィックスを持つオブジェクトを作成直後に S3 Glacier Flexible Retrieval ストレージクラスに移行するよう、Amazon S3 に指示します。

設定では、ルール 1 は有効で、ルール 2 は無効です。Amazon S3 は無効なルールを無視します。

```
<LifecycleConfiguration>
  <Rule>
    <ID>Rule1</ID>
    <Filter>
      <Prefix>logs/</Prefix>
    </Filter>
    <Status>Enabled</Status>
    <Transition>
      <Days>0</Days>
      <StorageClass>GLACIER</StorageClass>
    </Transition>
  </Rule>
  <Rule>
    <ID>Rule2</ID>
    <Filter>
      <Prefix>documents/</Prefix>
    </Filter>
    <Status>Disabled</Status>
    <Transition>
      <Days>0</Days>
      <StorageClass>GLACIER</StorageClass>
    </Transition>
  </Rule>
</LifecycleConfiguration>
```

## オブジェクトの有効期間全体にわたってストレージクラスの層を下げる
<a name="lifecycle-config-conceptual-ex3"></a>

この例では、S3 ライフサイクル設定を使用して、有効期間全体にわたってオブジェクトのストレージクラスの階層を下げます。層を下げると、ストレージコストを削減できます。料金に関する詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」を参照してください。

次の S3 ライフサイクル設定では、キー名プレフィックス `logs/` が付いたオブジェクトに適用されるルールを指定します。このルールは、次のアクションを指定します。
+ 2 つの移行アクション:
  + 作成されてから 30 日後にオブジェクトを S3 Standard – IA ストレージクラスに移行します。
  + 作成されてから 90 日後にオブジェクトを S3 Glacier Flexible Retrieval ストレージクラスに移行します。
+ 作成されてから 1 年後にオブジェクトを削除するよう Amazon S3 に指示する 1 つの失効アクション。

```
<LifecycleConfiguration>
  <Rule>
    <ID>example-id</ID>
    <Filter>
       <Prefix>logs/</Prefix>
    </Filter>
    <Status>Enabled</Status>
    <Transition>
      <Days>30</Days>
      <StorageClass>STANDARD_IA</StorageClass>
    </Transition>
    <Transition>
      <Days>90</Days>
      <StorageClass>GLACIER</StorageClass>
    </Transition>
    <Expiration>
      <Days>365</Days>
    </Expiration>
  </Rule>
</LifecycleConfiguration>
```

**注記**  
すべてのアクションがオブジェクトの同じセットに適用される場合 (フィルターによって識別)、すべての S3 ライフサイクルアクションを記述する 1 つのルールを使用できます。それ以外の場合、それぞれが異なるフィルタを指定する複数のルールを追加できます。

**重要**  
S3 ライフサイクル設定に複数のルールがある場合、1 つのオブジェクトが同じ日に複数の S3 ライフサイクルアクションの対象になることがあります。このような場合、Amazon S3 は以下の一般的なルールに従います。  
完全な削除は、移行より優先されます。
移行は、[削除マーカー](DeleteMarker.md)の作成より優先されます。
オブジェクトが S3 Glacier Flexible Retrieval と S3 Standard-IA (または S3 One Zone-IA) 移行の両方の対象になる場合、Amazon S3 は S3 Glacier Flexible Retrieval 移行を選択します。
 例については「[重複するフィルタ、競合するライフサイクルアクションの例](lifecycle-conflicts.md#lifecycle-config-conceptual-ex5)」を参照してください。

## 複数のリソースの指定
<a name="lifecycle-config-conceptual-ex4"></a>



オブジェクトごとに異なる S3 ライフサイクルアクションが必要な場合、複数のルールを指定できます。以下の S3 ライフサイクル設定には 2 つのルールがあります。
+ ルール 1 は、キー名プレフィックス `classA/` が付いたオブジェクトに適用されます。作成されてから 1 年後にオブジェクトを S3 Glacier Flexible Retrieval ストレージクラスに移行し、作成されてから 10 年後にそれらのオブジェクトを期限切れにするよう、Amazon S3 に指示します。
+ ルール 2 は、キー名プレフィックス `classB/` が付いたオブジェクトに適用されます。作成されてから 90 日後にオブジェクトを S3 Standard – IA ストレージクラスに移行し、作成されてから 1 年後に削除するよう Amazon S3 に指示します。

```
<LifecycleConfiguration>
    <Rule>
        <ID>ClassADocRule</ID>
        <Filter>
           <Prefix>classA/</Prefix>        
        </Filter>
        <Status>Enabled</Status>
        <Transition>        
           <Days>365</Days>        
           <StorageClass>GLACIER</StorageClass>       
        </Transition>    
        <Expiration>
             <Days>3650</Days>
        </Expiration>
    </Rule>
    <Rule>
        <ID>ClassBDocRule</ID>
        <Filter>
            <Prefix>classB/</Prefix>
        </Filter>
        <Status>Enabled</Status>
        <Transition>        
           <Days>90</Days>        
           <StorageClass>STANDARD_IA</StorageClass>       
        </Transition>    
        <Expiration>
             <Days>365</Days>
        </Expiration>
    </Rule>
</LifecycleConfiguration>
```

**重要**  
S3 ライフサイクル設定に複数のルールがある場合、1 つのオブジェクトが同じ日に複数の S3 ライフサイクルアクションの対象になることがあります。このような場合、Amazon S3 は以下の一般的なルールに従います。  
完全な削除は、移行より優先されます。
移行は、[削除マーカー](DeleteMarker.md)の作成より優先されます。
オブジェクトが S3 Glacier Flexible Retrieval と S3 Standard-IA (または S3 One Zone-IA) 移行の両方の対象になる場合、Amazon S3 は S3 Glacier Flexible Retrieval 移行を選択します。
 例については「[重複するフィルタ、競合するライフサイクルアクションの例](lifecycle-conflicts.md#lifecycle-config-conceptual-ex5)」を参照してください。

## バージョニングが有効なバケットへのライフサイクルルールを指定する
<a name="lifecycle-config-conceptual-ex6"></a>

バージョニングが有効なバケットがあるとします。つまり、各オブジェクトに、最新のバージョンと以前のバージョンが 0 個以上あります。(S3 バージョニングの詳細については、[S3 バージョニングによる複数のバージョンのオブジェクトの保持](Versioning.md) を参照してください。) 

次の例では、1 年間分の履歴を維持し、5 つの旧バージョンを保持します。S3 ライフサイクル設定では、任意のオブジェクトを 1～100 バージョンまで保持できます。Amazon S3 が特定のバージョンを期限切れにするには、5 以上の旧バージョンが存在する必要があることに注意してください。Amazon S3 は、保存すると指定された数を超える最新でないバージョンをすべて完全に削除します。削除が行われるには、`NoncurrentDays` と `NewerNoncurrentVersions` の両方の値を超える必要があります。

ストレージコストを節約するために、最新でないバージョンが最新でなくなってから 30 日後に、S3 Glacier Flexible Retrieval に移動する方法（これらの最新でないオブジェクトは、リアルタイムアクセスが必要ないコールドデータを想定しています）。また、最新のバージョンへのアクセス頻度は作成されてから 90 日後に低下すると予想されるため、これらのオブジェクトを S3 Standard-IA ストレージクラスに移動することもできます。

```
 1. <LifecycleConfiguration>
 2.     <Rule>
 3.         <ID>sample-rule</ID>
 4.         <Filter>
 5.            <Prefix></Prefix>
 6.         </Filter>
 7.         <Status>Enabled</Status>
 8.         <Transition>
 9.            <Days>90</Days>
10.            <StorageClass>STANDARD_IA</StorageClass>
11.         </Transition>
12.         <NoncurrentVersionTransition>      
13.             <NoncurrentDays>30</NoncurrentDays>      
14.             <StorageClass>GLACIER</StorageClass>   
15.         </NoncurrentVersionTransition>    
16.        <NoncurrentVersionExpiration>     
17.             <NewerNoncurrentVersions>5</NewerNoncurrentVersions>
18.             <NoncurrentDays>365</NoncurrentDays>    
19.        </NoncurrentVersionExpiration> 
20.     </Rule>
21. </LifecycleConfiguration>
```

## バージョニングが有効なバケットで期限切れのオブジェクト削除マーカーを削除する
<a name="lifecycle-config-conceptual-ex7"></a>



バージョニングが有効なバケットで、各オブジェクトに最新のバージョン 1 個と、最新でないバージョンが 0 個以上存在します。オブジェクトを削除するときは、次のことに注意してください。
+ 削除リクエストでバージョン ID を指定しない場合、Amazon S3 はオブジェクトを削除する代わりに削除マーカーを追加します。現在のオブジェクトバージョンが最新でなくなり、削除マーカーが現在のバージョンになります。
+ 削除リクエストでバージョン ID を指定した場合、Amazon S3 はそのオブジェクトバージョンを完全に削除します (削除マーカーは作成されません)。
+ 最新でないバージョンが 0 の削除マーカーは、*有効期限切れオブジェクト削除マーカー* と呼ばれます。

この例では、バケットに期限切れオブジェクト削除マーカーを作成できるシナリオと、S3 ライフサイクル設定を使用して期限切れオブジェクト削除マーカーを削除するよう Amazon S3 に指示する方法を示します。

以下に示すように、`NoncurrentVersionExpiration` アクションを使用して、最新でないバージョンがそのようになってから 30 日後に削除し、10 個の旧バージョンを保持する S3 ライフサイクル設定を記述するとします。Amazon S3 が特定のバージョンを期限切れにするには、10 以上の旧バージョンが存在する必要があることに注意してください。Amazon S3 は、保存すると指定された数を超える最新でないバージョンをすべて完全に削除します。削除が行われるには、`NoncurrentDays` と `NewerNoncurrentVersions` の両方の値を超える必要があります。

```
<LifecycleConfiguration>
    <Rule>
        ...
        <NoncurrentVersionExpiration>     
            <NewerNoncurrentVersions>10</NewerNoncurrentVersions>
            <NoncurrentDays>30</NoncurrentDays>    
        </NoncurrentVersionExpiration>
    </Rule>
</LifecycleConfiguration>
```

`NoncurrentVersionExpiration` アクションは、現在のオブジェクトバージョンには適用されません。最新以外のバージョンのみ削除されます。

現在のオブジェクトバージョンの場合、現在のオブジェクトバージョンが明確に定義されたライフサイクルに従うかどうかに応じて存続期間を管理する以下のオプションがあります。
+ **現在のオブジェクトバージョンが明確に定義されたライフサイクルに従う。**

  この場合、次の例に示すように、現在のバージョンを削除するよう Amazon S3 に指示する `Expiration` アクションを含む S3 ライフサイクル設定を使用できます。

  ```
  <LifecycleConfiguration>
      <Rule>
          ...
          <Expiration>
             <Days>60</Days>
          </Expiration>
          <NoncurrentVersionExpiration>     
              <NewerNoncurrentVersions>10</NewerNoncurrentVersions>
              <NoncurrentDays>30</NoncurrentDays>    
          </NoncurrentVersionExpiration>
      </Rule>
  </LifecycleConfiguration>
  ```

  この例では、Amazon S3 は、現在の各オブジェクトバージョンに削除マーカーを追加することで、作成から 60 日後に現在のバージョンを削除します。このプロセスにより、現在のバージョンが最新でなくなり、削除マーカーが現在のバージョンになります。詳細については、「[S3 バージョニングによる複数のバージョンのオブジェクトの保持](Versioning.md)」を参照してください。
**注記**  
同じルールに `Days` と `ExpiredObjectDeleteMarker` のタグの両方を指定することはできません。Amazon S3は削除マーカーが経過機関の基準を満たすと、`Days` タグを指定することで、自動的に `ExpiredObjectDeleteMarker` クリーンアップを実行します。削除マーカーが唯一のバージョンになったらすぐにクリーンアップできるよう、`ExpiredObjectDeleteMarker` タグだけを含む別のルールを作成します。

  同じ S3 ライフサイクル設定の `NoncurrentVersionExpiration` アクションは、最新でないオブジェクトが最新でなくなってから 30 日後に削除します。したがって、この例では、すべてのオブジェクトバージョンがオブジェクトの作成から 90 日後に完全に削除されます。この例では、Amazon S3 が特定のバージョンを期限切れにするには、10 以上の旧バージョンが存在する必要があることに注意してください。Amazon S3 は、保存すると指定された数を超える最新でないバージョンをすべて完全に削除します。削除が行われるには、`NoncurrentDays` と `NewerNoncurrentVersions` の両方の値を超える必要があります。

  この過程で期限切れのオブジェクト削除マーカーが作成されますが、Amazon S3 が検知して削除します。
+ **現在のオブジェクトバージョンに明確に定義されたライフサイクルがない。**

  この場合、必要でない場合はオブジェクトを削除できます。このとき、1 つ以上の最新でないバージョンとともに削除マーカーが作成されます。`NoncurrentVersionExpiration` アクションを含む S3 ライフサイクル設定が最新でないすべてのバージョンを削除した場合、期限切れオブジェクト削除マーカーが生成されます。

  特にこのシナリオのために、S3 ライフサイクル設定には、期限切れオブジェクト削除マーカーを削除するために使用できる `Expiration` アクションを提供します。

  

  ```
  <LifecycleConfiguration>
      <Rule>
         <ID>Rule 1</ID>
          <Filter>
            <Prefix>logs/</Prefix>
          </Filter>
          <Status>Enabled</Status>
          <Expiration>
             <ExpiredObjectDeleteMarker>true</ExpiredObjectDeleteMarker>
          </Expiration>
          <NoncurrentVersionExpiration>     
              <NewerNoncurrentVersions>10</NewerNoncurrentVersions>
              <NoncurrentDays>30</NoncurrentDays>    
          </NoncurrentVersionExpiration>
      </Rule>
  </LifecycleConfiguration>
  ```

`ExpiredObjectDeleteMarker` アクションで `true` 要素を `Expiration` に設定することで、期限切れオブジェクト削除マーカーを削除するよう Amazon S3 に指示できます。

**注記**  
`ExpiredObjectDeleteMarker` S3 ライフサイクルアクションを指定するときは、ルールではタグベースのフィルターを指定できません。

## マルチパートアップロードを中止するライフサイクル設定
<a name="lc-expire-mpu"></a>

Amazon S3 マルチパートアップロード REST API オペレーションを使用すると、大容量オブジェクトをいくつかに分けてアップロードできます。マルチパートアップロードの詳細については、「[Amazon S3 でのマルチパートアップロードを使用したオブジェクトのアップロードとコピー](mpuoverview.md)」を参照してください。

S3 ライフサイクル設定を使用すると、不完全なマルチパートアップロード (ルールで指定したキー名プレフィックスで特定) が開始後指定した日数以内に完了しない場合、アップロードを停止するように Amazon S3 に指示できます。Amazon S3 は、マルチパートアップロードを中止するとき、マルチパートアップロードに関連付けられているすべてのパートを削除します。このプロセスでは、Amazon S3 に保存されているパートを含む不完全なマルチパートアップロードがないことが保証されるので、ストレージコストを制御するのに役立ちます。

**注記**  
`AbortIncompleteMultipartUpload` S3 ライフサイクルアクションを指定するときは、ルールではタグベースのフィルターを指定できません。

`AbortIncompleteMultipartUpload` アクションにルールを指定する S3 ライフサイクル設定の例を次に示します。このアクションは、開始されたから 7 日後に不完全なマルチパートアップロードを停止するように Amazon S3 に指示します。

```
<LifecycleConfiguration>
    <Rule>
        <ID>sample-rule</ID>
        <Filter>
           <Prefix>SomeKeyPrefix/</Prefix>
        </Filter>
        <Status>rule-status</Status>
        <AbortIncompleteMultipartUpload>
          <DaysAfterInitiation>7</DaysAfterInitiation>
        </AbortIncompleteMultipartUpload>
    </Rule>
</LifecycleConfiguration>
```

## データがない旧オブジェクトの有効期限
<a name="lc-size-rules"></a>

オブジェクトのサイズのみに基づいてオブジェクトを移行するルールを作成できます。オブジェクトのサイズは、最小 (`ObjectSizeGreaterThan`) または最大 (`ObjectSizeLessThan`) を指定することも、バイト数で範囲を指定することもできます。プレフィックスとサイズの規則のように、複数のフィルターを使用する場合は、フィルターを `<And>` 要素で囲む必要があります。

```
<LifecycleConfiguration>
  <Rule>
    <ID>Transition with a prefix and based on size</ID>
    <Filter>
       <And>
          <Prefix>tax/</Prefix>
          <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan>
       </And>   
    </Filter>
    <Status>Enabled</Status>
    <Transition>
      <Days>365</Days>
      <StorageClass>GLACIER</StorageClass>
    </Transition>
  </Rule>
</LifecycleConfiguration>
```

`ObjectSizeGreaterThan` と `ObjectSizeLessThan` の両方の要素を使用して範囲を指定する場合、最大オブジェクトサイズは最小オブジェクトサイズより大きくなければなりません。複数のフィルターを使用する場合は、フィルターを `<And>` 要素で囲む必要があります。次の例は、500 バイトから 64,000 バイトの範囲でオブジェクトを指定する方法を示しています。範囲を指定する場合、`ObjectSizeGreaterThan` フィルターと `ObjectSizeLessThan` フィルターは指定された値を除外します。詳細については、「[Filter 要素](intro-lifecycle-rules.md#intro-lifecycle-rules-filter)」を参照してください。

```
<LifecycleConfiguration>
    <Rule>
        ...
          <And>
             <ObjectSizeGreaterThan>500</ObjectSizeGreaterThan>
             <ObjectSizeLessThan>64000</ObjectSizeLessThan>
          </And>
    </Rule>
</LifecycleConfiguration>
```

バージョニングが有効になっているバケットで作成された最新でない削除マーカーオブジェクトなど、データがなく、最新でないオブジェクトに限り期限切れにするルールを作成することもできます。次の例では、`NoncurrentVersionExpiration` アクションを使用して、あるバージョンが最新のバージョンでなくなってから 30 日後に削除し、10 の旧バージョンを保持します。またこの例では、`ObjectSizeLessThan` エレメントを使用してデータのないオブジェクトのみをフィルタリングします。

Amazon S3 が特定のバージョンを期限切れにするには、10 以上の旧バージョンが存在する必要があることに注意してください。Amazon S3 は、保存すると指定された数を超える最新でないバージョンをすべて完全に削除します。削除が行われるには、`NoncurrentDays` と `NewerNoncurrentVersions` の両方の値を超える必要があります。

```
<LifecycleConfiguration>
  <Rule>
    <ID>Expire noncurrent with size less than 1 byte</ID>
    <Filter>
       <ObjectSizeLessThan>1</ObjectSizeLessThan>
    </Filter>
    <Status>Enabled</Status>
    <NoncurrentVersionExpiration>     
       <NewerNoncurrentVersions>10</NewerNoncurrentVersions>
       <NoncurrentDays>30</NoncurrentDays>
    </NoncurrentVersionExpiration>
  </Rule>
</LifecycleConfiguration>
```

## 例: 128 KB 未満のオブジェクトの移行を許可する
<a name="lc-small-objects"></a>

Amazon S3 はライフサイクル設定にデフォルトの動作を適用し、128 KB 未満のオブジェクトが任意のストレージクラスに移行されないようにします。最小サイズ (`ObjectSizeGreaterThan`) または最大サイズ (`ObjectSizeLessThan`) フィルターを追加して、小さいオブジェクトを移行することを許可できます。このフィルターでは、設定に小さいサイズを指定します。次の例では、128 KB 未満のオブジェクトを S3 Glacier Instant Retrieval ストレージクラスに移行します。

```
<LifecycleConfiguration>
  <Rule>
    <ID>Allow small object transitions</ID>
    <Filter>
          <ObjectSizeGreaterThan>1</ObjectSizeGreaterThan>
    </Filter>
    <Status>Enabled</Status>
    <Transition>
      <Days>365</Days>
      <StorageClass>GLACIER_IR</StorageClass>
    </Transition>
  </Rule>
</LifecycleConfiguration>
```

**注記**  
2024 年 9 月、Amazon S3 は小さなオブジェクトのデフォルトの移行動作を次のように更新しました。  
**デフォルトの移行動作の更新** — 2024 年 9 月以降、デフォルトの動作により、128 KB 未満のオブジェクトが任意のストレージクラスに移行されることを回避します。
**以前のデフォルトの移行動作** — 2024 年 9 月以前は、デフォルトの動作により、128 KB 未満のオブジェクトは S3 Glacier Flexible Retrieval および S3 Glacier Deep Archive ストレージクラスにのみ移行できました。
2024 年 9 月より前に作成された設定は、変更しない限り、以前の移行動作を保持します。つまり、ルールを作成、編集、または削除すると、設定のデフォルトの移行動作が更新された動作に変わります。ユースケースで必要な場合は、128KB 未満のオブジェクトが S3 Glacier Flexible Retrieval および S3 Glacier Deep Archive に移行するように、デフォルトの移行動作を変更できます。これを行うには、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html) リクエストでオプションの `x-amz-transition-object-size-minimum-default` ヘッダーを使用します。

次の例は、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html) リクエストで `x-amz-transition-object-size-minimum-default` ヘッダーを使用して、S3 ライフサイクル設定に `varies_by_storage_class` のデフォルトの移行動作を適用する方法を示しています。この動作により、128 KB 未満のオブジェクトを S3 Glacier Flexible Retrieval または S3 Glacier Deep Archive ストレージクラスに移行できます。デフォルトでは、他のすべてのストレージクラスは 128 KB 未満の移行を回避します。カスタムフィルターを使用して、任意のストレージクラスの最小移行サイズを変更できます。カスタムフィルターは常にデフォルトの移行動作よりも優先されます。

```
HTTP/1.1 200
x-amz-transition-object-size-minimum-default: varies_by_storage_class
<?xml version="1.0" encoding="UTF-8"?>
...
```

# Amazon S3 ライフサイクル問題のトラブルシューティング
<a name="troubleshoot-lifecycle"></a>

以下の情報は、Amazon S3 ライフサイクル問題のトラブルシューティングに役立ちます。

**Topics**
+ [バケットでリストオペレーションを実行したところ、有効期限が切れているか、ライフサイクルルールによって移行されたと思われるオブジェクトが表示されました。](#troubleshoot-lifecycle-1)
+ [ライフサイクルルールによって実行されたアクションをモニタリングするにはどうすればよいですか？](#troubleshoot-lifecycle-2)
+ [バージョニング対応のバケットにライフサイクルルールを設定したにもかかわらず、S3 オブジェクトの数が増え続けています。](#troubleshoot-lifecycle-3)
+ [ライフサイクルルールを使用して S3 バケットを空にするにはどうすればよいですか?](#troubleshoot-lifecycle-4)
+ [オブジェクトを低コストのストレージクラスに移行した後、Amazon S3 の請求額が増加しました。](#troubleshoot-lifecycle-5)
+ [バケットポリシーを更新しましたが、S3 オブジェクトが期限切れのライフサイクルルールによってまだ削除されたままです。](#troubleshoot-lifecycle-6)
+ [S3 ライフサイクルルールによって期限切れになった S3 オブジェクトを回復できますか?](#troubleshoot-lifecycle-7)
+ [有効期限切れと移行のライフサイクルアクションが実行されないのはなぜでしょうか。](#troubleshoot-lifecycle-failures)
+ [ライフサイクルルールからプレフィックスを除外するにはどうすればよいですか?](#troubleshoot-lifecycle-8)
+ [ライフサイクルルールに複数のプレフィックスを含めるにはどうすればよいですか?](#troubleshoot-lifecycle-9)

## バケットでリストオペレーションを実行したところ、有効期限が切れているか、ライフサイクルルールによって移行されたと思われるオブジェクトが表示されました。
<a name="troubleshoot-lifecycle-1"></a>

S3 ライフサイクル[オブジェクトの移行](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html)と[オブジェクトの有効期限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-expire-general-considerations.html)は非同期リストオペレーションです。そのため、オブジェクトが期限切れまたは移行の対象となる時点と、実際に移行または期限切れになるまでに遅延が生じる可能性があります。請求の変更は、アクションが完了していなくても、ライフサイクル ルールが満たされるとすぐに適用されます。この動作の例外は、ライフサイクルルールが S3 Intelligent-Tiering ストレージクラスに移行するように設定されている場合です。オブジェクトが S3 Intelligent-Tiering に移行するまで、請求の変更は行われません。請求の変更の詳細については、「[バケットのライフサイクル設定を設定する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)」を参照してください。

**注記**  
Amazon S3 は、128 KB 未満のオブジェクトを S3 標準または S3 標準 - IA ストレージクラスから S3 Intelligent-Tiering、S3 標準 - IA、または S3 1 ゾーン - IA ストレージクラスに移行しません。

## ライフサイクルルールによって実行されたアクションをモニタリングするにはどうすればよいですか？
<a name="troubleshoot-lifecycle-2"></a>

ライフサイクルルールによって実行されたアクションをモニタリングするには、以下の機能を使用します。
+ **S3 イベント通知** - S3 ライフサイクルの有効期限や移行イベントが通知されるように [S3 イベント通知](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configure-notification.html)を設定できます。
+ **S3 サーバーアクセスログ** - S3 バケットのサーバーアクセスログを有効にして、別のストレージクラスへのオブジェクトの移行やオブジェクトの失効など、S3 ライフサイクル関連のアクションをキャプチャできます。詳細については、「[ライフサイクルおよびログ記録](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-and-other-bucket-config.html#lifecycle-general-considerations-logging)」を参照してください。

ライフサイクルアクションによるストレージの変更を毎日確認するには、Amazon CloudWatch メトリクスを使用する代わりに [S3 Storage Lens ダッシュボード](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_basics_metrics_recommendations.html#storage_lens_basics_dashboards)を使用することをお勧めします。Storage Lens ダッシュボードでは、オブジェクト数またはサイズをモニタリングする以下のメトリクスを表示できます。
+ **現行バージョンのバイト数**
+ **現行バージョンのオブジェクト数**
+ **旧バージョンのバイト数**
+ **旧バージョンのオブジェクト数**
+ **削除マーカーのオブジェクト数**
+ **削除マーカーのストレージバイト数**
+ **不完全なマルチパートアップロードのバイト数**
+ **不完全なマルチパートアップロードのオブジェクト数**

## バージョニング対応のバケットにライフサイクルルールを設定したにもかかわらず、S3 オブジェクトの数が増え続けています。
<a name="troubleshoot-lifecycle-3"></a>

[バージョニングが有効なバケット](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html#versioning-states)では、オブジェクトの有効期限が切れた場合でも、オブジェクトはバケットから完全には削除されません。代わりに、オブジェクトの最新バージョンとして[削除マーカー](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeleteMarker.html)が作成されます。削除マーカーは引き続きオブジェクトとしてカウントされます。したがって、現在のバージョンのみを期限切れにするライフサイクルルールを作成した場合、S3 バケット内のオブジェクト数は減少するのではなく実際に増加します。

例えば、S3 バケットで 100 個のオブジェクトでバージョニングが有効になっていて、そのオブジェクトの現在のバージョンが 7 日後に期限切れになるようにライフサイクルルールが設定されているとします。7 日目以降は、元のオブジェクト 100 個 に加え、非現行バージョンとなる削除マーカーが 100 個作成されるため、オブジェクト数は 200 個に増加します。バージョニングが有効なバケットの S3 ライフサイクル設定ルールアクションの詳細については、「[バケットのライフサイクル設定を設定する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)」を参照してください。

オブジェクトを完全に削除するには、ライフサイクル設定を追加して、以前のバージョンのオブジェクト、期限切れの削除マーカー、および不完全なマルチパートアップロードを削除します。新しいライフサイクルルールを作成する方法については、「[バケットにライフサイクル設定を設定する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)」を参照してください。

**注記**  
Amazon S3 は、オブジェクトの移行日または有効期限を翌日の午前 0 時 (UTC) に丸めます。  
ライフサイクルアクションのオブジェクトを評価する場合、Amazon S3 は UTC でのオブジェクトの作成時間を使用します。例えば、バージョン管理されていないバケットで、1 日後にオブジェクトを期限切れにするように設定されたライフサイクルルールがあるとします。オブジェクトが 1 月 1 日 17:05 太平洋夏時間 (PDT) に作成されたとします。これは UTC では 1 月 2 日 00:05 になります。オブジェクトは 1 月 3 日の 00:05 UTC に 1 日経過し、S3 ライフサイクルが 1 月 4 日の 00:00 UTC にオブジェクトを評価すると、オブジェクトは有効期限の対象となります。  
Amazon S3 ライフサイクルアクションは非同期で実行されるため、ライフサイクルルールで指定された日付とオブジェクトの実際の物理的な移行の間に多少の遅延が生じる場合があります。詳細については、「[移行または有効期限の遅延](how-to-set-lifecycle-configuration-intro.md#lifecycle-action-delay)」を参照してください。  
詳細については、「[ライフサイクルルール: オブジェクトの存在時間に基づく](https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#intro-lifecycle-rules-number-of-days)」を参照してください。
オブジェクトロックで保護されている S3 オブジェクトの場合、現在のバージョンは完全には削除されません。代わりに、削除マーカーがオブジェクトに追加され、オブジェクトは最新ではなくなります。その後、最新でないバージョンは保存され、永久に期限切れになることはありません。

## ライフサイクルルールを使用して S3 バケットを空にするにはどうすればよいですか?
<a name="troubleshoot-lifecycle-4"></a>

S3 ライフサイクルルールは、何百万ものオブジェクトがある [S3 バケットを空にする](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html)効果的なツールです。S3 バケットから多数のオブジェクトを削除するには、必ず次の 2 組のライフサイクルルールを使用してください。
+ **現在のバージョンのオブジェクトを期限切れにし**、**以前のバージョンのオブジェクトを完全に削除する**
+ **期限切れの削除マーカーを削除し**、**未完了のマルチパートアップロードを削除する**

ライフサイクル設定ルールを作成する手順については、「[バケットにライフサイクル設定を設定する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)」を参照してください。

**注記**  
オブジェクトロックで保護されている S3 オブジェクトの場合、現在のバージョンは完全には削除されません。代わりに、削除マーカーがオブジェクトに追加され、オブジェクトは最新ではなくなります。その後、最新でないバージョンは保存され、永久に期限切れになることはありません。

## オブジェクトを低コストのストレージクラスに移行した後、Amazon S3 の請求額が増加しました。
<a name="troubleshoot-lifecycle-5"></a>

オブジェクトを低コストのストレージクラスに移行した後に請求額が増加する理由はいくつかあります。
+ 小さなオブジェクトの S3 Glacier オーバーヘッド料金

  S3 Glacier Flexible Retrieval または S3 Glacier Deep Archive に移行した各オブジェクトについて、このストレージ更新に関連する合計 40 KB のオーバーヘッドが発生します。40 KB のオーバーヘッドの一部として、8 KB がメタデータとオブジェクト名の保存に使用されます。この 8 KB は S3 標準料金に従って請求されます。残りの 32 KB はインデックス作成と関連メタデータに使用されます。この 32 KB は、Glacier Flexible Retrieval または S3 Glacier Deep Archive の料金に従って請求されます。

  そのため、小さいサイズのオブジェクトを多数保存する場合は、ライフサイクル移行の使用はお勧めしません。オーバーヘッド料金を削減するには、Amazon S3 に保存する前に、多数の小さなオブジェクトを少数の大きなオブジェクトに集約することを検討してください。コストに関する考慮事項の詳細については、[「S3 Glacier Flexible Retrieval と S3 Glacier Deep Archive ストレージクラスへの移行 (オブジェクトのアーカイブ)」](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html#before-deciding-to-archive-objects)を参照してください。
+ 最小ストレージ料金

  一部の S3 ストレージクラスには、最小ストレージ期間要件があります。最小期間が満たされる前にそれらのクラスから削除、上書き、または移行されたオブジェクトには、日割り計算による早期移行料金または削除料金が請求されます。これらの最小ストレージ期間要件は次のとおりです。
  + S3 標準 - IA および S3 1 ゾーン - IA - IA - 30 日
  + S3 Glacier Flexible Retrieval および S3 Glacier Instant Retrieval – 90 日
  + S3 Glacier Deep Archive – 180 日

  これらの要件の詳細については、[S3 ライフサイクルを使用したオブジェクトの移行](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html)の「*制約*」セクションを参照してください。一般的な S3 料金情報については、「[Amazon S3 の料金表](https://aws.amazon.com/s3/pricing/)」と「[AWS料金計算ツール](https://calculator.aws/#/addService/S3)」を参照してください。
+ ライフサイクル移行料金

  オブジェクトがライフサイクルルールによって別のストレージクラスに移行されるたびに、Amazon S3 はその移行を 1 つの移行リクエストとしてカウントします。これらの移行リクエストの料金は、これらのストレージクラスの料金に追加されます。多数のオブジェクトを移行する場合は、下位の階層に移行するときに、リクエストの料金を考慮してください。詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」を参照してください。

## バケットポリシーを更新しましたが、S3 オブジェクトが期限切れのライフサイクルルールによってまだ削除されたままです。
<a name="troubleshoot-lifecycle-6"></a>

バケットポリシーの `Deny` ステートメントは、ライフサイクルルールで定義されているオブジェクトの有効期限を妨げません。ライフサイクルアクション (移行や有効期限など) は S3 `DeleteObject` オペレーションを使用しません。代わりに、S3 ライフサイクルアクションは内部の S3 エンドポイントを使用して実行されます。(詳細については、「[ライフサイクルおよびログ記録](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-and-other-bucket-config.html#lifecycle-general-considerations-logging)」を参照してください) 

ライフサイクルルールでアクションが実行されないようにするには、ルールを編集、削除、または[無効にする必要があります](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-examples.html#lifecycle-config-conceptual-ex2)。

## S3 ライフサイクルルールによって期限切れになった S3 オブジェクトを回復できますか?
<a name="troubleshoot-lifecycle-7"></a>

S3 ライフサイクルによって期限切れになったオブジェクトを回復する唯一の方法は、バージョニングを使用することです。バージョニングは、オブジェクトが期限切れの対象となる前に実施する必要があります。ライフサイクルルールによって実行された有効期限オペレーションは元に戻せません。適用されている S3 ライフサイクルルールによってオブジェクトが完全に削除された場合、それらのオブジェクトを復元することはできません。バケットのバージョニングを有効にするには、「[S3 バージョニングによる複数のバージョンのオブジェクトの保持](Versioning.md)」を参照してください。

バケットにバージョニングを適用しても、オブジェクトの最新バージョンがそのまま残っている場合は、[期限切れのオブジェクトの以前のバージョンを復元](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RestoringPreviousVersions.html)できます。S3 ライフサイクルルールアクションの動作とバージョニングステータスの詳細については、「[ライフサイクルアクションを記述する要素](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html#non-current-days-calculations)」の「*ライフサイクルのアクションとバケットのバージョニング状態*」テーブルを参照してください。

**注記**  
S3 バケットが [AWS バックアップ](https://docs.aws.amazon.com/aws-backup/latest/devguide/s3-backups.html) または [S3 レプリケーション](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html)によって保護されている場合、これらの機能を使用して期限切れのオブジェクトを回復できる場合もあります。

## 有効期限切れと移行のライフサイクルアクションが実行されないのはなぜでしょうか。
<a name="troubleshoot-lifecycle-failures"></a>

バージョニングが有効であるか一時停止されているバケットの場合、Amazon S3 が Expiration アクションをどのように処理するかは、次の点を考慮すると理解しやすくなります。
+ オブジェクトの有効期限は、オブジェクトの最新のバージョンにのみ適用されます(最新以外のバージョンには影響しません)。
+ 1 つ以上のオブジェクトバージョンがあり、削除マーカーが最新バージョンである場合、Amazon S3 はアクションを実行しません。
+ Amazon S3 は、S3 Object Lock が適用されているオブジェクトの非現行バージョンに対して、何もアクションを実行しません。
+ `PENDING` レプリケーションステータスのオブジェクトの場合、Amazon S3 はオブジェクトの現行バージョンまたは非現行バージョンに対して、何もアクションを実行しません。

ライフサイクルストレージクラス移行には、次の制約があります。
+ デフォルトでは、128 KB 未満のオブジェクトはどのストレージクラスにも移行されません。
+ オブジェクトは S3 Standard-IA または S3 One Zone-IA に移行される前に、30 日間以上保存されている必要があります。
+ バージョニングが有効であるか一時停止されているバケットの場合、`PENDING` レプリケーションステータスのオブジェクトは移行できません。

## ライフサイクルルールからプレフィックスを除外するにはどうすればよいですか?
<a name="troubleshoot-lifecycle-8"></a>

S3 ライフサイクルでは、ルール内のプレフィックスを除外することはサポートされていません。代わりに、タグを使用して、ルールに含めるすべてのオブジェクトにタグ付けします。ライフサイクルルールでのタグの使用については、「[作成後 1 日以内にすべてのオブジェクトをアーカイブする](lifecycle-configuration-examples.md#lifecycle-config-ex1)」を参照してください。

## ライフサイクルルールに複数のプレフィックスを含めるにはどうすればよいですか?
<a name="troubleshoot-lifecycle-9"></a>

S3 ライフサイクルでは、ルールに複数のプレフィックスを含めることはサポートされていません。代わりに、タグを使用して、ルールに含めるすべてのオブジェクトにタグ付けします。ライフサイクルルールでのタグの使用については、「[作成後 1 日以内にすべてのオブジェクトをアーカイブする](lifecycle-configuration-examples.md#lifecycle-config-ex1)」を参照してください。

ただし、同じ文字で始まるプレフィックスが 1 つ以上ある場合は、末尾のスラッシュ (`/`) を除外した部分的なプレフィックスをフィルターで指定することで、これらのプレフィックスをすべてルールに含めることができます。例えば、次のようなプレフィックスがあるとします。

```
sales1999/
sales2000/
sales2001/
```

ルールに 3 つのプレフィックスをすべて含めるには、ライフサイクルルールで `<Prefix>sales</Prefix>` を指定します。