AWS EC2のAWS CLIをバージョンアップする

AWSのEC2のAWS CLIをバージョンアップするサンプルです。
(確認環境:Amazon Linux2)

目次

サンプル AWS CLIとは
  AWS CLIをバージョンアップする
AWS CLI1と2をシンボリックリンクで切り替えて使用

AWS CLIとは

AWS CLIは、コマンドラインからAWSを実行できるようにするAWS公式モジュールです。
Windows,Linux,MacOSのそれぞれにあります。

https://aws.amazon.com/jp/cli/

 

AWS CLIをバージョンアップする

Tera TermのSSHでEC2に接続します。
Tera TermのSSHでEC2に接続する

 

1.AWS CLIのバージョンを確認します。

aws --version
aws-cli/1.18.147 Python/2.7.18 Linux/5.10.118-111.515.amzn2.x86_64 botocore/1.18.6

aws-cliのバージョンは、1.18.147でした。

対象のプログラムとバージョンはスラッシュ(/)で区切られています。
対象のプログラム同士は半角スペースで区切られていて分かりづらいので注意が必要です。

 

2.AWS CLIのバージョンをアップグレードします。

curlでzipを取得

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

zipを解凍

unzip awscliv2.zip

インストール

sudo ./aws/install

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html

 

AWS CLIのバージョンを確認します。1.18.147と表示されました。上記と変わっていません。

aws --version
aws-cli/1.18.147 Python/2.7.18 Linux/5.10.118-111.515.amzn2.x86_64 botocore/1.18.6

 

インストールしたバージョン2を使用するようにします。

場所を確認

which aws
/usr/local/bin/aws

viでaliasを追加

sudo vi ~/.bashrc

 

12行目を追加

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions
alias aws="/usr/local/bin/aws"

シェルの設定を反映

source ~/.bashrc

aws cliのバージョンを確認します。2.7.15と表示されました。

aws --version
aws-cli/2.7.15 Python/3.9.11 Linux/5.10.118-111.515.amzn2.x86_64 exe/x86_64.amzn.2 prompt/off

 

AWS CLI1と2をシンボリックリンクで切り替えて使用

aws cli2がインストールされている状態で、aws cli1を取得してインストールし、シンボリックリンクを使用してバージョンの1と2を切り替えます。

[ec2-user@ip-10-0-10-4 ~]$ pwd
/home/ec2-user
[ec2-user@ip-10-0-10-4 ~]$
[ec2-user@ip-10-0-10-4 ~]$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle-1.16.312.zip" -o "awscli-bundle.zip"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 18.2M  100 18.2M    0     0  1972k      0  0:00:09  0:00:09 --:--:-- 3425k
[ec2-user@ip-10-0-10-4 ~]$
[ec2-user@ip-10-0-10-4 ~]$ mkdir awscli1-install
[ec2-user@ip-10-0-10-4 ~]$
[ec2-user@ip-10-0-10-4 ~]$ mv awscli-bundle.zip ./awscli1-install
[ec2-user@ip-10-0-10-4 ~]$
[ec2-user@ip-10-0-10-4 ~]$ cd awscli1-install/

[ec2-user@ip-10-0-10-4 awscli1-install]$ unzip awscli-bundle.zip
Archive:  awscli-bundle.zip
  inflating: awscli-bundle/install
  inflating: awscli-bundle/packages/colorama-0.3.9.tar.gz
  inflating: awscli-bundle/packages/ordereddict-1.1.tar.gz
中略
  inflating: awscli-bundle/packages/setup/wheel-0.33.6.tar.gz
  inflating: awscli-bundle/packages/setup/wheel-0.29.0.tar.gz

