Amazon SageMaker StudioのTerminal上のAWS CLIを最新のバージョン2にアップデートしてみた

2023.07.18

はじめに

Amazon SageMaker StudioのSystem terminalで、AWS CLIを利用する場合、デフォルトでは、CLIバージョン1です。

Amazon EC2 インスタンスもCLIをバージョン2にアップデートしたことはありましたが、勝手が異なり色々詰まりましたので、今回方法をまとめました。

最新バージョンをインストール

System terminalを起動します。

$ aws --version
aws-cli/1.27.141 Python/3.9.15 Linux/4.14.314-237.533.amzn2.x86_64 botocore/1.29.141

現在は、CLIバージョン1と分かります。

デフォルトですとunzipコマンドが使えないため、インストールします。

$ pwd
/home/sagemaker-user

$ sudo yum install -y unzip

CLIバージョン2の最新パッケージをダウンロードします。ダウンロードに数分かかります。

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

$ unzip awscliv2.zip
replace aws/THIRD_PARTY_LICENSES? [y]es, [n]o, [A]ll, [N]one, [r]ename: A

インストールを実行すると、/usr/local/aws-cliディレクトリが作成できないとエラーが出ますので、ディレクトリを先に作成します。

$ ./aws/install --update
mkdir: cannot create directory ‘/usr/local/aws-cli’: Permission denied

$ sudo mkdir /usr/local/aws-cli

$ ls -la /usr/local/aws-cli
total 0
drwxr-xr-x 2 root root  6 Jul 16 02:23 .
drwxr-xr-x 1 root root 21 Jul 16 02:23 ..

/usr/local/aws-cliディレクトリの権限を変えます

$ sudo chown -hR sagemaker-user:root /usr/local/aws-cli
$ sudo chmod 775 /usr/local/aws-cli
$ ls -la /usr/local/aws-cli
total 0
drwxrwxr-x 2 sagemaker-user root  6 Jul 16 02:23 .
drwxr-xr-x 1 root           root 21 Jul 16 02:23

which コマンドを使用して、awsコマンドのフルパスを確認します。

$ aws --version
aws-cli/1.27.141 Python/3.9.15 Linux/4.14.314-237.533.amzn2.x86_64 botocore/1.29.141

$ which aws
/opt/conda/bin/aws

$ ls -la /opt/conda/bin/aws
-rwxrwxr-x 1 sagemaker-user users 820 Jul 14 08:04 /opt/conda/bin/aws

インストールコマンドは、./aws/installです。

インストールコマンドを実行するとデフォルトで、すべてのファイルが/usr/local/aws-cliにインストールされます。

./aws/installコマンドのオプションは、以下です。

  • --install-dirまたは -i
    • すべてのファイルのコピー先のディレクトリを指定します。
    • デフォルトは /usr/local/aws-cli ですので、指定しなくてもよいです。
  • --bin-dirまたは -b
    • フルパスを指定しなくてもawsコマンドが実行できるよう、awsファイルのシンボリックリンクを指定します。
    • 指定したディレクトリへの書き込み権限が必要です。
    • パスにすでに存在するディレクトリへのシンボリックリンクを作成すると、インストールディレクトリをユーザーの$PATH変数に追加する必要はありません
    • --bin-dir を指定するためのパスの確認は、which awsコマンドで確認できます。
    • デフォルト値は /usr/local/bin ですので、指定する必要があります。
$ ./aws/install --bin-dir /opt/conda/bin --install-dir /usr/local/aws-cli  --update
You can now run: /opt/conda/bin/aws --version

$ /usr/local/aws-cli/v2/2.13.1/bin/aws --version
aws-cli/2.13.1 Python/3.11.4 Linux/4.14.314-237.533.amzn2.x86_64 exe/x86_64.amzn.2 prompt/off

$ /opt/conda/bin/aws --version
aws-cli/2.13.1 Python/3.11.4 Linux/4.14.314-237.533.amzn2.x86_64 exe/x86_64.amzn.2 prompt/off

$ aws --version
aws-cli/2.13.1 Python/3.11.4 Linux/4.14.314-238.539.amzn2.x86_64 exe/x86_64.amzn.2 prompt/off

$ ls -la /opt/conda/bin/aws
lrwxrwxrwx 1 sagemaker-user users 37 Jul 16 08:04 /opt/conda/bin/aws -> /usr/local/aws-cli/v2/current/bin/aws

CLIの最新2バージョンがインストールできました!

コマンドも利用できることが確認できました。

$ aws sagemaker describe-domain --domain-id ドメインID
{
    "DomainArn": "arn:aws:sagemaker:ap-northeast-1:アカウントID:domain/ドメインID",

ダウングレードする方法

CLIのバージョンを2.0.30にダウングレードする方法を紹介します。

$ pwd
/home/sagemaker-user

CLIのバージョン2.0.30をダウンロードします。

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.0.30.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
Archive:  awscliv2.zip
replace aws/README.md? [y]es, [n]o, [A]ll, [N]one, [r]ename: A

インストールし、awsコマンドのバージョンを`2.0.30に変えます。バージョンが変わったことを確認します。

$ ./aws/install --bin-dir /opt/conda/bin --install-dir /usr/local/aws-cli  --update
You can now run: /opt/conda/bin/aws --version

$ aws --version
aws-cli/2.0.30 Python/3.7.3 Linux/4.14.314-238.539.amzn2.x86_64 botocore/2.0.0dev34

ダウンロードされたパスを確認します。

$ ls -la /usr/local/aws-cli/v2/
total 0
drwxr-xr-x 4 sagemaker-user users 49 Jul 16 08:46 .
drwxrwxr-x 3 sagemaker-user root  16 Jul 16 08:04 ..
drwxr-xr-x 4 sagemaker-user users 29 Jul 16 08:46 2.0.30
drwxr-xr-x 4 sagemaker-user users 29 Jul 16 08:04 2.13.1
lrwxrwxrwx 1 sagemaker-user users 28 Jul 16 08:46 current -> /usr/local/aws-cli/v2/2.0.30

CLIのバージョン2.0.30にダウングレードし、awsコマンドに反映できました!

参考