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になっています。
関連の記事