【正解】B
【0からの解説】
①前提知識
・ストレージ クラス:Cloud Storage には Standard / Nearline(最小保存期間 30 日)/ Coldline(90 日)/ Archive(365 日)があります。冷たいクラスほど保存料金は安く、取り出し料金は高くなります。Archive は年 1 回未満しかアクセスしないデータ向けで、保存料金が最も安いクラスです。
・オブジェクトのライフサイクル管理:バケットにルール(条件:作成からの日数を表す age など/アクション:SetStorageClass でクラス変更、Delete で削除)を設定すると、Cloud Storage が条件を満たしたオブジェクトに自動でアクションを実行します。サーバーやスクリプトは不要です。ライフサイクルによるクラス変更自体には取り出し料金や早期削除料金はかかりません。
・Autoclass:オブジェクトの「最後にアクセスされてからの日数」に基づいてクラスを自動調整する機能です(30 日アクセスなしで Nearline、終端クラスを Archive にすると 90 日で Coldline、365 日で Archive)。読み取られると Standard に戻ります。管理手数料がかかり、オブジェクトの削除は行いません。
②問題文の要件の整理
・2 年より古いデータはほとんどアクセスされない → 安価なクラスへ移したい
・7 年を超えて保持してはならない → 7 年経過したら確実に削除する
・ストレージ費用を抑えたい(運用の手間もかけたくない)
③正解の理由
ライフサイクル ルールを 2 つ設定するだけで要件をすべて満たせます(例:age 730 日で SetStorageClass → ARCHIVE、age 2555 日で Delete)。作成日からの経過日数で判定するため、「2 年で冷える」「7 年で削除」という年齢ベースの要件にそのまま対応します。Archive の最小保存期間 365 日に対し、2 年目から 7 年目まで約 5 年間保存されるため早期削除料金も発生しません。マネージド機能なので追加のコンピューティングやコードも不要です。
【誤りの選択肢】
A:自前のスクリプトでも削除はできますが、VM の運用・費用、全オブジェクトのスキャン(一覧取得操作の課金)、失敗時の取りこぼしへの対処など運用負荷が大きくなります。さらに削除しか行っておらず、2 年超のデータを安価なクラスへ移す費用最適化が抜けています。同じことはライフサイクル管理でノーコードで実現できます。
C:Autoclass はオブジェクトを削除しないため、「7 年を超えて保持しない」要件を満たしません。また判定基準は作成からの年齢ではなく最終アクセスからの日数で、アクセスされると Standard に戻り、管理手数料もかかります。アクセス パターンが予測できないデータ向けの機能であり、「2 年でほぼアクセスされなくなる」と分かっている今回は、年齢ベースのライフサイクル ルールの方が適切です(なお、Autoclass を有効にしたバケットでは SetStorageClass アクションのライフサイクル ルールを併用できません)。
D:別リージョンへの複製はデータを二重に保存することになり、ネットワーク転送料金も加わってかえって費用が増えます。さらにストレージ クラスの変更を行っていないため、2 年超のデータの保存費用は下がりません。
【参考】
オブジェクトのライフサイクル管理 | Cloud Storageストレージ クラス | Cloud StorageAutoclass | Cloud Storage