はじめに
以前からなんとなく気になっていたので、AWS CLIをv1
→ v2
へバージョンアップしてみた!
AWS CloudFormationで、EC2とEIPをセットしたAWS CLIのバージョンアップを試すだけの贅沢なスタックを作成し、スタックの作成・削除だけで簡単にグローバルIPを紐づけたEC2の立ち上げを行う。
AWS CLIだが、ver1とver2では同じaws
コマンドが使用されるので共存はできるみたいなのだが、あまり推奨はされていないらしいので、今回はver1とはおさらばしてみる。
- 実行環境:Amazon Linux2
インストール手順
アップロードしたいEC2にSSH接続し、以下の手順で行なっていく。
##################################
■ 現状確認とv1の削除
#################################
$ aws --version
=> aws-cli/1.18.147 Python/2.7.18 Linux/4.14.243-185.433.amzn2.x86_64 botocore/1.18.6s
$ which aws
=> /usr/bin/aws
# ver1のCLIを削除
$ sudo rm -rf /usr/bin/aws
# ちゃんと削除されているか確認
$ sudo find /usr -name aws
$ aws --version
=> command not found: aws
##################################
■ ここからがver2のインストール
#################################
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install
=> You can now run: /usr/local/bin/aws --version
$ sudo ./aws/install --update
=> Found same AWS CLI version: /usr/local/aws-cli/v2/2.4.23. Skipping install.
パスが前のバージョンを参照したままの可能性があるので一度EC2からでて、再度入り直し確認
$ aws --version
=> aws-cli/2.4.23 Python/3.8.8 Linux/5.10.96-90.460.amzn2.x86_64 exe/x86_64.amzn.2 prompt/off
失敗した時
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install
$ sudo ./aws/install --update
$ aws --version
=> aws-cli/1.18.147 Python/2.7.18 Linux/4.14.243-185.433.amzn2.x86_64 botocore/1.18.6s
同じような手順で実行しても上手くいかない時があった。
インストールまで終わり、aws --version
で確認するとどうしてもver1
のまま・・・
ver2はインストールされているが、前のバージョンが生き残っており、そちらを参照している模様。
なので、↓の手順でver2インストール前に事前にしっかりと削除しておくことで対処できました。
(削除しなくてもパスの変更とかで出来そうな気がし、試したのが力及ばす・・・・😢)
$ which aws
=> /usr/bin/aws
# ver1のCLIを削除
$ sudo rm -rf /usr/bin/aws
AWS CLI v2になって変わったこと
個人的にいいなと思った部分は、↓のようなところ。
Command Line Interfaceと言ってるだけあり、やはりUIを意識した点にはさすがと感じました!
- リソース名の補完
- 自動プロンプト
- ウィザード
さっそく使ってみる
$ aws --cli-auto-prompt
# 実行したいコマンドを入力すると合わせて、補完候補が表示されていく
> aws cloudformation deploy
~~~
~~~
おまけ
AWS CLIは、help
が優秀すぎる!
AWS CLIは本当にhelpが優秀だなと感じます。
オプションの書き方なんて、ほとんどうろ覚えじゃないですか、、、
そんなときに aws ~~~ help
すれば、アマゾンプライム会員以上の速度で自分の欲しい情報が手に入ります。
$ aws cloudformation deploy help
# grepで絞り込んでも良い
$ aws cloudformation deploy help | grep stack