はじめる前に
- 必須AWS アカウントを持っていること
- 必須マネジメントコンソールにサインインできること
- 必須S3 でバケットを作り、ファイルをアップロードした経験があること
- あると良い「データには、よく使うものとめったに使わないものがある」という感覚
- あると良いS3 に「ストレージクラス(保管の種類)」が複数あることを聞いたことがある(本文で説明します)
※ このハンズオンは すべてコンソールだけで完結します。ライフサイクルによる移行・削除は日数をかけて自動で起きるため、ここでは「ルールを正しく設定できた」ところまでをゴールとします。
参照する公式ドキュメント
手順に迷ったときや、用語の意味を確かめたいときに開きましょう。
※ リンク切れの場合は、ページタイトルで検索してください。
背景・シナリオ
ファイルは、置いた直後はよく使っても、時間がたつとだんだんアクセスされなくなるものです。たとえばログや古い資料は、最初の数日は見るかもしれませんが、数か月後にはほとんど開きません。それでも「念のため」残しておきたい——そんなデータを、ずっと一番高い保管方法で持ち続けるのは、もったいない話です。
S3 には、アクセス頻度に応じて使い分けるストレージクラス(保管の種類)が複数あります。よく使う標準クラスは取り出しが速い代わりに割高、めったに使わないデータ向けのクラスは安い代わりに取り出しに手間や時間がかかる、といった違いです。ライフサイクルルールを使うと、「置いてから N 日たったら安いクラスへ移す」「M 日たったら自動で削除する」といった整理を自動で行えます。今回はこのルールを作ります。
なぜ古いデータを「安いクラス」に移すの?
アクセスが減ったデータには、取り出しの速さより保管の安さが向いているからです。すぐ取り出す必要がなくなったものを安いクラスへ移すと、同じデータを持ち続けても保管料金を下げられます。「使う頻度に保管方法を合わせる」という考え方です。
設定したら、すぐ移行や削除が起きるの?
いいえ。ライフサイクルは日数を基準に、AWS が一日一回ほどのペースで自動処理します。設定した瞬間に移動・削除されるわけではありません。そのため今回は、ルールを正しく作れたことをゴールにします。
バケットにライフサイクルルールを作り、一定日数が過ぎたオブジェクトを安いストレージクラスへ自動で移行し、さらに一定日数後に自動で削除(有効期限切れ)する設定が、正しく保存されている状態にする。
つくる構成
アップロードしたオブジェクトは、置いてからの日数に応じて、安いストレージクラスへ段階的に移っていき、最後は自動で削除されます。下は設定の一例です(日数やクラスは自分で決められます)。
よく使う・取り出し速い
保管が安い
さらに安い・取り出しに時間
自動でなくなる
※ 安いクラスへの移行には最短日数の決まりがある場合があります(例:標準 → 標準-IA は 30 日以上)。
要件
以下の要件を満たすライフサイクルルールを作成してください。日数やクラスは例を参考に、自分で決めて構いません。
| No | 要件 |
|---|---|
| 1 | リージョンは「東京(ap-northeast-1)」を使用する。 |
| 2 | S3 バケットを 1 つ作成し(名前は世界で一意。例:my-lifecycle-yourname-20260620)、確認用にファイルをいくつかアップロードする。 |
| 3 | ライフサイクルルールを 1 つ作成する。適用範囲は、バケット全体か、特定のプレフィックス(例:logs/)のどちらでもよい。 |
| 4 | ルールに、一定日数後に安いストレージクラスへ移行するアクションを入れる(例:30 日後に「標準 — 低頻度アクセス」、90 日後に「Glacier Flexible Retrieval」)。 |
| 5 | ルールに、さらに一定日数後に有効期限切れ(自動削除)するアクションを入れる(例:365 日後に削除)。 |
| 6 | ルールが「有効」として保存され、移行・有効期限の内容と日数、適用範囲が確認できる。 |
構築の進め方
「バケットを用意 → ルールの適用範囲 → 移行のアクション → 削除のアクション」の順に組み立てます。日数の意味を意識しながら設定しましょう。
-
マネジメントコンソールにサインインし、リージョンを合わせる
ブラウザで AWS マネジメントコンソールにサインインし、画面右上のリージョンが「アジアパシフィック(東京)ap-northeast-1」になっていることを確認します。
-
バケットを作り、確認用のファイルを置く
S3 コンソールで「バケットを作成」し、世界で一意な名前を付けます。ルールの対象を分かりやすくするため、いくつかファイルをアップロードしておきます(特定範囲に適用したい場合は、
logs/のようなフォルダを作ってその中に置きます)。プレフィックスで対象を絞れるライフサイクルルールは、バケット全体だけでなく
logs/のようなプレフィックス(先頭の名前)で対象を絞れます。「ログだけ古くなったら整理したい」といった使い分けができます。 -
ライフサイクルルールの作成を開始し、適用範囲を決める
バケットの「管理」タブ →「ライフサイクルルールを作成」を開きます。ルール名(例:
archive-and-expire)を付け、適用範囲を選びます。バケット全体に適用するか、プレフィックス(例:logs/)で絞るかを決めます。ルールの範囲
このバケット内のすべてのオブジェクトに適用バケット全体に同じルールをかける1 つ以上のフィルターを使用してルールの範囲を限定するプレフィックスやタグで対象を絞る↳今回はバケット全体に適用するため「このバケット内のすべてのオブジェクトに適用」を選びます
全体に効かせるときは確認が入るバケット内のすべてに適用する場合、影響範囲が広いため確認のチェックを求められます。意図した範囲かどうかを、ここで一度立ち止まって確かめましょう。
-
「安いクラスへ移行」するアクションを設定する
ルールのアクションで「オブジェクトの現行バージョンをストレージクラス間で移行する」を選びます。移行先のクラスと日数を、例を参考に設定します。
移行 1 作成から 30 日後 → 標準 — 低頻度アクセス(Standard-IA) 移行 2(任意) 作成から 90 日後 → Glacier Flexible Retrieval 移行には最短日数の決まりがあるたとえば「標準 → 標準-IA」は、作成から30 日以上たってからでないと移行できません。日数を小さくしすぎると設定できないことがあるので、例の値を目安にしましょう。クラスごとの特性は、参照ドキュメントで確認できます。
-
「有効期限(自動削除)」のアクションを設定する
同じルールの中で「オブジェクトの現行バージョンを有効期限切れにする」を選び、削除までの日数を設定します(例:作成から 365 日後)。これで、役目を終えたデータが自動で削除されるようになります。
有効期限は「自動で消える」有効期限切れのアクションは、指定日数が過ぎたオブジェクトを自動で削除します。便利な反面、必要なものまで消さないよう、対象範囲と日数は慎重に決めましょう。移行の日数より後ろに設定するのが基本です。
-
内容を確認して保存する
ルールの「概要」で、適用範囲・移行(クラスと日数)・有効期限(日数)の内容を確認し、「ルールを作成」で保存します。一覧でルールのステータスが「有効」になっていれば設定完了です。
移行・削除はこれから自動で起きるルールは保存した時点から働き始めますが、実際の移行・削除は指定した日数が経過したオブジェクトに対して、後日自動的に適用されます。今すぐ画面上で移動が起きるわけではない点に注意しましょう。
つまずきポイント
初学者がよく引っかかる箇所を先回りでまとめました。答えそのものは載せていませんが、「どこを見直せばよいか」の手がかりとして使ってください。
「ルールを作ったのに、オブジェクトのクラスが変わらない」
これは故障ではありません。ライフサイクルは「アップロードからの経過日数」を基準に、AWS が後日(おおむね一日一回ほどのペースで)自動処理します。設定した瞬間に移動・削除されるものではないため、ルールが「有効」で保存できていれば、このハンズオンとしては達成です。日数や対象範囲が意図どおりかを確認しておきましょう。
「移行の日数でエラーになる、または削除のほうが先に来てしまう」
①移行先クラスごとの最短日数の決まり(例:標準 → 標準-IA は 30 日以上)を下回っていないか、②有効期限(削除)の日数が、移行の日数より後ろになっているかを確認しましょう。削除のほうが早いと、安いクラスへ移る前に消えてしまい、移行の設定が意味を持ちません。日数は「移行 → 移行 → 削除」と後ろへ進む順に並べます。
完了チェック
要件の再確認ではなく、画面のどこを見れば達成を確認できるかをまとめました。S3 コンソールを開いて、次を順に確かめましょう。
- バケットの「管理」タブに、作成したライフサイクルルールがある。
- そのルールのステータスが「有効」になっている。
- ルールの詳細に、ストレージクラスへの移行(クラスと日数)の設定がある。
- ルールの詳細に、有効期限(削除)の日数の設定があり、移行より後ろの日数になっている。
- ルールの適用範囲(バケット全体、またはプレフィックス)が意図どおりになっている。
考えてみよう
手を動かすことに加えて、次の問いに自分の言葉で答えられるようにしておくと、理解がより深まります。
- 古いデータを安いストレージクラスへ移すと保管料金は下がりますが、いいことばかりではありません。安いクラスには、どんな「引き換え」があるでしょうか。
ヒント
安いクラス、とくに Glacier 系は、取り出しに時間がかかったり、取り出し自体に料金がかかったり、最低保存期間が決められていたりします。「保管は安いが、出すのは手間」という性質です。よく出し入れするデータには向かない、という観点で考えてみましょう。 - 有効期限(自動削除)はコスト削減に役立ちますが、リスクもあります。どんな点に気をつけて日数や対象を決めるべきでしょうか。
ヒント
自動削除は、指定日数が過ぎたものを問答無用で消します。まだ必要なデータが対象範囲に含まれていると、自動で失われてしまいます。「対象範囲(プレフィックス)」と「日数」を、本当に消してよいものだけに合わせる慎重さが必要、という観点で考えてみましょう。 - 「アクセス頻度が読めない・ばらばら」というデータの場合、日数で機械的に移行を決めるのが難しいことがあります。アクセス状況に応じて自動でクラスを最適化してくれる仕組みが S3 にないか、調べてみましょう。
ヒント
アクセスのパターンを自動で見て、よく使われるか・使われないかに応じてクラスを自動で動かしてくれるストレージクラスがあります。「日数で決め打ちできないデータ」に向いた選択肢です。「Intelligent-Tiering」というキーワードで調べてみましょう。
後片づけ
学習で作ったルールとバケットを片づけます。ライフサイクルルール自体には料金はかかりませんが、置いたオブジェクトには保管料金がかかるため、忘れず削除しましょう。
- ライフサイクルルールを削除する(任意):バケットの「管理」タブで、作成したルールを選んで削除します(バケットごと消す場合は省略してかまいません)。
- オブジェクトを削除する:バケットを開き、アップロードしたオブジェクトをすべて削除します(バケット一覧で「空にする」を使うとまとめて消せます)。
- バケットを削除する:中が空になったら、バケットを削除します。
料金がかかるのは「保管しているオブジェクト」
ライフサイクルルールを削除しても、すでに置いてあるオブジェクトは残り、保管料金はかかり続けます。コストを止めるには、オブジェクト本体を削除する必要があります。とくに、移行先が Glacier 系のクラスになっているオブジェクトには、最低保存期間に伴う扱いがある点も意識しておきましょう。
コストに関する注意: S3 は、保存しているデータ量・リクエストの回数・データ転送量に応じて課金され、ストレージクラスごとに保管の単価が異なります(標準は割高、低頻度アクセスや Glacier 系は安い)。安いクラスは保管料が下がる代わりに、取り出しにリクエスト料金や時間がかかったり、最低保存期間が設けられていることがあります。ライフサイクルによる移行にも、移行のリクエスト料金が少額かかります。ライフサイクルルールの設定自体に料金はかかりませんが、置いたオブジェクトには保管料金がかかるため、学習が終わったら上の「後片づけ」でオブジェクトとバケットを削除しておきましょう。新規アカウントには無料利用枠(一般的に 5 GB のストレージ)があり、小さなファイルでの学習ならごく少額です。最新の料金やクラスごとの条件は、AWS の公式料金ページで確認してください。