本文へスキップ
BecomeCoder

AWSコース · 第4章 ストレージ · レッスン20

S3のストレージクラスとライフサイクル

導入

同じS3でも、「よくアクセスするデータ」と「ほとんど開かない古いログ」を同じ料金で保存するのはもったいない話です。S3には、アクセス頻度に応じて料金を最適化できるストレージクラスが用意されています。

説明

S3には主に次のストレージクラスがあります。アクセス頻度が低い(=取り出す機会が少ない)ものほど、保存コストは安くなります。

ストレージクラス特徴向いている用途
S3 Standard標準。高い可用性・耐久性、取り出しも高速頻繁にアクセスするデータ
S3 Standard-IA低頻度アクセス用。保存コストは安いが取り出し時に料金たまにしか見ないが、すぐ取り出したいデータ
S3 One Zone-IAStandard-IAと似るが単一AZにのみ保存し、さらに割安再作成可能な低頻度データ
S3 Intelligent-TieringアクセスパターンをAWSが監視し、自動で最適な階層へ移動アクセス頻度が読めないデータ
S3 Glacier Instant Retrievalアーカイブ用。ミリ秒単位で取り出し可能ほぼ使わないが、たまに即座に見たいデータ
S3 Glacier Flexible Retrievalアーカイブ用。取り出しに数分〜数時間年に数回程度しか使わないデータ
S3 Glacier Deep Archive最安のアーカイブ。取り出しに約12時間法令保存など、長期間ほぼ開かないデータ

これらを手動で移動させるのは大変なので、ライフサイクルルールを設定して自動化します。「作成から30日経過したオブジェクトはStandard-IAへ」「180日経過したらGlacierへ」「1年経過したら削除」といったルールを決めておけば、S3が自動的にオブジェクトを安いクラスへ移動・削除してくれます。

graph LR
  a["S3 Standard\n(作成直後)"] -- 30日後 --> b["S3 Standard-IA"]
  b -- 180日後 --> c["S3 Glacier\nFlexible Retrieval"]
  c -- 365日後 --> d["削除"]
{
  "Rules": [
    {
      "Status": "Enabled",
      "Transitions": [
        { "Days": 30, "StorageClass": "STANDARD_IA" },
        { "Days": 180, "StorageClass": "GLACIER" }
      ],
      "Expiration": { "Days": 365 }
    }
  ]
}

具体例

サーバーのアクセスログを考えます。ログは「作られた直後はよく調べるが、時間が経つほど開かなくなる」典型的なデータです。

ある会社では、毎日大量に溜まるログをすべて S3 Standard に置き続けた結果、保存料金がじわじわ膨らんでいました。そこで、ログの“寿命”に合わせたライフサイクルルールを設定しました。

  • 0〜30日 … 障害調査でよく見るので S3 Standard(取り出し高速)
  • 30〜180日 … たまにしか見ないので Standard-IA へ自動移動(保存料が安い)
  • 180日〜1年 … ほぼ見ないので Glacier へ(さらに安い)
  • 1年経過 … 保存義務が切れるので自動削除

人手で移動させる必要はなく、ルールに沿ってS3が勝手に安いクラスへ落としていきます。「よく使う今は高速なクラス、古くなったら安いクラス、不要になったら削除」——データの一生に合わせて置き場所を変えるのがコツです。

読んでみよう

「アクセス頻度が低いクラスほど保存料金は安いが、取り出しには時間や料金がかかる」というトレードオフと、それを自動化するライフサイクルルールの役割をセットで覚えましょう。

次のレッスンへ →