導入
同じS3でも、「よくアクセスするデータ」と「ほとんど開かない古いログ」を同じ料金で保存するのはもったいない話です。S3には、アクセス頻度に応じて料金を最適化できるストレージクラスが用意されています。
説明
S3には主に次のストレージクラスがあります。アクセス頻度が低い(=取り出す機会が少ない)ものほど、保存コストは安くなります。
| ストレージクラス | 特徴 | 向いている用途 |
|---|---|---|
| S3 Standard | 標準。高い可用性・耐久性、取り出しも高速 | 頻繁にアクセスするデータ |
| S3 Standard-IA | 低頻度アクセス用。保存コストは安いが取り出し時に料金 | たまにしか見ないが、すぐ取り出したいデータ |
| S3 One Zone-IA | Standard-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 }
}
]
}
読んでみよう
「アクセス頻度が低いクラスほど保存料金は安いが、取り出しには時間や料金がかかる」というトレードオフと、それを自動化するライフサイクルルールの役割をセットで覚えましょう。