今までかたくなに使い続けたawscli v1ですが、ほかの人が準備するスクリプト内ではv2が使われたりとしてそのまま使えないケースが増えてきたのでついにアップグレードを決意しました。
で、今日はそのやり方を書き残しておきます。
既存のawscliをアンインストール
そもそもいつ入れたのかも覚えていないので、まずはPATHを確認します。
$ which aws ~/.local/bin/aws
ふむ・・・・・なんでこんなところにあるんだろう。
インストールはだいたいpipでやっていることが多いので、pipで入れたのかなと考えてpipでインストールしたリスト一覧を確認してみます。
$ pip list Package Version ----------------------------------------- ---------- arrow 0.15.5 attrs 19.3.0 aws-lambda-builders 0.6.0 aws-sam-cli 0.40.0 aws-sam-translator 1.19.1 awscli 1.18.130 awscli-local 0.8 Babel 2.9.0 : : :
正解!
ではこれをアンインストールします。アンインストールは簡単。uninstallでOK。
$ pip uninstall awscli Found existing installation: awscli 1.18.130 Uninstalling awscli-1.18.130: Would remove: /home/ec2-user/.local/bin/aws /home/ec2-user/.local/bin/aws.cmd /home/ec2-user/.local/bin/aws_bash_completer /home/ec2-user/.local/bin/aws_completer /home/ec2-user/.local/bin/aws_zsh_completer.sh /home/ec2-user/.local/lib/python3.6/site-packages/awscli-1.18.130.dist-info/* /home/ec2-user/.local/lib/python3.6/site-packages/awscli/* Proceed (y/n)? y Successfully uninstalled awscli-1.18.130
これでとりあえず削除できました。
v2をインストール
v2のインストールは公式サイトに書いてある通りやります。
Linux での AWS CLI バージョン 2 のインストール、更新、アンインストール - AWS Command Line Interface
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" $ unzip awscliv2.zip $ sudo ./aws/install $ sudo ./aws/install --update
上記コマンドたちを実行するとずらずらーっとなんか出てきます。
sudo ./aws/install
を実施した際に
Found preexisting AWS CLI installation: /usr/local/aws-cli/v2/current. Please rerun install script with --update flag.
とアップデートフラグを付けてもう一度やれ見たいなメッセージが出てきたので、--update
フラグを付けてもう一度やっています。
$ sudo ./aws/install --update You can now run: /usr/local/bin/aws --version
今度は正式に入ったみたいです。パスとバージョンを確認してみたら以下のようになりました。
$ which aws /usr/local/bin/aws $ aws --version aws-cli/2.1.21 Python/3.7.3 Linux/4.14.209-117.337.amzn1.x86_64 exe/x86_64.amzn.2018 prompt/off
ちゃんとv2になっていました。
aws-vaultとかも普通に使えたので問題なさげ。
まとめ
python使っている奴は2系なのか3系なのかでものすごくはまった記憶があるのでアップグレードに消極的でしたが、特に問題なくできてよかったです。
結構はまるかなーと思ったのですが予想以上にシンプルにできました。
環境整えるのもちゃんとやらないといけないなーと感じる今日この頃です。
ではでは。