【正解】B
【0からの解説】
①前提知識
Cloud Storage には、アクセス頻度に応じたストレージ クラスがあります。Standard(頻繁にアクセス)、Nearline(月 1 回程度・最小保存期間 30 日)、Coldline(四半期に 1 回程度・90 日)、Archive(年 1 回未満・365 日)の順に保存料金が安くなり、その代わりにデータ取得料金と最小保存期間が大きくなります。問題文の Multi-Regional(マルチリージョナル)は旧来の(レガシーの)ストレージ クラス名です。現行の表記では「マルチリージョン(またはデュアルリージョン)のロケーションに置いた Standard ストレージ」に相当し、Google も新規には Standard の使用を推奨しています。つまり「クラス(Standard/Nearline/Coldline/Archive)」と「ロケーション(リージョン/デュアルリージョン/マルチリージョン)」は別々に選ぶ設定であり、本問の状況は「マルチリージョンの Standard で保存している記録を Archive に移したい」と読み替えて構いません。なお、ストレージ クラスを変えてもバケットのロケーション(マルチリージョン)はそのままです。
オブジェクトのライフサイクル管理(Object Lifecycle Management)は、バケットに「条件(condition)」と「アクション(action)」の組み合わせからなるルールを設定しておくと、条件に合致したオブジェクトに対して Cloud Storage が自動でアクションを実行する機能です。代表的な条件は age(オブジェクトの作成からの経過日数)、createdBefore(指定日より前に作成)、daysSinceNoncurrentTime(非現行バージョンになってからの日数)など、アクションは Delete(削除)、SetStorageClass(ストレージ クラスの変更)、AbortIncompleteMultipartUpload です。
②要件と制約語の整理
・作成から 90 日経過後はほぼアクセスされない
・規制のため無期限に保持する(削除してはいけない)
・「長期保持に適した最も低コストのクラス」= Archive
・「自動的に」「費用対効果が高い」=コードや手作業を増やさない
③正解の理由
age = 90 の条件と SetStorageClass(storageClass: ARCHIVE)のアクションを持つライフサイクル ルールを設定すると、作成から 90 日経過したオブジェクトが Cloud Storage 側で自動的に Archive に変更されます。追加のコンピューティング料金も運用コードも不要で、Multi-Regional から Archive への変更もライフサイクル管理で許可されている遷移です。ライフサイクル管理によるクラス変更はオブジェクトを書き換えないため、移行のための再書き込み料金もかかりません(クラス A オペレーションとして課金されます)。なお、ライフサイクル アクションは条件を満たした後、非同期に実行されるため、通常は 24 時間以内などの多少の遅延があります。
【誤りの選択肢】
A:daysSinceNoncurrentTime は「上書きや削除で非現行(過去)バージョンになってからの日数」を表す条件です。現行(ライブ)のアーカイブ記録そのものは対象にならないため、90 日を過ぎた記録が Multi-Regional のまま残り続け、要件を満たしません。さらに Object Versioning を有効にすると不要な旧バージョンの保存料金が増えます。
C:Cloud Run function(旧 Cloud Functions)と Cloud Scheduler で自前の処理を作れば動作はしますが、コードの作成・保守・エラー処理が必要で、関数の実行料金も追加されます。同じことは組み込みのライフサイクル管理で設定だけで実現できるため、費用対効果と運用負荷の両面で劣ります。また夜間バッチでは「90 日経過直後」の変更にもなりません。
D:Delete アクションはオブジェクトを削除してしまうため、「無期限に保持する」という規制要件に反します。また createdBefore は固定日付を指定する条件で、「常に作成から 90 日」という相対的な期間を表すことはできません。
【参考】
オブジェクトのライフサイクル管理 | Cloud Storageストレージ クラス | Cloud Storage