重量級UnityプロジェクトをS3 Glacierに冷凍保存してPCストレージを節約するやつ
アセットやらNugetやらで肥大化しがちで、かといって削除するわけにもいかない昔のUnityプロジェクト。
そんな子たちをS3 Glacierに保存することでデータ保持しつつ容量節約する、という記事です。
毎月の維持費こそ掛かりますが、格安(1TBで2ドルくらい)かつデータ損失のない安心な方法なので、半年以上開いてないプロジェクトなどの保存に使ってみると良きです。と、いう備忘録。
注意点
今回はS3 Glacier DeepArchiveを使用します。その場合の注意点は以下の通りです。
・保存したデータのサイズに対して毎月料金がかかります。(といっても1TB2ドル/月くらい、爆安)
・取り出しにはお金がかかります。(そんなに高くはない)
・取り出す操作をしてから、実際に取り出されるまで最大12時間かかります。
・保存したデータは最低6ヶ月保存する必要があります。それ以前に削除すると違約金がかかります。(6ヶ月-今の利用ヶ月*毎月の保存料金がかかる)
・今回はバージニア北部リージョンを前提として話を進めます。それ以外のリージョンだと若干コマンドが異なるので適宜ぐぐってください。
= 頻繁に出し入れするような、Gitみたいな使い方には合いません。”何年か取っておきたいけれど今後半年間は起動しないだろうな”、みたいなプロジェクト用の保存方法です。
手順
①AWSアカウントをつくる
普通にアカウント作ります。
個人的に使うだけなので今回はRootUserでログイン。
追記:RootユーザーのままAWSを弄るのはリスクが高いため、別途IAMを作成してログインすることをおすすめします。
②コスト管理を設定する
万が一クラウド破産しないように設定しておきます。
ブラウザでAWSのコンソールにログイン→左上の検索に"Cost"と入力→請求とコスト管理(Billing and Cost Management)→予算 に移動。
"予算を作成"をクリックして、画像のように設定、保存します。(予算額を5ドルに変えてEメールの受信者を設定するだけ)
③UnityプロジェクトをZipにまとめる
プロジェクトのフォルダ(AssetsだのLibraryだの入ってるプロジェクト名のフォルダ)を右クリック→圧縮先→Zipに圧縮。
画像のようにZipを一つのフォルダ(Archive)にまとめて入れておきます。
このArchiveフォルダの中のZipが、今回S3に保存されるデータになります。
※今回の場合は転送したファイルの数ぶんだけ課金されるので、Zipにまとめて1ファイルにしておかないと破産します。.metaファイル単位で課金されたらたまったもんじゃない(一敗
必ずZipにまとめてください
必ずZipにまとめてください
④AWS CLIをインストール
今回はファイルサイズが大きいので、CLI経由でアップロードします。 (ブラウザ経由でもアップできますが、Unityプロジェクトはファイルサイズが大きいので失敗しちゃう)
AWS CLIをインストールしてください。
インストール後、環境変数を通すためにPCを再起動します。
試しにコマンドプロンプトを開いて" aws --version "します。
画像のようにバージョンが表示されればOKです。
⑤IAMを設定する
AWSのコンソールに戻り、IAMを設定します。
データを読み書きするための社員証、入館証みたいなもんです。たぶん。
コンソールにログインして、IAMのページに移動します。
アクセス管理→ユーザー→ユーザーの作成 と進みます。
ステップ1 適当に名前を設定し、次へ。
ステップ2 ”ポリシーを直接アタッチする”を選び、リストから"AmazonS3FullAccess"にチェックを入れ、次へ。
ステップ3 "ユーザーの作成"をクリックでユーザー完成。
ステップ4 ユーザー一覧から、今作成したユーザーをクリックして”アクセスキーを作成”をクリック。
ステップ5 "コマンドラインインターフェイス (CLI)"を選択し、次へ。
ステップ6 適当なタグ名を設定し、次へ。
ステップ7 作成されたアクセスキー・シークレットアクセスキーを".csvファイルをダウンロード"しておく。
こんな感じの画面になればIAM編 Finish
これで、S3にだけアクセスできるシークレットアクセスキーを作成できました。
くれぐれも公開したり、ゲーム内に保存したりしないよう注意してください。
⑥IAMをCLIに設定する
コマンドプロンプトで、" aws configure "と入力しEnter。
対話式に情報を聞かれるので、⑤で作成したアクセスキー、シークレットアクセスキーの順に入力、あとは空欄にしてEnterしておきます。
最終的にこうなる
⑦リージョンを指定する
リージョンとは、そのデータが保存されるデータセンターの所在地のことです。TokyoやOsakaなどもありますが、今回は"バージニア北部 us-east-1"を使用します。
(リージョンによってPingの速度やら保存料金やらが変わりますが、今回は速度を要しないので、保存料金が最安のバージニア北部をチョイス。)
再度、コマンドプロンプトで" aws configure "と入力しEnter。
Access Key IDと、Secret Access Keyは先程入力したままで良いので、何も入力せずEnterで飛ばします。
Default region nameだけ入力します。
Default region nameを聞かれたときに" us-east-1 "と入力し、Enter。 Default output formatは同じく空欄でEnterします。
⑧CLI経由でS3 Glacierにアップする
長かった設定もここまでです。
次回以降データをアップする場合は⑧以降を参照ください。
③でZipファイルをまとめたフォルダの、パス部分にcmdと入力、このディレクトリを起点としてコマンドプロンプトが開きます。
ディレクトリのところにcmdっていれる
こうなる
開かれたコマンドプロンプトで、
aws s3api create-bucket --bucket {today}
と入力し実行します。末尾の {today} は" 2025-09-15 "など、今日の日付に書き換えてください。
バケット、と呼ばれるデータの容器をつくり、命名する工程です。今回はバケットに2025-09-15と命名しました。
(この命名には_は使えないため、変わりに-を使うようにしてください。)
つづいて、
aws s3 sync . s3://{today} --storage-class DEEP_ARCHIVE
と入力し、実行します。こちらの{today}も、↑で設定したバケット名と同じ名前を設定してください。
━━アップロードが終わるまでしばし待つ━━
一連のコマンドに成功すればこうなるはず。
upload: がZipファイルの分出力されればアップロードに完了しています。
failed: があれば、成功したZipをフォルダから削除したうえで再度
aws s3 sync . s3://{today} --storage-class DEEP_ARCHIVE
を実行し、残りのZipファイルを再アップロードしてください。
ちなみに、このコマンド末尾の DEEP_ARCHIVE は今回の肝なので、省かないよう注意してください。
S3 Glacier DeepArchiveという安いプランをつかうよ、という意味です。
⑨データを確認してみる
コンソールにアクセスします。(バージニア北部以外を選んだ方はこのURLだとアクセスできないので、AWSコンソールの検索に"Glacier"と入力してください)
こんな感じで、作成したバケットが一覧で見れます。⑧で作ったバケット名をクリックします。
アップロードしたZipが表示されていれば成功。
⑨取り出してみる
アップロードしたデータを取り出すには、復元する必要があります。
取り出したいデータ名をチェックボックスで選択し、アクション→復元を開始。
チェックボックスで選択し、アクション→復元を開始
右上の”復元を開始”をクリック
復元のプロパティを設定し、”復元を開始”します。
このときのプロパティは、取り出すファイル数や保持する日数によって料金が変わるので、料金シミュレーションで安い取り出し方を試行錯誤してみてください。
数個だけ取り出す場合は画像の設定が最安のはず。
復元オプション、たぶん最安
復元を開始すると、12時間以内にデータをダウンロードできるようになります。
ブックマークにいれて、しばし待ちましょう。
10時間後
10時間くらい経った頃、リロードすると画像のように画面が変化しました。
データの用意ができたので、あとは右上の”ダウンロード”ボタンをクリックすることでZipを保存できます。
復元するときの保存日数以内にダウンロードしないと、また復元処理する必要があるので早めに保存しましょう。
あとがき
ヘビーなUnityプロジェクトを安くクラウドに保存する方法を紹介させていただきました。
自分の場合はしばらく開いていないプロジェクトが76個、合計2.2TB近くHDDを圧迫していたのでかなりスッキリしました。
データを引っ張ってくるのに、復元→ダウンロード→解凍→インポート、と合計12時間+数時間程度かかるのがネックですが、貴重なストレージ資産を解放する意義は大きいと思います。
維持費も1.6ドル/月くらいで収まった&データ損失のリスクがほぼ無くなったので、かなりコスパ◎でまんぞくまんぞく。
ちょっと手間はかかりますが、慣れれば簡単なのでぜひ試してみてください。
(思い出しながら書いてるので、間違いあれば指摘下さい)
Discussion