AWS CLI v2 は APT パッケージが公式に提供されておらず、インストールや更新は zip をダウンロードして install スクリプトを実行する独自手順になっています。「普段の apt install / apt upgrade で済ませたい」という動機から、AWS CLI v2 を配信する APT リポジトリを作って公開しました。
つくったもの
- APT リポジトリ: https://apt-awscli-v2.masanao.site/
- ソースコード: https://github.com/izumo-m/apt-awscli-v2
Ubuntu / Debian 系で、GPG 署名付きの一般的なパッケージと同じように apt install awscli-v2 でインストール・更新できます。
セットアップ(初回のみ)
curl -fsSL https://apt-awscli-v2.masanao.site/public.key \
| sudo gpg --dearmor -o /usr/share/keyrings/apt-awscli-v2.gpg
echo "deb [signed-by=/usr/share/keyrings/apt-awscli-v2.gpg] \
https://apt-awscli-v2.masanao.site stable main" \
| sudo tee /etc/apt/sources.list.d/apt-awscli-v2.list
インストール・更新
sudo apt update
sudo apt install awscli-v2 # AWS CLI v2
sudo apt install session-manager-plugin # Session Manager Plugin もインストール可能
# 更新は普段の apt upgrade に含まれる
sudo apt update && sudo apt upgrade
使う側のメリット
-
apt install/apt upgradeで完結- zip のダウンロード、解凍、install スクリプトの実行といった独自手順が不要
- 他のパッケージとまとめて更新できる
-
新バージョンに自動追従
- リポジトリ側が 1 日 1 回(JST 朝、週 5 日)GitHub の最新リリースを確認し、新バージョンが出れば自動で deb を生成・配信
- 利用者は何も気にする必要がない
-
amd64 / arm64 両対応
- Intel / AMD はもちろん、Graviton などの arm64 インスタンスでも同じ手順で導入可能
-
Session Manager Plugin もインストール可能
- AWS CLI と合わせて使うことが多い Session Manager Plugin も
apt install session-manager-pluginでインストールできる
- AWS CLI と合わせて使うことが多い Session Manager Plugin も
-
GPG 署名付き
- 一般的な APT リポジトリと同様、GPG で署名を検証したうえでインストールされる
なぜ作ったか
AWS CLI v1 は pip install awscli でインストールできたのに対し、v2 からは公式が配布する zip を展開して install スクリプトを実行する方式に変わりました。公式ドキュメントどおりだと次のようになります。
# x86_64 の場合
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
# arm64 (Graviton など) の場合
# curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install --update
この公式手順には、次のような不満がありました。
- 新バージョンが出ているかを自分で気にする必要がある
- URL や手順を毎回覚えているとは限らず、そのつど公式ドキュメントを検索する必要がある
- 他のパッケージは
apt upgradeで済むのに、AWS CLI v2 だけ手順が異なる
つまり、普段のパッケージ管理フローに乗せたい —— というのが動機です。
アーキテクチャ概要
内部は AWS のサーバーレスサービスだけで組んでおり、アイドル時のコストはほぼゼロです。AWS 側の費用は個人利用であれば月額数セント程度に収まっています(このほかに独自ドメインの年間費用が別途かかります)。
- EventBridge Scheduler が 1 日 1 回(JST 朝、週 5 日)Lambda を起動
- Lambda が GitHub 上の
aws/aws-cliリリースをチェックし、新バージョンがあれば deb パッケージを生成して S3 に同期 - S3 の前段に Cloudflare CDN を置き、独自ドメインで配信
実装は Rust + Pulumi(TypeScript)で書いており、deb パッケージの生成や GPG 署名も Rust 側で完結させています。内部の作りに興味のある方は GitHub リポジトリ のソースコードをご参照ください。
アンインストール
合わなかった場合は、以下で元の状態に戻せます。
# パッケージの削除
sudo apt remove awscli-v2 session-manager-plugin
# APT リポジトリ設定と GPG 鍵の削除
sudo rm /etc/apt/sources.list.d/apt-awscli-v2.list
sudo rm /usr/share/keyrings/apt-awscli-v2.gpg
sudo apt update
まとめ
-
apt install awscli-v2/apt upgradeだけで AWS CLI v2 の導入・更新が完結 - 新バージョンは自動追従、amd64 / arm64 両対応、GPG 署名付き
- AWS 側の運用コストは個人利用なら月額数セント程度(別途、独自ドメインの年間費用のみ)
同じように「AWS CLI v2 のインストール・更新を apt で済ませたい」と思っていた方の参考になれば嬉しいです。