AWS CLI v1が2026年7月にメンテナンスモード入り。v1が残っていないか確認してECR認証をv2化してみた

AWS CLI v1が2026年7月にメンテナンスモード入り。v1が残っていないか確認してECR認証をv2化してみた

AWS CLI v1が2026年7月15日にメンテナンスモードへ移行します。v2を使っているつもりでも、Amazon Linux 2のyum経由やpip経由でv1が残っているケースがあります。本記事ではv1の検出方法と、v2で削除されたECR認証コマンドの移行手順を紹介します。
2026.06.11

はじめに

2026年1月15日、AWSはAWS CLI v1を2026年7月15日にメンテナンスモードへ移行すると発表しました。

https://aws.amazon.com/blogs/developer/cli-v1-maintenance-mode-announcement/

さらに2026年6月10日には、v1のメンテナンスモード移行に伴う依存関係の変更(botocore・s3transferのベンダリング化)についても発表されています。

https://aws.amazon.com/blogs/developer/aws-cli-v1-maintenance-mode-announcing-changes-to-dependency-updates/

v1とv2のステータスを整理すると以下のようになります。

v1 v2
ステータス 2026/7/15〜メンテナンスモード、2027/7/15〜End-of-support GA(継続開発)
新機能追加 なし あり
新サービス対応 なし あり
重大バグ・セキュリティ修正 あり(メンテナンスモード期間中) あり
依存関係 botocore/s3transferがベンダリングに変更 組み込み済み

「自分はもうv2を使っている」と思っていても、環境によっては意図せずv1が残っているケースがあります。本記事では、v1が潜んでいないか確認する方法を示し、代表的な破壊的変更であるECR認証コマンドのv2化を実演します。

自分の環境にv1が潜んでいないか確認する

v1が意図せず残っている代表的なパターンは以下の通りです。

  • Amazon Linux 2ではyum経由でv1がプリインストールされている
  • pip install awscli を実行すると、PyPI上のawscliパッケージ最新版(執筆時点で1.44.87)= v1がインストールされる
  • 古いCI/CDイメージにv1が含まれている
  • pyenv等でPython環境を構築した際、一緒にインストールした

確認に使うコマンド

# バージョン確認
aws --version

# バイナリの場所(複数パスがないか確認)
which aws
type -a aws

# pipでv1が入っていないか
python3 -m pip list | grep -i awscli

ローカル環境(v1なしの例)

筆者のローカル環境(Fedora Asahi Remix 43 / aarch64)の結果です。

$ aws --version
aws-cli/2.35.1 Python/3.14.5 Linux/6.19.14-400.asahi.fc43.aarch64+16k exe/aarch64.fedora-asahi-remix.43

$ which aws
/usr/local/bin/aws

$ type -a aws
aws は /usr/local/bin/aws です

v2 (2.35.1) のみがインストールされており、パスも /usr/local/bin/aws の1つだけでした。

EC2 Amazon Linux 2(v1が入っている例)

Amazon Linux 2(t3a.small)の結果です。

$ aws --version
aws-cli/1.18.147 Python/2.7.18 Linux/4.14.355-282.733.amzn2.x86_64 botocore/1.18.6

$ which aws
/usr/bin/aws

$ yum list installed awscli
Installed Packages
awscli.noarch                   1.18.147-1.amzn2.0.2                   installed

yum経由でv1 (1.18.147) がプリインストールされていました。

v1を削除してv2をインストールする

# v1を削除
$ sudo yum remove -y awscli
yum removeの出力全文
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Resolving Dependencies
--> Running transaction check
---> Package awscli.noarch 0:1.18.147-1.amzn2.0.2 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package       Arch          Version                     Repository        Size
================================================================================
Removing:
 awscli        noarch        1.18.147-1.amzn2.0.2        installed        7.9 M

Transaction Summary
================================================================================
Remove  1 Package

Installed size: 7.9 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : awscli-1.18.147-1.amzn2.0.2.noarch                           1/1
  Verifying  : awscli-1.18.147-1.amzn2.0.2.noarch                           1/1

Removed:
  awscli.noarch 0:1.18.147-1.amzn2.0.2

Complete!

削除を確認します。

$ which aws
which: no aws in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)

$ aws --version
-bash: aws: command not found
$ cd /tmp && curl -s https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip \
  && unzip -q awscliv2.zip && sudo ./aws/install
You can now run: /usr/local/bin/aws --version
$ aws --version
aws-cli/2.35.2 Python/3.14.5 Linux/4.14.355-282.733.amzn2.x86_64 exe/x86_64.amzn.2

$ which aws
/usr/local/bin/aws

v2 (2.35.2) のインストールが完了しました。パスが /usr/bin/aws(v1)から /usr/local/bin/aws(v2)に変わっている点にも注目してください。

Amazon Linux 2023でのpip混入検証

Amazon Linux 2023では pip install awscli でv1が混入するのか確認しました。

$ aws --version
aws-cli/2.33.15 Python/3.9.25 Linux/6.1.174-217.345.amzn2023.x86_64 source/x86_64.amzn.2023

