AWS CloudShell のホームディレクトリの保存期間に関する注意事項 #reinvent

2020.12.22

しばたです。
先日Black Belt 2020 年 AWS re:Invent 速報 Part3を視聴した際に知って軽く驚いたのでブログにまとめてみました。

TL;DR

本記事で言いたいことはこれだけです。

AWS CloudShellの $HOME ディレクトリは永続的に保存されますが、120日間CloudShellへのアクセスが無い場合は自動的に削除されます。
無期限の永続保存ではないのでご注意ください。

AWS CloudShellのホームディレクトリの保存期間

たったこれだけですがFAQ制限事項にもきちんと記載されていますので一読しておくと良いでしょう。

FAQより

Q: How long will CloudShell keep my data?
CloudShell environments will preserve files stored in your home directory ($HOME) for up to 120 days from the last time you initiated a CloudShell session. This limit applies on a regional basis. If you use CloudShell in multiple Regions, each Region has a separate timer, which begins from the time your last CloudShell session was closed per Region. Accessing CloudShell in the expiring Region through the same IAM principal will reset the timer.

制限事項より

こちらの方がより詳細な仕様が記載されています。

If you stop using AWS CloudShell in an AWS Region, data is retained in the persistent storage of that Region for 120 days after the end of your last session. After 120 days unless you take action, your data will be automatically deleted from the persistent storage of that Region. You can prevent removal by simply launching AWS CloudShell again in that AWS Region.

  • $HOMEディレクトリのデータはリージョン毎で保存される
  • 最終セッションから120日保持され、120日経過するとそのリージョンのデータは自動的に削除される
  • データの削除を防ぐには(120日以内に)そのリージョンでAWS CloudShellを起動すればよい

加えて

  • 120日間の計測は各リージョンごとで独立している

点にも気を付けておくと良いでしょう。

他社クラウドではどうなのか?

せっかくなので他社クラウド(AzureとGCP)のCloud Shellの仕様も確認してみました。

Google Cloud Shellの場合

Google Cloud ShellもAWS CloudShell同様に$HOMEディレクトリが5GBの永続ストレージとして提供されています。
そしてこちらも120日アクセスが無いと自動で削除されてしまいます。

Cloud Shell の無効化: Cloud Shell に 120 日間アクセスしないと、ホームディスクが削除されます。削除される前に通知メールが届きます。セッションを開始すれば削除は回避できます。取り扱いに注意を要するデータを長期間保存したい場合は、Google Cloud Storage の他のソリューションの使用をご検討ください。

AWS CloudShellと同じ、というよりはAWS CloudShellがGoogle Cloud Shellの仕様に合わせてきたと見るのが正解な気がします。

どちらもストレージの利用費が無料である以上、無期限永続といかないのは仕方のないことだと思います。

Azure Cloud Shellの場合

対してAzure Cloud Shellの場合は、最初にCloud Shellを利用する際に永続ストレージ用のストレージアカウントおよびストレージ情報の設定 *1を行います。

これにより5GBの仮想ディスクファイルが作成され、Cloud Shellの$HOMEにマウントして永続利用することが可能となります。

このストレージ利用は有償でありストレージ利用量と転送量に応じた費用がかかりますが、ユーザーが削除しない限り永久に使用し続けることが可能となっています。

最後に

以上となります。

私は以前からAzure Cloud Shellを使っていたこともありAWS CloudShellおよびGoogle Cloud Shellの仕様を把握しておらず初見でちょっと面食らってしまいました。
とはいえ一度知ってしまえば大した問題ではないと思いますし、今となっては各社の設計思想の違いを知れて面白く感じています。

みなさんもAWS CloudShellを使う際には気を付けてみてください。

脚注

  1. Azure Files共有を使用するローカル冗長ストレージ(LRS)