S3 オブジェクトのライフサイクル管理

AWS,S3

S3にライフサイクルによる移行・有効期限アクションを設定する方法

 
  • 今回は、S3のライフサイクル管理について、失効と完全削除の理解が不明瞭であったため確認した結果をまとめてみました。
 

概要

ライフサイクル管理の概要

  • Amazon S3はライフサイクル管理を活用することで、オブジェクトをコスト効率良く保存することが可能です。
  • ライフサイクル管理には、2種類のアクションがあります。
  • 移行アクション
    • 別のストレージクラスにオブジェクトを移行するタイミングを定義します。(例:デフォルトのSTANDARTからファイルの作成後365日目にGLACIER に移行)
    • ストレージクラスによって、対象とされるアクセス頻度や可用性が異なります。また、ストレージクラスによって最小ストレージ期間が異なるため、注意してください。(例:GLACIERは90日未満であって90日分の料金が請求されます)
    • ストレージクラスの説明は、下記ドキュメントを参照。
  • 有効期限アクション
    • オブジェクトの有効期限を定義します。バケットのバージョニング対応の可否によって、有効期限切れのオブジェクトが完全に削除されるか否かが異なります。詳細は後述します。
 

コストの留意事項

  • コスト効率化のために行ったストレージクラスの移行が逆にコスト増加につながる可能性もあります。例えば、Glacierへのライフサイクル移行アクションは、リクエスト 1,000 件ごとに 0.0571USDかかります。特にELBやCloudFrontのアクセスログのような1オブジェクトのサイズが小さく、かつオブジェクトの数が多いような用途での移行は、移行にかかるコストの方が高くなることもあり得ます。
  • S3の料金は、下記ドキュメントを参照。
 

ライフサイクル管理のログ

  • ライフサイクルのアクションは、CloudTrail には記録されません。(CloudTrail は外部エンドポイントに対して行われたリクエストのみをキャプチャするため)
  • ライフサイクルのアクションは、S3 サーバーアクセスログを有効にすることでログに記録されます。以下、アクションごとの例です。
    • S3.EXPIRE.OBJECT: ライフサイクルの有効期限が切れたため、オブジェクトを完全に削除した。
    • S3.TRANSITION.OBJECT: オブジェクトの GLACIER ストレージクラスへの移行を開始した。
  • S3 サーバーアクセスログの設定は、下記記事を参照下さい。
 

オブジェクトの 失効(Expire)と完全削除(Permanently Delete)

  • ライフサイクル管理は、バージョニング対応(バージョニング有効化あるいはバージョニングの使用を停止させた状態)およびバージョニング非対応(バージョニング無効化)のどちらのバケットにも追加できます。
  • オブジェクトの失効は、バージョニング対応の可否によって動作が異なります。バージョニング非対応の場合は、失効によって、オブジェクトは完全に削除されます。
  • バージョニング対応の場合は、失効は最新のバージョンにのみ適用されます。既存の最新バージョンは、以前のバージョンとして保持されます。 
 

シーンごとの設定方法

オブジェクトを削除する

  • バージョニング非対応のバケットに設定します。
  • S3のコンソールからバケットを選択し、管理のライフサイクルを開きます。「+ ライフサイクルルールの追加」をクリックします。
  • ルール名、プレフィックスを入力します。(バケット内の全オブジェクトに適用する場合は、プレフィックス不要です)
 
  • オブジェクト削除のみの場合、移行の選択肢はチェック付けません。
 
  • 失効の設定において、現行バージョンをチェックします。次に、オブジェクトを作成してから失効するまでの日数を入力します。下記の例では、1日としておりますが、システムのポリシーに合わせて入力して下さい。
  • バージョニング対応のバケットの場合、以前のバージョンもチェックし、以前のバージョンになってからオブジェクトを完全に削除するまでの日数を入力します。
 
  • 設定内容を確認し、保存を押します。
  • 結果として本設定の場合、10/10 に作成されたオブジェクト(フォルダとファイル)は、翌々日の10/12 に失効(削除)されました。
 

オブジェクトを移行する

  • バージョニング非対応のバケットに設定します。
  • S3のコンソールからバケットを選択し、管理のライフサイクルを開きます。「+ ライフサイクルルールの追加」をクリックします。
  • ルール名、プレフィックスを入力します。(バケット内の全オブジェクトに適用する場合は、プレフィックス不要です)
 
  • 移行の設定において、現行バージョンをチェックします。次に、オブジェクトを作成してから移行するまでの日数を入力します。下記の例では、1日としておりますが、システムのポリシーに合わせて入力して下さい。
 
  • 失効の設定において、現行バージョンをチェックします。次に、オブジェクトを作成してから失効するまでの日数を入力します。下記の例では、2日としておりますが(1日目に移行アクションのため2日目以降で入力可)、システムのポリシーに合わせて入力して下さい。
  • バージョニング対応のバケットの場合、以前のバージョンもチェックし、以前のバージョンになってからオブジェクトを完全に削除するまでの日数を入力します。
 
  • 設定内容を確認し、保存を押します。
  • 結果として本設定の場合、10/10 に作成されたオブジェクト(フォルダとファイル)は、翌々日の10/12 にGlacierへ移行され、10/13に失効(削除)されました。

AWS,S3

Posted by takaaki