$ python3 -m pip install awscli
Requirement already satisfied: awscli in /usr/lib/python3.9/site-packages (2.33.15)

AL2023ではv2 (2.33.15) がpipパッケージとしてシステムのsite-packages(/usr/lib/python3.9/site-packages)にインストールされています。pipはこれを認識して Requirement already satisfied と判断するため、v1は混入しませんでした。

--upgrade を付けても結果は同様でした。

一方、PyPI上の awscli パッケージの最新バージョンを確認すると以下の通りです。

$ python3 -m pip index versions awscli
awscli (1.44.87)
INSTALLED: 2.33.15
LATEST:    1.44.87

PyPI上の最新は1.44.87(v1)ですが、AL2023ではローカルにインストール済みのv2が優先されるため問題ありません。ただし、AL2023以外の環境(Ubuntu、macOS、一般的なCI/CDコンテナ等)でクリーンなPython環境から pip install awscli を実行するとv1がインストールされます。

ECR認証コマンドをv2化する

AWS CLI v1では aws ecr get-login コマンドでECRの認証情報を取得していましたが、v2ではこのコマンドは削除されています。

v2で ecr get-login を実行するとエラーになる

$ aws ecr get-login --no-include-email --region ap-northeast-1

aws: [ERROR]: An error occurred (ParamValidation): argument operation: Found invalid choice 'get-login'

v2では ecr get-login サブコマンド自体が存在しないため、エラーになります。CI/CDパイプライン等で ecr get-login を使っているスクリプトがあれば、v2移行時に必ず書き換えが必要です。

v2の ecr get-login-password で認証する

v2では ecr get-login-password を使い、パイプで docker login に渡します。

aws ecr get-login-password --region ap-northeast-1 | \
  docker login --username AWS --password-stdin <account-id>.dkr.ecr.ap-northeast-1.amazonaws.com
Login Succeeded

ecr get-login-password はトークン文字列のみを標準出力に返します(今回の実行では2988文字)。パイプ経由で docker login に渡されるため、シェル履歴やプロセスリストにパスワードが露出しません。v1の ecr get-login では docker login -u AWS -p <トークン> というコマンド文字列が出力され、$(...) で実行する形でした。この点はセキュリティ上の改善でもあります。

注意事項・Tips

Amazon Linux 2自体のEOLについて

本記事の検証はAmazon Linux 2で実施しましたが、AL2自体が2026年6月30日にEnd of Lifeを迎えます。

Amazon Linux 2 のサポート終了日 (サポート終了、または EOL) は 2026 年 6 月 30 日です。
https://aws.amazon.com/jp/amazon-linux-2/faqs/

AL2上でCLI v1を使っているワークロードは、CLI移行だけでなくOS更新(AL2023等)もあわせて検討が必要です。

移行支援ツール

AWS CLI v2への移行にあたり、AWSは2つのツールを提供しています。

upgrade debug mode(v1 1.44.0以降で利用可能)

既存スクリプトをv1上で実行しながら、v2で動作が変わる箇所を警告してくれるモードです。v2へ切り替える前の影響範囲把握に役立ちます。

https://docs.aws.amazon.com/cli/latest/userguide/cli-upgrade-debug-mode.html

AWS CLI v1-to-v2 Migration Tool

bashスクリプトを静的解析し、v2で動作が変わる箇所を自動修正するツールです。

https://docs.aws.amazon.com/cli/latest/userguide/cli-migration-tool.html

公式マイグレーションガイドによると、16件の破壊的変更に対する検出能力は以下の通りです(公式ドキュメント記載値であり、筆者が全項目を検証した結果ではありません)。

ツール 検出件数 自動修正
upgrade debug mode 15/16 なし(警告のみ)
Migration Tool 7/16 あり

upgrade debug modeで広く検出し、Migration Toolで自動修正可能な箇所を処理する、という併用が効果的です。

https://docs.aws.amazon.com/cli/latest/userguide/cliv2-migration.html

まとめ

AWS CLI v1は2026年7月15日にメンテナンスモードへ移行し、2027年7月15日にEnd-of-supportとなります。新機能や新サービスへの対応はv2が前提となるため、早めに利用状況を確認しておくことが重要です。

「すでにv2を使っている」と思っていても、Amazon Linux 2のyum経由や、pip install awscli によって意図せずv1が残っている場合があります。まずは aws --versiontype -a aws で、実行されているAWS CLIのバージョンとパスを確認しましょう。

v1が見つかった場合は、利用中のスクリプトやCI/CDへの影響を確認したうえで、v2への移行を進めます。特にECR認証で使われていた aws ecr get-login はv2で削除されているため、aws ecr get-login-password を使う形式への書き換えが必要です。

移行時には、upgrade debug modeやMigration Toolを活用することで、v2で動作が変わる箇所の検出や一部の自動修正ができます。期限直前に慌てないよう、今のうちに環境とスクリプトを棚卸ししておくことをおすすめします。

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事