CloudShellで常に最新のAWS CLIを使う方法

記事タイトルとURLをコピーする

こんにちは。AWS CLIが好きな福島です。

今回は、タイトル通り、CloudShellで常に最新のAWS CLIを利用する方法をご紹介いたします。

結論

~/.bash_profileに以下を追記すればOKです。 この設定を行うだけで、CloudShellにログインする度にAWS CLIのバージョンアップを自動で行います。

if [[ ! -e /tmp/awscliv2.zip ]] ; then
   cd /tmp
   curl -s "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
   unzip -q awscliv2.zip
   sudo ./aws/install --update
   aws --version
fi

ログインする度にと記載しましたが、制限付きでCloudShellはセッションを使いまわすことができるため、/tmp/awscliv2.zipにファイルがある場合は、AWS CLIのバージョンアップを行わないようにしています。 (セッションが使いまわされている(AWS CLIが最新な)のにバージョンアップを行うのはイケてないと思ったためです。)

設定後に再起動した画面

アップデート後に「aws --version」を実行しているため、赤枠のようにバージョン情報が出力されます。 f:id:swx-fukushima:20211004024512p:plain

なぜアップデートが必要か

そもそも、CloudShellのAWS CLIのバージョンは最新ではありません。 以下は、2021/10/04時点の情報で、バージョンが2.2.15になっておりますが、この時点の最新は、2.2.43になります。

[cloudshell-user@ip-10-0-109-224 ~]$ aws --version
aws-cli/2.2.15 Python/3.8.8 Linux/4.14.243-185.433.amzn2.x86_64 exec-env/CloudShell exe/x86_64.amzn.2 prompt/off
[cloudshell-user@ip-10-0-109-224 ~]$ 

そして、CloudShellを利用したことがある方はご存じかと思いますが、CloudShellは利用していないと20,30分でシェルセッションが終了します。 例え、利用していても12時間連続して実行されていてもシェルセッションは終了します。

キーボードやポインタを使用して対話しない場合、20 — 30 分を呼び出すと、シェルセッションが終了します。 約 12 時間連続して実行されているシェルセッションは、ユーザーがその期間中に定期的に対話している場合でも、自動的に終了します。

の制限と制約AWS CloudShell - AWS CloudShell

また、CloudShellは永続ストレージが$HOMEで1GBしか利用できなく、シェルセッションが終了すると、$HOME以外に保存したデータは削除されてしまいます。 もちろん、AWS CLIは$HOME配下にインストールされている訳ではないため、1度バージョンアップをしても、シェルセッションが終了するとデフォルトのバージョンに戻ってしまいます。 ※永続ストレージ($HOME)も永続ではなく、120日間利用していないと、データが削除されます。

永続ストレージはホームディレクトリ($ HOME)にあり、プライベートです。 AWSリージョンでAWSCloudShellの使用を停止すると、最後のセッションの終了後120日間、データはそのリージョンの永続ストレージに保持されます。 アクションを実行しない限り、120日後、データはそのリージョンの永続ストレージから自動的に削除されます。

の制限と制約AWS CloudShell - AWS CloudShell

そのため、最新のAWS CLIを使いたい場合は都度、AWS CLIのバージョンアップを実行する必要がありますが、毎回手動で実行するのは大変なため、 常に最新のAWS CLIを利用できるように、ログイン時に読み込まれる~/.bash_profileに上記設定を行う方法をご紹介いたしました。

終わりに

実は上記以外にAWS CLIの最新を使う方法として、永続ストレージである$HOMEにAWS CLIを導入する方法も考えられますが、個人的には、上記のがスマートだと思うため、方法はこのブログでは記載しないことにしました。 どなたかのお役に立てれば幸いです。