[TIPS] AWS CLIの「v1」と「v2」を共存させて使う方法
みなさん、こんにちは!
AWS事業本部の青柳@福岡オフィスです。
AWS CLIの新しいバージョン「v2」が正式リリースされて、2カ月ほど経ちました。
[アップデート] リソース名の補完など強力な機能追加!AWS CLI v2 が GA されました! | Developers.IO
皆さん、もう使いこなしてますか?
もしかすると、互換性などを気にして旧バージョン(v1)から移行できていない方もいらっしゃるのではないでしょうか?
そこで、今回はAWS CLIの「v1」と「v2」を共存させて使い分ける方法をご紹介します。
AWS CLI v1の「新しいインストール方法」を使います
AWS CLI v1のインストール方法と言えば、Pythonのパッケージ管理システム「pip」を使った方法が良く知られていると思います。
実は、AWS CLI v2のインストール方法と同様に、zipファイルをダウンロードしてきてインストールする方法も提供されているのです。
バンドルされたインストーラを使用して AWS CLI バージョン 1 をインストールする (Linux または macOS) - AWS Command Line Interface
今回は、このインストール方法を利用して「v1」と「v2」を共存させたいと思います。
共存させる手順
「v2」→「v1」の順にインストールしていきます。
なお、pipを使ってインストールした「v1」が残っている場合は、予めアンインストールしておいてください。
AWS CLI v2のインストール
インストーラーを含むzipファイルをダウンロードして、展開します。
$ cd /tmp $ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" $ unzip awscliv2.zip
インストーラーを実行します。
$ sudo ./aws/install -i /usr/local/aws-cli -b /usr/local/bin
ここで、インストーラーのオプションパラメータについて説明します。
オプション | 説明 | 省略時のデフォルト値 |
---|---|---|
-i , --install-dir |
ライブラリを含むインストール資産の配置先ディレクトリ | /usr/local/aws-cli |
-b , --bin-dir |
実行コマンドのシンボリックリンクを作成するディレクトリ | /usr/local/bin |
-u , --update |
アップデートインストールの際に指定する | ― |
-b
オプションは、パスが通ったディレクトリにすることがポイントです。
ちなみに、今回の-i
と-b
の各オプションはいずれもデフォルトと同じパスを指定していますので、以下のようにオプションを省略しても同じ結果となります。
$ sudo ./aws/install
インストーラーの処理が正常に完了しましたら、コマンドが実行できることを確認しましょう。
$ aws --version aws-cli/2.0.8 Python/3.7.3 Linux/4.14.173-137.229.amzn2.x86_64 botocore/2.0.0dev12
AWS CLI v1のインストール
インストーラーを含むzipファイルをダウンロードして、展開します。
$ cd /tmp $ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip" $ unzip awscli-bundle.zip
インストーラーを実行します。
$ sudo ./awscli-bundle/install -i /usr/local/aws-cli-v1 -b /usr/local/bin/aws-v1
「v1」のインストーラーのオプションパラメータは以下のようになっています。
オプション | 説明 | 省略時のデフォルト値 |
---|---|---|
-i , --install-dir |
ライブラリを含むインストール資産の配置先ディレクトリ | ~/.local/lib/aws |
-b , --bin-location |
実行コマンドのシンボリックリンクのパス | シンボリックリンクを作成しない |
-b
オプションの指定方法が「v2」と異なり、シンボリックリンクを作成するディレクトリではなく、シンボリックリンクそのものであることに留意してください。
インストール完了後、コマンドが実行できることを確認しましょう。
$ aws-v1 --version aws-cli/1.18.42 Python/2.7.16 Linux/4.14.173-137.229.amzn2.x86_64 botocore/1.15.42
「v1」と「v2」のインストール先を整理すると、以下のようになります。
バージョン | インストール資産のパス | 実行コマンドのパス |
---|---|---|
AWS CLI v2 | /usr/local/aws-cli/ |
/usr/local/bin/aws /usr/local/bin/aws_completer |
AWS CLI v1 | /usr/local/aws-cli-v1/ |
/usr/local/bin/aws-v1 |
このように、-i
オプション (インストール資産の配置先)、-b
オプション (実行コマンドのシンボリックリンク) の指定を、いずれも「v1」と「v2」とで異なるパスにすることで、両バージョンを共存させることができるという訳です。
(※ 今回は、「v2」をメインに使い、必要に応じて「v1」も使う、という想定で「v1」の方を別名 (~-v1) としました。「v1」をメインで使うのであれば逆に「v2」の方を別名にすればよいかと思います)
別パターン (ローカルインストールの場合)
各種ツール類をホームディレクトリの~/.local/
配下にインストールしている方もいるのではないかと思います。
その場合には、以下のようにすればOKです。
「v2」のインストール
$ cd /tmp $ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" $ unzip awscliv2.zip $ ./aws/install -i ~/.local/aws-cli -b ~/.local/bin
「v1」のインストール
$ cd /tmp $ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip" $ unzip awscli-bundle.zip $ ./awscli-bundle/install -i ~/.local/aws-cli-v1 -b ~/.local/bin/aws-v1
ローカルインストールの場合のインストール先は、以下のようになっています。
バージョン | インストール資産のパス | 実行コマンドのパス |
---|---|---|
AWS CLI v2 | ~/.local/aws-cli/ |
~/.local/bin/aws ~/.local/bin/aws_completer |
AWS CLI v1 | ~/.local/aws-cli-v1/ |
~/.local/bin/aws-v1 |
おわりに
今回の内容は、先日参加した「JAWS-UG CLI専門支部」の オンライン勉強会 で得られた情報を参考にさせて頂きました。
セッション資料では、AWS CLI v2のアップデート内容や便利な使い方などが紹介されていますので、皆さんも是非チェックされることをお勧めします。
AWS Command Line Interface (AWS CLI) version 2 GA記念! 〜今からでも間に合う機能のおさらい~