ソースからの AWS CLI のビルドとインストール
このトピックでは、サポートされているオペレーティングシステムに AWS Command Line Interface (AWS CLI) の最新リリースをインストールまたは更新する方法について説明します。
AWS CLI の最新リリースについては、GitHub の「AWS CLI version 2 Changelog
重要
AWS CLI バージョン 1 と 2 では同じ aws
コマンド名が使用されます。AWS CLI バージョン 1 を以前にインストールしている場合については、「AWS CLI バージョン 2 の移行ガイド」を参照してください。
トピック
ソースからビルドする理由
AWS CLI は、Docker イメージだけでなく、ほとんどのプラットフォームと環境用のビルド済みインストーラーとしても利用できます。
通常、これらのインストーラーはほとんどのユースケースに対応しています。ソースからインストールする手順は、インストーラーがカバーしていないユースケースに役立てるためのものです。ユースケースには次のようなものがあります。
-
ビルド済みインストーラーは、使用中の環境をサポートしていません。例えば、ARM 32 ビット版はビルド済みインストーラーではサポートされていません。
-
ビルド済みインストーラーには、使用中の環境にはない依存関係があります。例えば、Alpine Linux では
musl
を使用していますが、現在のインストーラーでは glibc
が必要になるため、ビルド済みインストーラーがすぐに動作しません。 -
ビルド済みインストーラーには、使用中の環境によってアクセスが制限されているリソースが必要です。例えば、セキュリティが強化されたシステムでは、共有メモリへのアクセス許可が与えられない場合があります。これはフリーズした
aws
インストーラーに必要です。 -
コードとパッケージのビルドプロセスは完全に制御されることが望ましいため、ビルド済みインストーラーは、パッケージマネージャーのメンテナンス担当者にとって障害となることがよくあります。ソースからビルドすることで、ディストリビューションのメンテナンス担当者は AWS CLI を更新し続けるためのプロセスをより合理化できます。メンテナンス担当者は、
brew
、yum
、apt
などのサードパーティーのパッケージマネージャーからインストールする際に、AWS CLI のより最新のバージョンをお客様に提供できるようになります。 -
AWS CLI の機能をパッチするお客様は、ソースから AWS CLI をビルドしてインストールする必要があります。これは、AWS CLI GitHub リポジトリに変更を投稿する前に、ソースに加えた変更をテストすることを望むコミュニティメンバーにとって特に重要です。
クイックステップ
注記
すべてのコード例は、ソースディレクトリのルートから実行されることを前提としています。
ソースから AWS CLI をビルドしてインストールするには、このセクションの手順に従ってください。AWS CLI は、GNU Autotools
-
環境のすべての要件を設定します。これには、GNU Autotools
が生成したファイルを実行できること、Python 3.8 以降がインストールされていることが含まれます。 -
ターミナルで、AWS CLI ソースフォルダの最上位レベルに移動し、
./configure
コマンドを実行します。このコマンドは、必要とされるすべての依存関係についてシステムをチェックし、検出され指定された構成に基づいて、AWS CLI をビルドおよびインストールするためのMakefile
を生成します。詳細、使用可能な構成オプション、およびデフォルト設定情報については、「ステップ 2: AWS CLI ソースインストールの構成 」セクションを参照してください。
-
make
コマンドを実行します。このコマンドは、ご使用の構成設定に従って AWS CLI をビルドします。次の
make
コマンド例は、既存の./configure
設定を使用してデフォルトオプションでビルドされます。詳細と使用可能なビルドオプションについては、「ステップ 3: AWS CLI の構築」セクションを参照してください。
-
make install
コマンドを実行します。このコマンドは、ビルドされた AWS CLI をご使用のシステム上で構成された場所にインストールします。次の
make install
コマンド例では、デフォルトのコマンド設定を使用して、ビルドされた AWS CLI をインストールし、構成された場所にシンボリックリンクを作成します。詳細と使用可能なインストールオプションについては、「ステップ 4: AWS CLI のインストール」セクションを参照してください。
-
次のコマンドを使用して、AWS CLI が正常にインストールされたことを確認します。
$
aws --version
aws-cli/2.19.1 Python/3.11.6 Windows/10 exe/AMD64 prompt/off
インストールエラーのトラブルシューティングの手順については、「AWS CLI のインストールエラーとアンインストールエラーのトラブルシューティング」セクションを参照してください。
ステップ 1: すべての要件の設定
ソースから AWS CLI をビルドするには、事前に以下を完了しておく必要があります。
注記
すべてのコード例は、ソースディレクトリのルートから実行されることを前提としています。
AWS CLI GitHub リポジトリをフォークするか、ソースの tarball をダウンロードして、AWS CLI ソースをダウンロードします。手順は、以下のいずれかです。
-
GitHub から AWS CLI リポジトリ
のクローンをフォークして作成します。詳細については、「GitHub Docs」の「Fork a repo 」(レポジトリのフォーク) を参照してください。 -
https://awscli.amazonaws.com/awscli.tar.gz
から最新のソースの tarball をダウンロードし、次のコマンドを使用してコンテンツを解凍します。 $
curl -o awscli.tar.gz https://awscli.amazonaws.com/awscli.tar.gz
$
tar -xzf awscli.tar.gz
注記
特定のバージョンをダウンロードするには、次のリンク形式を使用してください。https://awscli.amazonaws.com/awscli-
versionnumber
.tar.gzたとえば、バージョン 2.10.0 の場合、リンクは次のようになります。https://awscli.amazonaws.com/awscli-
2.10.0
.tar.gzソースバージョンは、AWS CLI の 2.10.0 のバージョン以降で使用できます。
(オプション) 以下の手順を完了してダウンロードした zip ファイルの整合性を確認する
-
GnuPG
ツールを使用してこの署名を検証するには、次のステップを行います。AWS CLI インストーラパッケージの
.zip
ファイルは、PGP 署名を使用して暗号化で署名されます。ファイルの破損や変更がある場合、この検証は失敗します。その場合、インストールを続行しないでください。 -
ご利用のパッケージマネージャーを使用し、
gpg
コマンドをダウンロードしてインストールします。GnuPG
の詳細については、GnuPG のウェブサイトを参照してください。 -
パブリックキーファイルを作成するには、テキストファイルを作成し、次のテキストに貼り付けます。
-----BEGIN PGP PUBLIC KEY BLOCK----- mQINBF2Cr7UBEADJZHcgusOJl7ENSyumXh85z0TRV0xJorM2B/JL0kHOyigQluUG ZMLhENaG0bYatdrKP+3H91lvK050pXwnO/R7fB/FSTouki4ciIx5OuLlnJZIxSzx PqGl0mkxImLNbGWoi6Lto0LYxqHN2iQtzlwTVmq9733zd3XfcXrZ3+LblHAgEt5G TfNxEKJ8soPLyWmwDH6HWCnjZ/aIQRBTIQ05uVeEoYxSh6wOai7ss/KveoSNBbYz gbdzoqI2Y8cgH2nbfgp3DSasaLZEdCSsIsK1u05CinE7k2qZ7KgKAUIcT/cR/grk C6VwsnDU0OUCideXcQ8WeHutqvgZH1JgKDbznoIzeQHJD238GEu+eKhRHcz8/jeG 94zkcgJOz3KbZGYMiTh277Fvj9zzvZsbMBCedV1BTg3TqgvdX4bdkhf5cH+7NtWO lrFj6UwAsGukBTAOxC0l/dnSmZhJ7Z1KmEWilro/gOrjtOxqRQutlIqG22TaqoPG fYVN+en3Zwbt97kcgZDwqbuykNt64oZWc4XKCa3mprEGC3IbJTBFqglXmZ7l9ywG EEUJYOlb2XrSuPWml39beWdKM8kzr1OjnlOm6+lpTRCBfo0wa9F8YZRhHPAkwKkX XDeOGpWRj4ohOx0d2GWkyV5xyN14p2tQOCdOODmz80yUTgRpPVQUtOEhXQARAQAB tCFBV1MgQ0xJIFRlYW0gPGF3cy1jbGlAYW1hem9uLmNvbT6JAlQEEwEIAD4WIQT7 Xbd/1cEYuAURraimMQrMRnJHXAUCXYKvtQIbAwUJB4TOAAULCQgHAgYVCgkICwIE FgIDAQIeAQIXgAAKCRCmMQrMRnJHXJIXEAChLUIkg80uPUkGjE3jejvQSA1aWuAM yzy6fdpdlRUz6M6nmsUhOExjVIvibEJpzK5mhuSZ4lb0vJ2ZUPgCv4zs2nBd7BGJ MxKiWgBReGvTdqZ0SzyYH4PYCJSE732x/Fw9hfnh1dMTXNcrQXzwOmmFNNegG0Ox au+VnpcR5Kz3smiTrIwZbRudo1ijhCYPQ7t5CMp9kjC6bObvy1hSIg2xNbMAN/Do ikebAl36uA6Y/Uczjj3GxZW4ZWeFirMidKbtqvUz2y0UFszobjiBSqZZHCreC34B hw9bFNpuWC/0SrXgohdsc6vK50pDGdV5kM2qo9tMQ/izsAwTh/d/GzZv8H4lV9eO tEis+EpR497PaxKKh9tJf0N6Q1YLRHof5xePZtOIlS3gfvsH5hXA3HJ9yIxb8T0H QYmVr3aIUes20i6meI3fuV36VFupwfrTKaL7VXnsrK2fq5cRvyJLNzXucg0WAjPF RrAGLzY7nP1xeg1a0aeP+pdsqjqlPJom8OCWc1+6DWbg0jsC74WoesAqgBItODMB rsal1y/q+bPzpsnWjzHV8+1/EtZmSc8ZUGSJOPkfC7hObnfkl18h+1QtKTjZme4d H17gsBJr+opwJw/Zio2LMjQBOqlm3K1A4zFTh7wBC7He6KPQea1p2XAMgtvATtNe YLZATHZKTJyiqA== =vYOk -----END PGP PUBLIC KEY BLOCK-----
参考までに、パブリックキーの詳細を以下に示します。
Key ID: A6310ACC4672 Type: RSA Size: 4096/4096 Created: 2019-09-18 Expires: 2023-09-17 User ID: AWS CLI Team <aws-cli@amazon.com> Key fingerprint: FB5D B77F D5C1 18B8 0511 ADA8 A631 0ACC 4672 475C
-
次のコマンドで AWS CLI パブリックキーをインポートします。
public-key-file-name
は、作成したパブリックキーのファイル名に置き換えます。$
gpg --import
public-key-file-name
gpg: /home/
username
/.gnupg/trustdb.gpg: trustdb created gpg: key A6310ACC4672475C: public key "AWS CLI Team <aws-cli@amazon.com>" imported gpg: Total number processed: 1 gpg: imported: 1 -
ダウンロードしたパッケージの AWS CLI 署名ファイルを https://awscli.amazonaws.com/awscli.tar.gz.sig
でダウンロードします。これは、対応する tarball ファイルと同じパスと名前を持っていますが、拡張子は .sig
です。tarball ファイルと同じパスに保存します。または、次のコマンドブロックを使用します。$
curl -o awscliv2.sig https://awscli.amazonaws.com/awscli.tar.gz.sig
-
署名を検証し、
.sig
ファイル名と.zip
ファイル名の両方をパラメータとしてgpg
コマンドに渡します。$
gpg --verify awscliv2.sig awscli.tar.gz
出力は以下の例のようになります。
gpg: Signature made Mon Nov 4 19:00:01 2019 PST gpg: using RSA key FB5D B77F D5C1 18B8 0511 ADA8 A631 0ACC 4672 475C gpg: Good signature from "AWS CLI Team <aws-cli@amazon.com>" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: FB5D B77F D5C1 18B8 0511 ADA8 A631 0ACC 4672 475C
重要
出力内の警告は予想されており、問題を示すものではありません。これは、個人用の PGP キー (持っている場合) と AWS CLI PGP キーの間に信頼チェーンがないために表示されます。詳細については、「信用の輪 (Web of Trust)
」を参照してください。
-
-
-
configure
やMakefile
などの GNU Autotoolsで生成されたファイルを実行できる環境があります。これらのファイルは POSIX プラットフォーム間で幅広く移植可能です。 -
Python 3.8 以降のインタープリタがインストールされています。必要な Python の最低バージョンは、公式の「AWS SDK とツール用の Python サポートポリシー
」と同じタイムラインに従います。インタープリタは、サポート終了日から 6 か月間のみサポートされます。 -
(オプション) AWS CLI のビルドとランタイム Python ライブラリの依存関係をすべてインストールします。
./configure
コマンドは、不足している依存関係がないかどうか、また、そのインストール方法について通知します。これらの依存関係は、構成で自動的にインストールして使用できます。詳細については、「依存関係のダウンロード」を参照してください。
ステップ 2: AWS CLI ソースインストールの構成
AWS CLI をビルドおよびインストールするための構成は、configure
スクリプトを使用して指定されます。すべての構成オプションを文書化するには、--help
オプションを使用して configure
スクリプトを実行します。
最も重要なオプションは次のとおりです。
インストール場所
AWS CLI のソースインストールでは、次の 2 つの構成可能なディレクトリを使用して AWS CLI をインストールします。
-
libdir
- AWS CLI をインストールする親ディレクトリ。AWS CLI インストールへのパスは
です。Linux と macOS のデフォルト<libdir-value>
/aws-clilibdir
値は/usr/local/lib
で、デフォルトのインストールディレクトリを
にします/usr/local/lib
/aws-cli -
bindir
- AWS CLI 実行ファイルがインストールされているディレクトリ。デフォルトの場所は/usr/local/bin
です。
以下の configure
オプションは使用するディレクトリを制御します。
-
--prefix
- インストールに使用するディレクトリプレフィックスを設定します。Linux と macOS のデフォルト値は/usr/local
です。 -
--libdir
- AWS CLI のインストールに使用するlibdir
を設定します。デフォルト値は<prefix-value>/lib
です。--libdir
と--prefix
が両方とも指定されていない場合、Linux と macOS のデフォルトは/usr/local/lib/
です。 -
--bindir
- AWS CLIaws
、およびaws_completer
実行ファイルのインストールに使用するbindir
を設定します。デフォルト値は<prefix-value>/bin
です。bindir
と--prefix
が両方とも指定されていない場合、Linux と macOS のデフォルトは/usr/local/bin/
です。
Python インタープリタ
注記
Windows にインストールする場合は、Python インタープリタを指定することを強くお勧めします。
./configure
スクリプトは、インストールされている Python 3.8 以降のインタープリタを自動的に選択し、AM_PATH_PYTHON
使用する Python インタープリタは、configure
スクリプトの実行時に PYTHON
環境変数を使用して明示的に設定できます。
依存関係のダウンロード
デフォルトでは、AWS CLI のすべてのビルドとランタイムの依存関係がシステムに既にインストールされている必要があります。これには Python ライブラリの依存関係も含まれます。configure
スクリプトの実行時にすべての依存関係がチェックされ、システムに Python の依存関係がない場合、configure
スクリプトはエラーになります。
次のコード例は、システムに依存関係がない場合にエラーになります。
必要な Python 依存関係を自動的にインストールするには、--with-download-deps
オプションを使用してください。このフラグを使用すると、ビルドプロセスは次の処理を行います。
-
Python ライブラリの依存関係チェックをスキップします。
-
必要な Python の依存関係をすべてダウンロードし、ダウンロードした依存関係だけを使用して、
make
ビルド中に AWS CLI をビルドするように構成します。
以下の configure コマンドの例では、--with-download-deps
オプションを使用して Python の依存関係をダウンロードおよび使用しています。
インストールタイプ
ソースインストールのプロセスでは、次のインストールタイプがサポートされます。
-
system-sandbox
- (デフォルト) 隔離された Python 仮想環境を作成し、AWS CLI を仮想環境にインストールし、仮想環境内のaws
およびaws_completer
実行ファイルへのシンボリックリンクを作成します。この AWS CLI のインストールは、ランタイム用に選択した Python インタープリタに直接依存します。これは、AWS CLI をシステムにインストールするための軽量なインストールメカニズムで、Python のベストプラクティスに従い、仮想環境でインストールをサンドボックス化します。このインストールは、Python のインストールと連動して、可能な限りスムーズな方法でソースから AWS CLI をインストールすることを希望するお客様を対象としています。
-
portable-exe
- AWS CLI をフリーズして、同様のアーキテクチャの環境に配布できるスタンドアロンの実行ファイルにします。これは、AWS CLI の公式ビルド済み実行ファイルを生成するのと同じプロセスです。portable-exe
は、AWS CLI のランタイムに使用するconfigure
ステップで選択した Python インタープリタのコピーをフリーズします。これにより、Python インタープリタがない他のマシンに移動させることができます。このタイプのビルドは、AWS CLI インストールと、環境にインストールされた Python バージョンが連動していないことを確認でき、Python がまだインストールされていない他のシステムにビルドを配布できるので便利です。これにより、使用する AWS CLI 実行ファイルの依存関係とセキュリティを制御できます。
インストールタイプを構成するには、--with-install-type
オプションを使用して portable-exe
または system-sandbox
の値を指定します。
次の ./configure
コマンド例は、portable-exe
の値を指定します。
ステップ 3: AWS CLI の構築
make
コマンドを使用して、ご使用の構成設定を使用して AWS CLI をビルドします。
注記
make
コマンドを使用すると、次の手順がバックグラウンドで完了します。
-
仮想環境は、Python
venv
モジュールを使用してビルドディレクトリに作成されます。仮想環境は、Python 標準ライブラリにベンダリングされているバージョンの pip でブートストラップされます。 -
Python ライブラリの依存関係をコピーします。
configure
コマンドで--with-download-deps
フラグが指定されているかどうかに応じて、このステップは次のいずれかを実行します。-
--with-download-deps
は指定されます。Python の依存関係は pip でインストールされます。これには、wheel
、setuptools
、およびすべての AWS CLI ランタイム依存関係が含まれます。portable-exe
をビルドしている場合は、pyinstaller
がインストールされます。これらの要件はすべて、pip-compile
から生成されるロックファイルで指定されています。 -
--with-download-deps
は指定されません。Python インタープリタのサイトパッケージの Python ライブラリとスクリプト (例:pyinstaller
) は、ビルドに使用されている仮想環境にコピーされます。
-
-
AWS CLI コードベース上で
pip install
を直接実行して、オフラインでツリー内ビルドを行い、ビルド仮想環境に AWS CLI をインストールします。このインストールでは、pip フラグ --no-build-isolation、--use-feature=in-tree-build 、--no-cache-dir 、および --no-index
を使用します。 -
(オプション)
configure
コマンドで--install-type
がportable-exe
に設定されている場合、pyinstaller
を使用してスタンドアロン実行ファイルをビルドします。
ステップ 4: AWS CLI のインストール
make install
コマンドは、ビルドされた AWS CLI をシステム上で構成された場所にインストールします。
make install
ルールは DESTDIR
注記
make install
コマンドを実行すると、次の手順がバックグラウンドで完了します。
-
次のいずれかを構成済みのインストールディレクトリに移動します。
-
インストールタイプが
system-sandbox
の場合、ビルドした仮想環境を移動します。 -
インストールタイプが
portable-exe
の場合、ビルドしたスタンドアロン実行ファイルを移動します。
-
-
構成した bin ディレクトリで、
aws
およびaws_completer
実行ファイルの両方にシンボリックリンクを作成します。
ステップ 5: インストールの検証
次のコマンドを使用して、AWS CLI が正常にインストールされたことを確認します。
$
aws --version
aws-cli/2.19.1 Python/3.11.6 Windows/10 exe/AMD64 prompt/off
aws
コマンドが認識されない場合は、新しいシンボリックリンクを更新するために、ターミナルの再起動が必要になる場合があります。AWS CLI のインストールまたはアンインストール後に、さらに問題が発生した場合の一般的なトラブルシューティングの手順については、「AWS CLI のエラーのトラブルシューティング」を参照してください
ワークフローの例
このセクションでは、ソースからインストールするための基本的なワークフローの例をいくつか紹介します。
Linux および macOS の基本的なインストール
次の例は、AWS CLI を /usr/local/lib/aws-cli
のデフォルトの場所にインストールする基本的なインストールワークフローです。
$
cd
path/to/cli/respository/
$
./configure
$
make
$
make install
Windows 自動インストール
注記
このワークフローを使用するには、管理者として PowerShell を実行している必要があります。
MSYS2 は、CI 環境で自動化された方法で使用できます。MSYS2 ドキュメントの「Using MSYS2 in CI
Alpine Linux コンテナ
以下は、Alpine 用のビルド済みバイナリの代わりAWSCLI_VERSION
を目的の AWS CLI バージョン番号に置き換えてください。
FROM python:3.8-alpine AS builder ENV AWSCLI_VERSION=2.10.1 RUN apk add --no-cache \ curl \ make \ cmake \ gcc \ g++ \ libc-dev \ libffi-dev \ openssl-dev \ && curl https://awscli.amazonaws.com/awscli-${AWSCLI_VERSION}.tar.gz | tar -xz \ && cd awscli-${AWSCLI_VERSION} \ && ./configure --prefix=/opt/aws-cli/ --with-download-deps \ && make \ && make install FROM python:3.8-alpine RUN apk --no-cache add groff COPY --from=builder /opt/aws-cli/ /opt/aws-cli/ ENTRYPOINT ["/opt/aws-cli/bin/aws"]
このイメージは、Amazon Linux 2 でビルドされたものと同様のコンテナからビルドされ、AWS CLI で呼び出されます。
$
docker build --tag awscli-alpine .
$
docker run --rm -it awscli-alpine --version
aws-cli/2.2.1 Python/3.8.11 Linux/5.10.25-linuxkit source-sandbox/x86_64.alpine.3 prompt/off
このイメージの最終的なサイズは、公式の AWS CLI Docker イメージ以下のサイズです。公式の Docker イメージについては、「AWS CLI に対して公式の Amazon ECR Public イメージまたは Docker イメージを実行する」を参照してください。
AWS CLI のインストールエラーとアンインストールエラーのトラブルシューティング
インストールエラーのトラブルシューティング手順については、一般的なトラブルシューティング手順を「AWS CLI のエラーのトラブルシューティング」で参照してください。最も関連性の高いトラブルシューティングステップについては、「コマンドが見つからないエラー」、「「aws --version」コマンドが、インストールしたのとは異なるバージョンを返す」、および「AWS CLI のアンインストール後に、「aws --version」コマンドがバージョンを返す」を参照してください。
トラブルシューティングガイドに記載されていない問題については、GitHub の AWS CLI リポジトリsource-distribution
ラベルの付いた問題を検索してください。既存の問題にエラーが取り上げられていない場合は、新しい問題を作成
次のステップ
AWS CLI のインストール後に、AWS CLI の設定 を実行してください。