[小ネタ] CloudShellで最新のAWS CLIのバージョンに自動で引き上げる方法(AWS CLIバージョン1、バージョン2両方対応)

~/.bash_profileにAWS CLIのバージョンアップのコマンドを仕込むことでログイン時に処理してくれる
2024.02.23

こんにちは、AWS事業本部の平木です!

新しいAPIが追加されるアップデートが入った際に、
検証する度に毎回AWS CLIのバージョンアップの方法を調べていたりしませんか?

自分は毎回調べるのが面倒なためCloudShellでは任意のタイミングで最新のAWS CLIのバージョンにアップデートできるようにしています。

今回は、実際に自分がCloudShellに適用しているものをご紹介します。

~/.bash_profileの編集

ホームディレクトリ内の.bash_profileファイルの末尾に下記を追記します。
※ホームディレクトリの外部のディレクトリを使用するとセッション終了時に消えてしまうため、永続的なストレージであるホームディレクトリ内のファイルに追記してください。

while read -p "Would you prefer to use the latest AWS CLI version or the default version? [1/2/(Enter)] " latest_version ; do
    case ${latest_version} in
        [1] )
            if [[ ! -e /tmp/awscli-bundle.zip ]] ; then
               curl -s "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "/tmp/awscli-bundle.zip"
               unzip -q /tmp/awscli-bundle.zip -d /tmp/
               sudo /usr/bin/python3 /tmp/awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
               aws --version
            fi
            break
        ;;

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

        * )
            break
        ;;
    esac
done

確認

CloudShellの再起動を実施してみると、毎回CloudShell起動時に対話形式で下記のように問われます。

Would you prefer to use the latest AWS CLI version or the default version? [1/2/(Enter)]

ユーザーからの入力で下記のように分岐します。

  • [1]を入力後Enter: AWS CLIバージョン1の最新バージョンでCloudShellを起動
  • [2]を入力後Enter: AWS CLIバージョン2の最新バージョンでCloudShellを起動
  • 空のままEnter:CloudShellのデフォルトバージョンで起動

となります。

APIによってはAWS CLIバージョン1しか対応していない場合や、バージョン2しか対応していない場合など様々あるため都度CloudShellを再起動し切り替えていただければと思います。

おわりに

今回は、AWS CLIバージョン1,バージョン2の両方に対応したCloudShellで最新のバージョンに引き上げる方法を記事にしました。

動作確認をよく行っていただいた上でAWS CLIを使用した検証にぜひご活用ください。