[ec2-user@ip-10-0-10-4 awscli1-install]$ sudo ./awscli-bundle/install -i /usr/local/aws1 -b /usr/local/bin/aws1
Running cmd: /bin/python virtualenv.py --no-download --python /bin/python /usr/local/aws1
Running cmd: /usr/local/aws1/bin/pip install --no-binary :all: --no-cache-dir --no-index --find-links file://. setuptools_scm-3.3.3.tar.gz
Running cmd: /usr/local/aws1/bin/pip install --no-binary :all: --no-cache-dir --no-index --find-links file://. wheel-0.33.6.tar.gz
Running cmd: /usr/local/aws1/bin/pip install --no-binary :all: --no-build-isolation --no-cache-dir --no-index  --find-links file:///home/ec2-user/awscli1-install/awscli-bundle/packages awscli-1.16.312.tar.gz
You can now run: /usr/local/bin/aws1 --version
[ec2-user@ip-10-0-10-4 awscli1-install]$
[ec2-user@ip-10-0-10-4 awscli1-install]$ ls -l /usr/local/bin
total 0
lrwxrwxrwx 1 root root 37 Jul 15  2022 aws -> /usr/local/aws-cli/v2/current/bin/aws
lrwxrwxrwx 1 root root 23 Mar 14 00:57 aws1 -> /usr/local/aws1/bin/aws
lrwxrwxrwx 1 root root 47 Jul 15  2022 aws_completer -> /usr/local/aws-cli/v2/current/bin/aws_completer
[ec2-user@ip-10-0-10-4 awscli1-install]$
[ec2-user@ip-10-0-10-4 awscli1-install]$ cd /usr/local/bin
[ec2-user@ip-10-0-10-4 bin]$ sudo ln -nfs /usr/local/aws-cli/v2/current/bin/aws aws2
[ec2-user@ip-10-0-10-4 bin]$
[ec2-user@ip-10-0-10-4 bin]$ ls -lrt
total 0
lrwxrwxrwx 1 root root 37 Jul 15  2022 aws -> /usr/local/aws-cli/v2/current/bin/aws
lrwxrwxrwx 1 root root 47 Jul 15  2022 aws_completer -> /usr/local/aws-cli/v2/current/bin/aws_completer
lrwxrwxrwx 1 root root 23 Mar 14 00:57 aws1 -> /usr/local/aws1/bin/aws
lrwxrwxrwx 1 root root 37 Mar 14 01:28 aws2 -> /usr/local/aws-cli/v2/current/bin/aws
[ec2-user@ip-10-0-10-4 bin]$
[ec2-user@ip-10-0-10-4 bin]$ sudo ln -nfs /usr/local/aws1/bin/aws aws
[ec2-user@ip-10-0-10-4 bin]$
[ec2-user@ip-10-0-10-4 bin]$ ls -lrt
total 0
lrwxrwxrwx 1 root root 47 Jul 15  2022 aws_completer -> /usr/local/aws-cli/v2/current/bin/aws_completer
lrwxrwxrwx 1 root root 23 Mar 14 00:57 aws1 -> /usr/local/aws1/bin/aws
lrwxrwxrwx 1 root root 37 Mar 14 01:28 aws2 -> /usr/local/aws-cli/v2/current/bin/aws
lrwxrwxrwx 1 root root 23 Mar 14 01:28 aws -> /usr/local/aws1/bin/aws
[ec2-user@ip-10-0-10-4 bin]$ aws --version
aws-cli/1.16.312 Python/2.7.18 Linux/5.10.118-111.515.amzn2.x86_64 botocore/1.13.48
[ec2-user@ip-10-0-10-4 bin]$ 
[ec2-user@ip-10-0-10-4 bin]$ sudo ln -nfs /usr/local/aws-cli/v2/current/bin/aws aws
[ec2-user@ip-10-0-10-4 bin]$
[ec2-user@ip-10-0-10-4 bin]$ ls -lrt
total 0
lrwxrwxrwx 1 root root 47 Jul 15  2022 aws_completer -> /usr/local/aws-cli/v2/current/bin/aws_completer
lrwxrwxrwx 1 root root 23 Mar 14 00:57 aws1 -> /usr/local/aws1/bin/aws
lrwxrwxrwx 1 root root 37 Mar 14 01:28 aws2 -> /usr/local/aws-cli/v2/current/bin/aws
lrwxrwxrwx 1 root root 37 Mar 14 02:00 aws -> /usr/local/aws-cli/v2/current/bin/aws
[ec2-user@ip-10-0-10-4 bin]$
[ec2-user@ip-10-0-10-4 bin]$ aws --version
aws-cli/2.7.15 Python/3.9.11 Linux/5.10.118-111.515.amzn2.x86_64 exe/x86_64.amzn.2 prompt/off

4行目は、aws cliのバージョン1を取得しています。
15行目は、zipファイルを展開しています。
24行目は、インストールしています。
-iはファイルの配置先で、-bはシンボリックリンクです。「/usr/local/bin/」がpathで「aws1」がシンボリックリンクです。

31行目は、lsコマンドでシンボリックリンクを確認しています。
現状のバージョンは33行目で、今インストールしたのは34行目です。
38行目は、現状のver2をaws2として退避させています。
47行目は、aws cliのv1をawsのシンボリックリンクとしています
55行目は、aws cliのバージョンを確認しています。1.16になっています。
58行目は、aws cli2に戻しています。
67行目は、aws cliのバージョン2になっています。

関連の記事

AWS EC2を作成/削除するサンプル

△上に戻る